From 9ef244cb2fa6c30f789d05a006ea16a495a545bb Mon Sep 17 00:00:00 2001 From: akshatt Date: Thu, 29 Jan 2026 17:19:28 +0530 Subject: [PATCH] added detailed banner for rankmath --- frontend/build/addons.asset.php | 2 +- frontend/build/addons.js | 2 +- frontend/build/index.asset.php | 2 +- frontend/build/index.js | 2 +- frontend/build/index.js.map | 2 +- frontend/src/components/ProductDetailRankMath.jsx | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/build/addons.asset.php b/frontend/build/addons.asset.php index 4e37179..39c1911 100644 --- a/frontend/build/addons.asset.php +++ b/frontend/build/addons.asset.php @@ -1 +1 @@ - array('react', 'react-dom'), 'version' => '69dcfb984d6e98939d22'); + array('react', 'react-dom'), 'version' => 'a6844912108f363170bc'); diff --git a/frontend/build/addons.js b/frontend/build/addons.js index 26af25a..4a298db 100644 --- a/frontend/build/addons.js +++ b/frontend/build/addons.js @@ -1,2 +1,2 @@ -(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class L{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const P=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=P(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(P(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new L(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3699:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r(7979),o=r(488),s=r(4598),a=r(9962),c=r(4677),l=r(4800),u=(r(6530),r(1755)),p=r(1174),h=r(7008),d=r(3220);function f(){const{apiBaseUrl:e,assetsBaseUrl:t,pluginInAction:r,setPluginInAction:f,subscriptionStatus:g,fetchSubscriptionStatus:m,isOnecomBrand:v,plugins:y,setPlugins:b,uiI18n:_,setUiI18n:w,handlePluginAction:k,catalogError:S,setCatalogError:x,catalogLoading:C,setCatalogLoading:E,shouldShowProvision:I,isSpecialPlugin:O,shouldShowPlugin:N,isWpVersionSupported:A}=(0,i.D)(),[R,M]=(0,n.useState)(null),[T,L]=(0,n.useState)([]),[P,D]=(0,n.useState)(null),F=(0,n.useRef)(null),U=(0,n.useRef)(!1),j=(0,n.useRef)(!1),B=((0,n.useRef)(null),(0,n.useRef)(null)),$=(0,n.useRef)(null),z=(0,n.useRef)(!1),q=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",V=q?`${q}assets/icons/`:"",W="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null;if((0,n.useEffect)(()=>{U.current||(U.current=!0,E(!0),x(null),fetch(e).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return B.current=Date.now(),e.json()}).then(e=>{if((e.is_cached||e.cached)&&(z.current=!0),!(e.success&&e.data&&e.data.catalog))throw(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),new Error("Invalid API response structure");{const t=e.data.catalog;b(t);const r=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,n=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,i=t.filter(e=>!!N(e)&&!0!==e.activated&&(!0===e.featured||"true"===e.featured)&&("seo-by-rank-math"===e.slug?!r&&!n:"seo-by-rank-math-pro"!==e.slug||r)).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)).slice(0,3);L(i);const o=e.data.uiI18n||e.data.ui_i18n;o&&w(o),v&&t.filter(e=>O(e.slug)).forEach(e=>{m(e.slug)})}}).catch(e=>{console.error("Failed to fetch plugins:",e),(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),x(e.message||"Failed to load plugins")}).finally(()=>{E(!1)}))},[e,b,w,x,E,N]),(0,n.useEffect)(()=>{if(W&&y.length){const e=y.find(e=>e.slug===W);e&&M(e)}else W||M(null)},[W,y]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(y.length){const t=y.find(t=>t.slug===e);t&&M(t)}}else M(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[y]),(0,n.useEffect)(()=>{const e=e=>{F.current&&!F.current.contains(e.target)&&D(null)};return null!==P?document.addEventListener("mousedown",e):document.removeEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[P]),(0,n.useEffect)(()=>{C||S||!(y.length>0)||W||j.current||($.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,h.oe)({category:"addons_page",itemName:"Addons Page",contentReceivedAt:B.current,contentRenderedAt:$.current,isCached:z.current}),j.current=!0)},[C,S,y.length,W]),C)return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-fluid",style:{width:"33%"}}),(0,n.createElement)("div",{className:"gv-flex gv-justify-between gv-items-start"},(0,n.createElement)("div",{className:"gv-w-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-sm gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"33%"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"13%"}})),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-skeleton-loader"},[0,1,2].map(e=>(0,n.createElement)("div",{key:e,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-xs",style:{height:"20px",width:"70%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{height:"16px",width:"100%"}}),(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"40%"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"24px",width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-overflow-x-auto gv-skeleton-loader"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,[0,1].map(e=>(0,n.createElement)("tr",{key:e},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"24px"}}))))))));if(S)return(0,n.createElement)(u.A,null);if(!A("6.2"))return(0,n.createElement)(p.A,null);const H=y.filter(e=>e.installed||I(e));return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col"},(0,n.createElement)("div",{className:"addons-header-wrap"},(0,n.createElement)("h3",null,_?.headings?.myProducts),(0,n.createElement)("p",{className:"gv-text-sm"},_?.text?.myProducts)),T.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"addons-header-container gv-flex gv-max-mob-flex-col gv-justify-between gv-items-start gv-tab-gap-lg"},(0,n.createElement)("div",{className:"heading-container gv-flex-1"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},_?.headings?.recommendedProducts),(0,n.createElement)("p",{className:"gv-text-sm gv-mb-md"},_?.text?.recommendedText)),(0,n.createElement)("button",{className:"gv-button gv-button-primary gv-mode-condensed gv-flex-shrink-0",onClick:()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/";window.location.href=`${e}admin.php?page=onecom-marketplace`}},_.seeAllProducts,(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}arrow_right.svg`,alt:"See all products"}))),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},T.map(e=>{I(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:_?.labels?.free||"Free",r=(0,o.M)(e,t,_),i=(0,o.Tc)(e),s=(0,o.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-sm gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius ocmp-plugin-cards",onClick:()=>{var t;window.location.href=(t=e.slug,`${"undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/"}admin.php?page=onecom-marketplace&plugin=${t}`)}},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-2 gv-tab-span-2"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${V}add_box.svg`,alt:e.name})),(0,n.createElement)("div",{className:"gv-desk-span-9 gv-tab-span-9 gv-span-9 gv-ml-sm"},(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-justify-between gv-h-full"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm gv-flex-1"},e.i18n.listingDescription||e.i18n.subtitle),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&s>0?null!==s?s:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(_?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",_?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-span-1 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`},(0,n.createElement)("img",{className:"gv-tile",src:`${V}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))))}))),H.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-addons-table"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},_?.labels?.name),(0,n.createElement)("th",{scope:"col"},_?.labels?.type),(0,n.createElement)("th",{scope:"col"},_?.labels?.status),(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,H.map((e,t)=>{const r=I(e);return(0,n.createElement)("tr",{id:e.slug,key:e.slug},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("img",{src:e.iconUrl||`${V}add_box.svg`,alt:e.name,className:"gv-icon-tile",style:{maxWidth:"auto"}})),(0,n.createElement)("td",null,e.name),(0,n.createElement)("td",null,"free"===e.licenseType?_?.labels?.freePlugin:_?.labels?.premiumPlugin),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-text-indicator"},(0,n.createElement)("span",{className:e.activated?"gv-indicator gv-state-positive":"gv-indicator gv-state-informative"}),(0,n.createElement)("span",null," ",e.activated?_?.labels?.active||"Active":r?_?.labels?.notInstalled||"Not Installed":_?.labels?.notActive||"Not Active"))),(0,n.createElement)("td",null,r?(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault();const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(r)}},_?.installAndActivate||"Install and activate"):!e.activated&&(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault(),k("activate",e,"addons")}},_?.activateButton||"Activate")),(0,n.createElement)("td",null,(e.activated||e.installed&&!r)&&(0,n.createElement)("div",{className:"gv-pos-relative",ref:P===t?F:null},(0,n.createElement)("button",{type:"button","aria-label":"Toggle menu",className:"gv-reset-button",onClick:()=>D(P===t?null:t)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}more_horiz.svg`})),(0,n.createElement)("div",{className:"gv-contextual-menu gv-pos-right "+(P===t?"":"gv-invisible")},(0,n.createElement)("div",{className:"gv-menu"},(0,n.createElement)("button",{type:"button",className:"gv-btn-close","aria-label":"Close",onClick:()=>D(null)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}close.svg`})),(0,n.createElement)("ul",null,e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),(e=>{"undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status&&(0,h.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,d.v)(e,!1);(0,d.J)(t)})(e)}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}settings.svg`}),(0,n.createElement)("span",null,_?.labels?.manage||"Manage"))),e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("deactivate",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deactivate||"Deactivate"))),(0,n.createElement)("li",{className:"gv-mb-0"},!e.activated&&e.installed&&(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("delete",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deleteButton||"Delete")))))))))}))))),(0,n.createElement)(c.A,null),(0,n.createElement)(l.A,null),R&&!W&&(()=>{const e=(t=R)&&"seo-by-rank-math"===t.slug?a.A:s.A;var t;return(0,n.createElement)(e,{plugin:R,onClose:()=>M(null),loading:C})})())}},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),L=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},P=L(e.i18n,"keyBenefitContent"),D=L(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=P,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4800:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,successState:r,setSuccessState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="delete"===r.type,m=(e,t)=>e?e.replace("{0}",t||""):"",v=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-success gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/check_circle.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&m(s?.notifications?.pluginActivatedShort||"Plugin activated.",v),f&&m(s?.notifications?.pluginDeactivated||"Plugin deactivated.",v),g&&m(s?.notifications?.pluginDeleted||"Plugin deleted successfully.",v)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5795:e=>{"use strict";e.exports=window.ReactDOM},6255:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(3699),o=r(3526),s=r(7979);const a=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c})=>(0,n.createElement)(s.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c},(0,n.createElement)(o.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)(i.A,null))))},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var L=function(e){return T("Node",e,"childNodes")},P=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(P(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(P(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!L(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,L=function(){R.removeEventListener("load",L);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L)}if("audio"===y||"video"===y){var P=b;P.rr_mediaState=e.paused?"paused":"played",P.rr_mediaCurrentTime=e.currentTime,P.rr_mediaPlaybackRate=e.playbackRate,P.rr_mediaMuted=e.muted,P.rr_mediaLoop=e.loop,P.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=P(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(L(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(L(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=P(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Le=Te;Te.default=Te;var Pe=Le;function De(e,t){new Pe(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Le,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Lt=Re.isClean,Pt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Lt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Pt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Lr=Ge,Pr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Pr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Lr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Pi(e),Ti(e))return this.mapFile=e,Li(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Pi(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Lo=To;To.default=To;var Po="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Po&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Po:case Do:i=r===Po?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,L=e.recordCanvas,P=void 0!==L&&L,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:P,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:P,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:P,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:P,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Ll(e){return"[object Object]"===Object.prototype.toString.call(e)}function Pl(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Ll(e[i])&&Pl(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Ll(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Ll(s)&&Pl(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Lu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Lu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Lu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Lu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Lp=Du("recorder"),Pp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Lp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Pp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Lp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Lp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Lp.log("Recording already in progress, skipping startRecording.")},Pp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Pp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Pp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Pp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Lp.log("No resumable recording found."),null)}.bind(this))},Pp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Pp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Pp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Pp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Lu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Lu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Lu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Lu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Ld="$device:",Pd=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Pd&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Lu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Pd){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Lu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Lu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ld+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Lu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Lu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Lu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Pd)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Pd||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Pd||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Pd)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Lu.log("MIXPANEL REQUEST:"),Lu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Ld))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Ld+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Lu.error.apply(Lu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Lu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{Mh:()=>p,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[L,P]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:L,setCatalogLoading:P,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",T=w?.name||e.name||"Product",L=w?.i18n?.description||w?.i18n?.subtitle,P=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},L)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,P)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(6255),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-addons-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); +(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class L{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const P=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=P(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(P(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new L(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3699:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r(7979),o=r(488),s=r(4598),a=r(9962),c=r(4677),l=r(4800),u=(r(6530),r(1755)),p=r(1174),h=r(7008),d=r(3220);function f(){const{apiBaseUrl:e,assetsBaseUrl:t,pluginInAction:r,setPluginInAction:f,subscriptionStatus:g,fetchSubscriptionStatus:m,isOnecomBrand:v,plugins:y,setPlugins:b,uiI18n:_,setUiI18n:w,handlePluginAction:k,catalogError:S,setCatalogError:x,catalogLoading:C,setCatalogLoading:E,shouldShowProvision:I,isSpecialPlugin:O,shouldShowPlugin:N,isWpVersionSupported:A}=(0,i.D)(),[R,M]=(0,n.useState)(null),[T,L]=(0,n.useState)([]),[P,D]=(0,n.useState)(null),F=(0,n.useRef)(null),U=(0,n.useRef)(!1),j=(0,n.useRef)(!1),B=((0,n.useRef)(null),(0,n.useRef)(null)),$=(0,n.useRef)(null),z=(0,n.useRef)(!1),q=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",V=q?`${q}assets/icons/`:"",W="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null;if((0,n.useEffect)(()=>{U.current||(U.current=!0,E(!0),x(null),fetch(e).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return B.current=Date.now(),e.json()}).then(e=>{if((e.is_cached||e.cached)&&(z.current=!0),!(e.success&&e.data&&e.data.catalog))throw(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),new Error("Invalid API response structure");{const t=e.data.catalog;b(t);const r=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,n=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,i=t.filter(e=>!!N(e)&&!0!==e.activated&&(!0===e.featured||"true"===e.featured)&&("seo-by-rank-math"===e.slug?!r&&!n:"seo-by-rank-math-pro"!==e.slug||r)).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)).slice(0,3);L(i);const o=e.data.uiI18n||e.data.ui_i18n;o&&w(o),v&&t.filter(e=>O(e.slug)).forEach(e=>{m(e.slug)})}}).catch(e=>{console.error("Failed to fetch plugins:",e),(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),x(e.message||"Failed to load plugins")}).finally(()=>{E(!1)}))},[e,b,w,x,E,N]),(0,n.useEffect)(()=>{if(W&&y.length){const e=y.find(e=>e.slug===W);e&&M(e)}else W||M(null)},[W,y]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(y.length){const t=y.find(t=>t.slug===e);t&&M(t)}}else M(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[y]),(0,n.useEffect)(()=>{const e=e=>{F.current&&!F.current.contains(e.target)&&D(null)};return null!==P?document.addEventListener("mousedown",e):document.removeEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[P]),(0,n.useEffect)(()=>{C||S||!(y.length>0)||W||j.current||($.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,h.oe)({category:"addons_page",itemName:"Addons Page",contentReceivedAt:B.current,contentRenderedAt:$.current,isCached:z.current}),j.current=!0)},[C,S,y.length,W]),C)return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-fluid",style:{width:"33%"}}),(0,n.createElement)("div",{className:"gv-flex gv-justify-between gv-items-start"},(0,n.createElement)("div",{className:"gv-w-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-sm gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"33%"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"13%"}})),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-skeleton-loader"},[0,1,2].map(e=>(0,n.createElement)("div",{key:e,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-xs",style:{height:"20px",width:"70%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{height:"16px",width:"100%"}}),(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"40%"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"24px",width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-overflow-x-auto gv-skeleton-loader"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,[0,1].map(e=>(0,n.createElement)("tr",{key:e},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"24px"}}))))))));if(S)return(0,n.createElement)(u.A,null);if(!A("6.2"))return(0,n.createElement)(p.A,null);const H=y.filter(e=>e.installed||I(e));return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col"},(0,n.createElement)("div",{className:"addons-header-wrap"},(0,n.createElement)("h3",null,_?.headings?.myProducts),(0,n.createElement)("p",{className:"gv-text-sm"},_?.text?.myProducts)),T.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"addons-header-container gv-flex gv-max-mob-flex-col gv-justify-between gv-items-start gv-tab-gap-lg"},(0,n.createElement)("div",{className:"heading-container gv-flex-1"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},_?.headings?.recommendedProducts),(0,n.createElement)("p",{className:"gv-text-sm gv-mb-md"},_?.text?.recommendedText)),(0,n.createElement)("button",{className:"gv-button gv-button-primary gv-mode-condensed gv-flex-shrink-0",onClick:()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/";window.location.href=`${e}admin.php?page=onecom-marketplace`}},_.seeAllProducts,(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}arrow_right.svg`,alt:"See all products"}))),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},T.map(e=>{I(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:_?.labels?.free||"Free",r=(0,o.M)(e,t,_),i=(0,o.Tc)(e),s=(0,o.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-sm gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius ocmp-plugin-cards",onClick:()=>{var t;window.location.href=(t=e.slug,`${"undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/"}admin.php?page=onecom-marketplace&plugin=${t}`)}},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-2 gv-tab-span-2"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${V}add_box.svg`,alt:e.name})),(0,n.createElement)("div",{className:"gv-desk-span-9 gv-tab-span-9 gv-span-9 gv-ml-sm"},(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-justify-between gv-h-full"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm gv-flex-1"},e.i18n.listingDescription||e.i18n.subtitle),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&s>0?null!==s?s:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(_?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",_?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-span-1 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`},(0,n.createElement)("img",{className:"gv-tile",src:`${V}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))))}))),H.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-addons-table"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},_?.labels?.name),(0,n.createElement)("th",{scope:"col"},_?.labels?.type),(0,n.createElement)("th",{scope:"col"},_?.labels?.status),(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,H.map((e,t)=>{const r=I(e);return(0,n.createElement)("tr",{id:e.slug,key:e.slug},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("img",{src:e.iconUrl||`${V}add_box.svg`,alt:e.name,className:"gv-icon-tile",style:{maxWidth:"auto"}})),(0,n.createElement)("td",null,e.name),(0,n.createElement)("td",null,"free"===e.licenseType?_?.labels?.freePlugin:_?.labels?.premiumPlugin),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-text-indicator"},(0,n.createElement)("span",{className:e.activated?"gv-indicator gv-state-positive":"gv-indicator gv-state-informative"}),(0,n.createElement)("span",null," ",e.activated?_?.labels?.active||"Active":r?_?.labels?.notInstalled||"Not Installed":_?.labels?.notActive||"Not Active"))),(0,n.createElement)("td",null,r?(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault();const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(r)}},_?.installAndActivate||"Install and activate"):!e.activated&&(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault(),k("activate",e,"addons")}},_?.activateButton||"Activate")),(0,n.createElement)("td",null,(e.activated||e.installed&&!r)&&(0,n.createElement)("div",{className:"gv-pos-relative",ref:P===t?F:null},(0,n.createElement)("button",{type:"button","aria-label":"Toggle menu",className:"gv-reset-button",onClick:()=>D(P===t?null:t)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}more_horiz.svg`})),(0,n.createElement)("div",{className:"gv-contextual-menu gv-pos-right "+(P===t?"":"gv-invisible")},(0,n.createElement)("div",{className:"gv-menu"},(0,n.createElement)("button",{type:"button",className:"gv-btn-close","aria-label":"Close",onClick:()=>D(null)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}close.svg`})),(0,n.createElement)("ul",null,e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),(e=>{"undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status&&(0,h.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,d.v)(e,!1);(0,d.J)(t)})(e)}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}settings.svg`}),(0,n.createElement)("span",null,_?.labels?.manage||"Manage"))),e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("deactivate",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deactivate||"Deactivate"))),(0,n.createElement)("li",{className:"gv-mb-0"},!e.activated&&e.installed&&(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("delete",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deleteButton||"Delete")))))))))}))))),(0,n.createElement)(c.A,null),(0,n.createElement)(l.A,null),R&&!W&&(()=>{const e=(t=R)&&"seo-by-rank-math"===t.slug?a.A:s.A;var t;return(0,n.createElement)(e,{plugin:R,onClose:()=>M(null),loading:C})})())}},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),L=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},P=L(e.i18n,"keyBenefitContent"),D=L(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=P,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4800:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,successState:r,setSuccessState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="delete"===r.type,m=(e,t)=>e?e.replace("{0}",t||""):"",v=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-success gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/check_circle.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&m(s?.notifications?.pluginActivatedShort||"Plugin activated.",v),f&&m(s?.notifications?.pluginDeactivated||"Plugin deactivated.",v),g&&m(s?.notifications?.pluginDeleted||"Plugin deleted successfully.",v)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5795:e=>{"use strict";e.exports=window.ReactDOM},6255:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(3699),o=r(3526),s=r(7979);const a=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c})=>(0,n.createElement)(s.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c},(0,n.createElement)(o.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)(i.A,null))))},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var L=function(e){return T("Node",e,"childNodes")},P=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(P(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(P(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!L(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,L=function(){R.removeEventListener("load",L);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L)}if("audio"===y||"video"===y){var P=b;P.rr_mediaState=e.paused?"paused":"played",P.rr_mediaCurrentTime=e.currentTime,P.rr_mediaPlaybackRate=e.playbackRate,P.rr_mediaMuted=e.muted,P.rr_mediaLoop=e.loop,P.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=P(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(L(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(L(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=P(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Le=Te;Te.default=Te;var Pe=Le;function De(e,t){new Pe(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Le,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Lt=Re.isClean,Pt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Lt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Pt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Lr=Ge,Pr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Pr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Lr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Pi(e),Ti(e))return this.mapFile=e,Li(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Pi(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Lo=To;To.default=To;var Po="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Po&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Po:case Do:i=r===Po?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,L=e.recordCanvas,P=void 0!==L&&L,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:P,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:P,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:P,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:P,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Ll(e){return"[object Object]"===Object.prototype.toString.call(e)}function Pl(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Ll(e[i])&&Pl(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Ll(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Ll(s)&&Pl(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Lu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Lu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Lu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Lu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Lp=Du("recorder"),Pp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Lp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Pp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Lp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Lp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Lp.log("Recording already in progress, skipping startRecording.")},Pp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Pp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Pp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Pp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Lp.log("No resumable recording found."),null)}.bind(this))},Pp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Pp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Pp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Pp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Lu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Lu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Lu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Lu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Ld="$device:",Pd=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Pd&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Lu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Pd){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Lu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Lu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ld+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Lu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Lu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Lu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Pd)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Pd||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Pd||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Pd)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Lu.log("MIXPANEL REQUEST:"),Lu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Ld))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Ld+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Lu.error.apply(Lu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Lu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{Mh:()=>p,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[L,P]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:L,setCatalogLoading:P,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=k.detailsBannerUrl||k.bannerUrl,T=w?.name||e.name||"Product",L=w?.i18n?.description||w?.i18n?.subtitle,P=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},L)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,P)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(6255),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-addons-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); //# sourceMappingURL=addons.js.map \ No newline at end of file diff --git a/frontend/build/index.asset.php b/frontend/build/index.asset.php index c1c465e..203a2cf 100644 --- a/frontend/build/index.asset.php +++ b/frontend/build/index.asset.php @@ -1 +1 @@ - array('react', 'react-dom'), 'version' => 'b7127fd7ef547d854fec'); + array('react', 'react-dom'), 'version' => '1d1a1ff6e0edf65e4953'); diff --git a/frontend/build/index.js b/frontend/build/index.js index 360c474..175b581 100644 --- a/frontend/build/index.js +++ b/frontend/build/index.js @@ -1,2 +1,2 @@ -(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class P{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const L=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=L(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(L(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new P(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3258:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(488);function s({loading:e=!1}){const{plugins:t,assetsBaseUrl:r,uiI18n:s}=(0,i.D)(),[a,c]=(0,n.useState)(0),[l,u]=(0,n.useState)(2),p="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],h="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"";(0,n.useEffect)(()=>{const e=()=>{window.innerWidth>1024?u(2):(window.innerWidth,u(1))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const d=e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>p.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if(h!==t)return!1}return!0},f=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,g=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,m=t.filter(e=>!0!==e.activated&&!0===e.featured&&("seo-by-rank-math"===e.slug?!f&&!g&&d(e):"seo-by-rank-math-pro"===e.slug?f&&d(e):d(e))).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)),v=r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",y=v?`${v}assets/icons/`:"",b=m.length,_=Math.max(0,b-l);return e?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"200px"}})),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",gap:"1rem"}},[...Array(l)].map((e,t)=>(0,n.createElement)("div",{key:`skeleton-slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header gv-w-full",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm gv-flex gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80px",marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"90%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80%"}}),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-flex-wrap gv-items-center",style:{marginTop:"24px"}},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"100px",height:"40px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-ml-md",style:{width:"60px",height:"24px"}}))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("div",{className:"gv-card-image",style:{width:"100%",height:"100%",marginTop:"74px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"}))))))))):m&&0!==m.length?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("h5",{className:"gv-title gv-heading-sm gv-recommended-heading"},s?.headings?.recommendedHeading)),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",transition:"transform 0.3s ease-in-out",transform:`translateX(calc(-${a} * ((100% - ${l-1}rem) / ${l} + 1rem)))`,gap:"1rem"}},m.map((e,t)=>{const r=e?.i18n?.featuredTitle,i=e?.i18n?.featuredContent,a=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:s?.labels?.free||"Free",c=(0,o.M)(e,a,s),u=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",p=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null};return p.title||p.slug,(0,n.createElement)("div",{key:`slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-lg gv-text-sm gv-flex gv-flex-col gv-items-start gv-h-full gv-justify-between"},(0,n.createElement)("div",{className:"gv-badge gv-badge-info gv-flex-none"},e?.name),(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-h-full gv-justify-between"},(0,n.createElement)("div",{className:"gv-max-mob-mb-lg gv-max-tab-mb-lg",style:{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:8,overflow:"hidden",width:"100%"}},(0,n.createElement)("h5",{className:"gv-title gv-header-sm",style:{marginBottom:"8px"}},r),(0,n.createElement)("p",{className:"gv-text-sm"},i?.trim())),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-items-center"},(0,n.createElement)("button",{onClick:()=>(e=>{if("undefined"!=typeof window){const t=new URL(window.location.href);t.searchParams.set("plugin",e.slug),window.history.pushState({},"",t.toString()),window.dispatchEvent(new PopStateEvent("popstate"))}})(e),className:"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0"},s?.featuredCta),(0,n.createElement)("span",{className:"gv-price gv-text-bold gv-text-md gv-ml-md gv-flex-1"},c,"free"!==e.licenseType&&c&&c!==a&&c!==(s?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",s?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${u} 1x, ${u} 2x`}),(0,n.createElement)("img",{src:u,srcSet:`${u} 1x, ${u} 2x`,alt:`${r} image`})))))}))),b>l&&(0,n.createElement)("div",{className:"gv-carousel-nav-wrapper gv-flex gv-justify-center gv-align-center gv-mt-sm gv-gap-fluid"},(0,n.createElement)("button",{onClick:()=>{a>0&&c(e=>e-1)},disabled:0===a,className:"gv-carousel-nav gv-carousel-nav-prev",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:0===a?"not-allowed":"pointer",opacity:0===a?.5:1},"aria-label":"Previous slide"},(0,n.createElement)("img",{src:`${y}chevron_left.svg`,alt:"Previous",style:{width:"24px",height:"24px"}})),(0,n.createElement)("div",{className:"gv-carousel-dots gv-flex-wrap gv-items-center gv-flex gv-justify-center gv-gap-sm"},Array.from({length:_+1}).map((e,t)=>(0,n.createElement)("button",{key:t,onClick:()=>(e=>{c(Math.min(e,_))})(t),className:"gv-carousel-dot",style:{width:"8px",height:"8px",borderRadius:"50%",border:"none",background:a===t?"#0066CC":"#D0D0D0",cursor:"pointer",padding:0},"aria-label":`Go to slide ${t+1}`}))),(0,n.createElement)("button",{onClick:()=>{a<_&&c(e=>e+1)},disabled:a>=_,className:"gv-carousel-nav gv-carousel-nav-next",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:a>=_?"not-allowed":"pointer",opacity:a>=_?.5:1},"aria-label":"Next slide"},(0,n.createElement)("img",{src:`${y}chevron_right.svg`,alt:"Next",style:{width:"24px",height:"24px"}})))):null}},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4103:(e,t,r)=>{"use strict";function n(e){if(!e||!e.data||!Array.isArray(e.data.catalog))return console.error("Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.",e),{plugins:[],uiI18n:{},locale:null};const t=e.data.catalog,r=e.data.uiI18n||{},n=e.data.locale||null;if(0===t.length)return{plugins:[],uiI18n:r,locale:n};const i=t.map(e=>{var t,r;const n=e?.i18n?.description,i="string"==typeof n&&n?n:"object"==typeof e?.description&&null!==e.description?e.description["en-gb"]||Object.values(e.description)[0]||"":e?.description||"",o=e?.download||e?.download_url||e?.downloadUrl||"",s="object"==typeof e?.author&&null!==e.author?e.author.name||"":e?.author||"",a="object"==typeof e?.author&&null!==e.author&&e.author.url||"",c="object"==typeof e?.price&&null!==e.price?e.price.amount:void 0,l="object"==typeof e?.price&&null!==e.price?e.price.currency:void 0;return{...e,name:e?.name||"Unknown",slug:e?.slug||"",thumbnail:e?.thumbnail||"",description:i,download:o,author:s,authorUrl:a,priceAmount:c,priceCurrency:l,installed:null!==(t=e?.installed)&&void 0!==t&&t,activated:null!==(r=e?.activated)&&void 0!==r&&r,i18n:e?.i18n||{}}}),o=new Set;return{plugins:i.filter(e=>{const t=e.slug||e.name||JSON.stringify(e);return!o.has(t)&&(o.add(t),!0)}),uiI18n:r,locale:n}}r.d(t,{i:()=>n})},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),P=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},L=P(e.i18n,"keyBenefitContent"),D=P(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=L,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4889:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r.n(n),o=r(4103),s=(r(6530),r(8291)),a=r(4598),c=r(9962),l=r(1755),u=r(1174),p=r(7979),h=r(488),d=r(7008);function f(){const{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:f,assetsBaseUrl:g,pluginInAction:m,setPluginInAction:v,fetchSubscriptionStatus:y,isOnecomBrand:b,plugins:_,setPlugins:w,uiI18n:k,setUiI18n:S,handlePluginAction:x,allPluginsActivated:C,setAllPluginsActivated:E,catalogError:I,setCatalogError:O,catalogLoading:N,setCatalogLoading:A,shouldShowProvision:R,isSpecialPlugin:M,shouldShowPlugin:T,isWpVersionSupported:P}=(0,p.D)(),[L,D]=("undefined"!=typeof window&&window.marketplaceConfig?.activePlugins&&window.marketplaceConfig.activePlugins,"undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor&&window.marketplaceConfig.activeThemeAuthor,(0,n.useState)({})),[F,U]=(0,n.useState)(null),j=(0,n.useRef)(!1),B=(0,n.useRef)(!1),$=(0,n.useRef)(null),z=(0,n.useRef)(null),q=(0,n.useRef)(null),V=(0,n.useRef)(!1),W=g||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",H=W?`${W}assets/icons/`:"",G="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null;(0,n.useEffect)(()=>{if(G&&_.length){const e=_.find(e=>e.slug===G);e&&U(e)}else G||U(null)},[G,_]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(_.length){const t=_.find(t=>t.slug===e);t&&U(t)}}else U(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[_]);const{t:K}=(0,s.Bd)();(0,n.useEffect)(()=>{j.current||async function(){try{j.current=!0;const t=await fetch(`${e}`),r=await t.json();if(z.current=Date.now(),V.current=r.is_cached||!1,r&&!1===r.success)return(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);if(!r||!r.data||!r.data.catalog||Array.isArray(r.data.catalog)&&0===r.data.catalog.length)return console.error("API returned empty or blank response"),(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);const{plugins:n,uiI18n:i}=(0,o.i)(r);w(n),S(i),b&&n.filter(e=>M(e.slug)).forEach(e=>{y(e.slug)})}catch(e){(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0)}finally{A(!1)}}()},[e,b,y,w]);const J=i().useMemo(()=>{if(!_.length)return[];const e=new Map,t=!0===_.find(e=>"seo-by-rank-math"===e.slug)?.activated,r=!0===_.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated;return _.forEach(n=>{e.has(n.slug)||!0===n.activated||("seo-by-rank-math"!==n.slug?"seo-by-rank-math-pro"!==n.slug?T(n)&&e.set(n.slug,n):t&&T(n)&&e.set(n.slug,n):t||r||!T(n)||e.set(n.slug,n))}),Array.from(e.values())},[_,T]);(0,n.useEffect)(()=>{if(_.length>0){const e=0===J.length;E(e)}},[_,J,E]),(0,n.useEffect)(()=>{N||I||!(_.length>0)||G||B.current||(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.Yk)(z.current,q.current,V.current),B.current=!0)},[N,I,_.length,G]),(0,n.useEffect)(()=>{F&&G&&$.current!==F.slug&&(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.$B)(F,z.current,q.current,V.current),$.current=F.slug),G||($.current=null)},[F,G]);const Y=e=>{if(!e)return!1;const t="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),r="seo-by-rank-math-pro"===e.slug||"seo-by-rank-math"===e.slug;return t&&r};if(N){if(G){const e="onecom"!==("undefined"!=typeof window&&window.marketplaceConfig?.brand)||"seo-by-rank-math-pro"!==G&&"seo-by-rank-math"!==G?a.A:c.A;return(0,n.createElement)(e,{plugin:null,onClose:()=>{},usePortal:!1,loading:!0})}return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},(0,n.createElement)("section",{className:"category-section"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-mb-md gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t+3,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}})))))))}if(I)return(0,n.createElement)(l.A,null);if(!P("6.2"))return(0,n.createElement)(u.A,null);if(F&&G){const e=Y(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>{if(U(null),"undefined"!=typeof window&&window.history&&window.history.length>1)window.history.back();else{const e=new URL(window.location.href);e.searchParams.delete("plugin"),window.history.replaceState({},"",e.toString())}},usePortal:!1,loading:N})}const Z=new Map;J.forEach(e=>{const t=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null},r=t.slug||t.title||"Others";Z.has(r)||Z.set(r,{info:t,plugins:[]}),Z.get(r).plugins.push(e)});const X=Array.from(Z.entries()).filter(([e,{plugins:t}])=>t.length>0);return C?(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},k?.notifications?.allPluginsOwned),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},k?.text?.managePlugins),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="/wp-admin/plugins.php"}},(0,n.createElement)("span",null,k.viewProductsButton),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${H}/arrow_right.svg`})))):(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},X.map(([e,{info:t,plugins:r}])=>(0,n.createElement)("section",{key:e,className:"category-section"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},t.title||e),t.description&&(0,n.createElement)("p",{className:"gv-text-sm"},t.description),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},r.map(e=>{R(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:k?.labels?.free||"Free",r=(0,h.M)(e,t,k),i=(0,h.Tc)(e),o=(0,h.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-sm gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius ocmp-plugin-cards",onClick:t=>{U(e);const r=new URL(window.location.href);r.searchParams.set("plugin",e.slug),window.history.pushState({},"",r.toString())}},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-2 gv-tab-span-2"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${H}add_box.svg`,alt:e.name})),(0,n.createElement)("div",{className:"gv-desk-span-9 gv-tab-span-9 gv-span-9 gv-ml-sm"},(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-justify-between gv-h-full"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm gv-flex-1"}," ",e.i18n.listingDescription||e.i18n.subtitle," "),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&o>0?null!==o?o:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(k?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",k?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-span-1 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`},(0,n.createElement)("img",{className:"gv-tile",src:`${H}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))))})))),F&&!G&&(()=>{const e=Y(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>U(null),loading:N})})())}},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5771:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(4889),o=r(6027),s=r(3258),a=r(3526),c=r(7979);const l=()=>{const{allPluginsActivated:e,catalogError:t,catalogLoading:r,isWpVersionSupported:l}=(0,c.D)(),u=l("6.2"),[p,h]=(0,n.useState)("undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin"));return(0,n.useEffect)(()=>{const e=()=>{const e="undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin");h(!!e)};window.addEventListener("popstate",e);const t=window.history.pushState;window.history.pushState=function(...r){t.apply(this,r),e()};const r=window.history.replaceState;return window.history.replaceState=function(...t){r.apply(this,t),e()},()=>{window.removeEventListener("popstate",e),window.history.pushState=t,window.history.replaceState=r}},[]),(0,n.createElement)(n.Fragment,null,(0,n.createElement)(a.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-surface-dim gv-w-max-container gv-mx-auto gv-p-fluid "},!p&&!t&&u&&(0,n.createElement)(o.A,{loading:r}),!p&&!e&&u&&(0,n.createElement)(s.A,{loading:r}),(0,n.createElement)(i.A,null))))},u=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o})=>(0,n.createElement)(c.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o},(0,n.createElement)(l,null))},5795:e=>{"use strict";e.exports=window.ReactDOM},6027:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);const o=({loading:e=!1})=>{const{assetsBaseUrl:t,uiI18n:r}=(0,i.D)(),o="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png",s="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png";return(0,n.createElement)("header",{className:"gv-product-header gv-product-banner gv-pt-fluid gv-items-stretch gv-justify-between gv-gap-lg gv-max-mob-pt-md"},(0,n.createElement)("div",{className:"gv-left-banner "+(e?"gv-h-full gv-w-full":"")},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:o}),(0,n.createElement)("img",{src:o,alt:"Left banner"})))),(0,n.createElement)("div",{className:"gv-content gv-banner-content gv-max-mob-pt-0 gv-max-mob-pb-0 gv-desk-lg-text-center gv-tab-text-left gv-flex gv-flex-col gv-align-center gv-justify-center gv-pt-0"},e?(0,n.createElement)(n.Fragment,null,(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"})):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",{className:"gv-banner-title"},r?.headings?.pageTitle),(0,n.createElement)("p",{className:"gv-banner-text gv-text-sm gv-mt-sm"},r?.text?.pageContent))),(0,n.createElement)("div",{className:"gv-right-banner gv-max-mob-pl-md "+(e?"gv-h-full gv-mt-0 gv-w-full":""),...e?{style:{transform:"translate(70px,5px)"}}:{}},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:s}),(0,n.createElement)("img",{src:s,alt:"Product image"})))))}},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var P=function(e){return T("Node",e,"childNodes")},L=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(L(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(L(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!P(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,P=function(){R.removeEventListener("load",P);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P)}if("audio"===y||"video"===y){var L=b;L.rr_mediaState=e.paused?"paused":"played",L.rr_mediaCurrentTime=e.currentTime,L.rr_mediaPlaybackRate=e.playbackRate,L.rr_mediaMuted=e.muted,L.rr_mediaLoop=e.loop,L.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=L(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(P(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(P(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=L(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Pe=Te;Te.default=Te;var Le=Pe;function De(e,t){new Le(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Pe,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Pt=Re.isClean,Lt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Pt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Lt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Pr=Ge,Lr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Lr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Pr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Li(e),Ti(e))return this.mapFile=e,Pi(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Li(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Po=To;To.default=To;var Lo="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Lo&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Lo:case Do:i=r===Lo?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,P=e.recordCanvas,L=void 0!==P&&P,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:L,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:L,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:L,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:L,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Pl(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ll(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Pl(e[i])&&Ll(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Pl(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Pl(s)&&Ll(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Pu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Pu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Pu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Pu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Pp=Du("recorder"),Lp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Pp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Lp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Pp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Pp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Pp.log("Recording already in progress, skipping startRecording.")},Lp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Lp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Lp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Lp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Pp.log("No resumable recording found."),null)}.bind(this))},Lp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Lp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Lp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Lp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Pu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Pu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Pu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Pu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Pd="$device:",Ld=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Ld&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Pu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Ld){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Pu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Pu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Pd+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Pu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Pu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Pu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Ld)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Ld||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Ld||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Ld)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Pu.log("MIXPANEL REQUEST:"),Pu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Pd))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Pd+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Pu.error.apply(Pu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Pu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{$B:()=>d,Mh:()=>p,Yk:()=>h,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}},h=(e=null,t=null,r=!1)=>{try{u({category:"marketplace_home",itemName:"Catalog Page",contentReceivedAt:e,contentRenderedAt:t,isCached:r})}catch(e){console.error("[MixpanelTracking] Error tracking marketplace visit:",e)}},d=(e,t=null,r=null,n=!1)=>{try{if(!e)return void console.warn("[MixpanelTracking] Plugin object required for tracking detail visit");const i=e.categories&&e.categories.length>0?"object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0]:"";u({pluginSlug:e.slug,pluginName:e.name,category:i,itemName:"Product Page",contentReceivedAt:t,contentRenderedAt:r,isCached:n})}catch(e){console.error("[MixpanelTracking] Error tracking plugin detail visit:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[P,L]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:P,setCatalogLoading:L,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",T=w?.name||e.name||"Product",P=w?.i18n?.description||w?.i18n?.subtitle,L=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},P)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,L)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(5771),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); +(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class P{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const L=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=L(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(L(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new P(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3258:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(488);function s({loading:e=!1}){const{plugins:t,assetsBaseUrl:r,uiI18n:s}=(0,i.D)(),[a,c]=(0,n.useState)(0),[l,u]=(0,n.useState)(2),p="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],h="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"";(0,n.useEffect)(()=>{const e=()=>{window.innerWidth>1024?u(2):(window.innerWidth,u(1))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const d=e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>p.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if(h!==t)return!1}return!0},f=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,g=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,m=t.filter(e=>!0!==e.activated&&!0===e.featured&&("seo-by-rank-math"===e.slug?!f&&!g&&d(e):"seo-by-rank-math-pro"===e.slug?f&&d(e):d(e))).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)),v=r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",y=v?`${v}assets/icons/`:"",b=m.length,_=Math.max(0,b-l);return e?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"200px"}})),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",gap:"1rem"}},[...Array(l)].map((e,t)=>(0,n.createElement)("div",{key:`skeleton-slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header gv-w-full",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm gv-flex gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80px",marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"90%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80%"}}),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-flex-wrap gv-items-center",style:{marginTop:"24px"}},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"100px",height:"40px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-ml-md",style:{width:"60px",height:"24px"}}))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("div",{className:"gv-card-image",style:{width:"100%",height:"100%",marginTop:"74px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"}))))))))):m&&0!==m.length?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("h5",{className:"gv-title gv-heading-sm gv-recommended-heading"},s?.headings?.recommendedHeading)),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",transition:"transform 0.3s ease-in-out",transform:`translateX(calc(-${a} * ((100% - ${l-1}rem) / ${l} + 1rem)))`,gap:"1rem"}},m.map((e,t)=>{const r=e?.i18n?.featuredTitle,i=e?.i18n?.featuredContent,a=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:s?.labels?.free||"Free",c=(0,o.M)(e,a,s),u=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",p=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null};return p.title||p.slug,(0,n.createElement)("div",{key:`slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-lg gv-text-sm gv-flex gv-flex-col gv-items-start gv-h-full gv-justify-between"},(0,n.createElement)("div",{className:"gv-badge gv-badge-info gv-flex-none"},e?.name),(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-h-full gv-justify-between"},(0,n.createElement)("div",{className:"gv-max-mob-mb-lg gv-max-tab-mb-lg",style:{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:8,overflow:"hidden",width:"100%"}},(0,n.createElement)("h5",{className:"gv-title gv-header-sm",style:{marginBottom:"8px"}},r),(0,n.createElement)("p",{className:"gv-text-sm"},i?.trim())),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-items-center"},(0,n.createElement)("button",{onClick:()=>(e=>{if("undefined"!=typeof window){const t=new URL(window.location.href);t.searchParams.set("plugin",e.slug),window.history.pushState({},"",t.toString()),window.dispatchEvent(new PopStateEvent("popstate"))}})(e),className:"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0"},s?.featuredCta),(0,n.createElement)("span",{className:"gv-price gv-text-bold gv-text-md gv-ml-md gv-flex-1"},c,"free"!==e.licenseType&&c&&c!==a&&c!==(s?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",s?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${u} 1x, ${u} 2x`}),(0,n.createElement)("img",{src:u,srcSet:`${u} 1x, ${u} 2x`,alt:`${r} image`})))))}))),b>l&&(0,n.createElement)("div",{className:"gv-carousel-nav-wrapper gv-flex gv-justify-center gv-align-center gv-mt-sm gv-gap-fluid"},(0,n.createElement)("button",{onClick:()=>{a>0&&c(e=>e-1)},disabled:0===a,className:"gv-carousel-nav gv-carousel-nav-prev",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:0===a?"not-allowed":"pointer",opacity:0===a?.5:1},"aria-label":"Previous slide"},(0,n.createElement)("img",{src:`${y}chevron_left.svg`,alt:"Previous",style:{width:"24px",height:"24px"}})),(0,n.createElement)("div",{className:"gv-carousel-dots gv-flex-wrap gv-items-center gv-flex gv-justify-center gv-gap-sm"},Array.from({length:_+1}).map((e,t)=>(0,n.createElement)("button",{key:t,onClick:()=>(e=>{c(Math.min(e,_))})(t),className:"gv-carousel-dot",style:{width:"8px",height:"8px",borderRadius:"50%",border:"none",background:a===t?"#0066CC":"#D0D0D0",cursor:"pointer",padding:0},"aria-label":`Go to slide ${t+1}`}))),(0,n.createElement)("button",{onClick:()=>{a<_&&c(e=>e+1)},disabled:a>=_,className:"gv-carousel-nav gv-carousel-nav-next",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:a>=_?"not-allowed":"pointer",opacity:a>=_?.5:1},"aria-label":"Next slide"},(0,n.createElement)("img",{src:`${y}chevron_right.svg`,alt:"Next",style:{width:"24px",height:"24px"}})))):null}},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4103:(e,t,r)=>{"use strict";function n(e){if(!e||!e.data||!Array.isArray(e.data.catalog))return console.error("Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.",e),{plugins:[],uiI18n:{},locale:null};const t=e.data.catalog,r=e.data.uiI18n||{},n=e.data.locale||null;if(0===t.length)return{plugins:[],uiI18n:r,locale:n};const i=t.map(e=>{var t,r;const n=e?.i18n?.description,i="string"==typeof n&&n?n:"object"==typeof e?.description&&null!==e.description?e.description["en-gb"]||Object.values(e.description)[0]||"":e?.description||"",o=e?.download||e?.download_url||e?.downloadUrl||"",s="object"==typeof e?.author&&null!==e.author?e.author.name||"":e?.author||"",a="object"==typeof e?.author&&null!==e.author&&e.author.url||"",c="object"==typeof e?.price&&null!==e.price?e.price.amount:void 0,l="object"==typeof e?.price&&null!==e.price?e.price.currency:void 0;return{...e,name:e?.name||"Unknown",slug:e?.slug||"",thumbnail:e?.thumbnail||"",description:i,download:o,author:s,authorUrl:a,priceAmount:c,priceCurrency:l,installed:null!==(t=e?.installed)&&void 0!==t&&t,activated:null!==(r=e?.activated)&&void 0!==r&&r,i18n:e?.i18n||{}}}),o=new Set;return{plugins:i.filter(e=>{const t=e.slug||e.name||JSON.stringify(e);return!o.has(t)&&(o.add(t),!0)}),uiI18n:r,locale:n}}r.d(t,{i:()=>n})},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),P=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},L=P(e.i18n,"keyBenefitContent"),D=P(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=L,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4889:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r.n(n),o=r(4103),s=(r(6530),r(8291)),a=r(4598),c=r(9962),l=r(1755),u=r(1174),p=r(7979),h=r(488),d=r(7008);function f(){const{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:f,assetsBaseUrl:g,pluginInAction:m,setPluginInAction:v,fetchSubscriptionStatus:y,isOnecomBrand:b,plugins:_,setPlugins:w,uiI18n:k,setUiI18n:S,handlePluginAction:x,allPluginsActivated:C,setAllPluginsActivated:E,catalogError:I,setCatalogError:O,catalogLoading:N,setCatalogLoading:A,shouldShowProvision:R,isSpecialPlugin:M,shouldShowPlugin:T,isWpVersionSupported:P}=(0,p.D)(),[L,D]=("undefined"!=typeof window&&window.marketplaceConfig?.activePlugins&&window.marketplaceConfig.activePlugins,"undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor&&window.marketplaceConfig.activeThemeAuthor,(0,n.useState)({})),[F,U]=(0,n.useState)(null),j=(0,n.useRef)(!1),B=(0,n.useRef)(!1),$=(0,n.useRef)(null),z=(0,n.useRef)(null),q=(0,n.useRef)(null),V=(0,n.useRef)(!1),W=g||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",H=W?`${W}assets/icons/`:"",G="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null;(0,n.useEffect)(()=>{if(G&&_.length){const e=_.find(e=>e.slug===G);e&&U(e)}else G||U(null)},[G,_]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(_.length){const t=_.find(t=>t.slug===e);t&&U(t)}}else U(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[_]);const{t:K}=(0,s.Bd)();(0,n.useEffect)(()=>{j.current||async function(){try{j.current=!0;const t=await fetch(`${e}`),r=await t.json();if(z.current=Date.now(),V.current=r.is_cached||!1,r&&!1===r.success)return(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);if(!r||!r.data||!r.data.catalog||Array.isArray(r.data.catalog)&&0===r.data.catalog.length)return console.error("API returned empty or blank response"),(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);const{plugins:n,uiI18n:i}=(0,o.i)(r);w(n),S(i),b&&n.filter(e=>M(e.slug)).forEach(e=>{y(e.slug)})}catch(e){(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0)}finally{A(!1)}}()},[e,b,y,w]);const J=i().useMemo(()=>{if(!_.length)return[];const e=new Map,t=!0===_.find(e=>"seo-by-rank-math"===e.slug)?.activated,r=!0===_.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated;return _.forEach(n=>{e.has(n.slug)||!0===n.activated||("seo-by-rank-math"!==n.slug?"seo-by-rank-math-pro"!==n.slug?T(n)&&e.set(n.slug,n):t&&T(n)&&e.set(n.slug,n):t||r||!T(n)||e.set(n.slug,n))}),Array.from(e.values())},[_,T]);(0,n.useEffect)(()=>{if(_.length>0){const e=0===J.length;E(e)}},[_,J,E]),(0,n.useEffect)(()=>{N||I||!(_.length>0)||G||B.current||(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.Yk)(z.current,q.current,V.current),B.current=!0)},[N,I,_.length,G]),(0,n.useEffect)(()=>{F&&G&&$.current!==F.slug&&(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.$B)(F,z.current,q.current,V.current),$.current=F.slug),G||($.current=null)},[F,G]);const Y=e=>{if(!e)return!1;const t="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),r="seo-by-rank-math-pro"===e.slug||"seo-by-rank-math"===e.slug;return t&&r};if(N){if(G){const e="onecom"!==("undefined"!=typeof window&&window.marketplaceConfig?.brand)||"seo-by-rank-math-pro"!==G&&"seo-by-rank-math"!==G?a.A:c.A;return(0,n.createElement)(e,{plugin:null,onClose:()=>{},usePortal:!1,loading:!0})}return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},(0,n.createElement)("section",{className:"category-section"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-mb-md gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t+3,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}})))))))}if(I)return(0,n.createElement)(l.A,null);if(!P("6.2"))return(0,n.createElement)(u.A,null);if(F&&G){const e=Y(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>{if(U(null),"undefined"!=typeof window&&window.history&&window.history.length>1)window.history.back();else{const e=new URL(window.location.href);e.searchParams.delete("plugin"),window.history.replaceState({},"",e.toString())}},usePortal:!1,loading:N})}const Z=new Map;J.forEach(e=>{const t=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null},r=t.slug||t.title||"Others";Z.has(r)||Z.set(r,{info:t,plugins:[]}),Z.get(r).plugins.push(e)});const X=Array.from(Z.entries()).filter(([e,{plugins:t}])=>t.length>0);return C?(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},k?.notifications?.allPluginsOwned),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},k?.text?.managePlugins),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="/wp-admin/plugins.php"}},(0,n.createElement)("span",null,k.viewProductsButton),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${H}/arrow_right.svg`})))):(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},X.map(([e,{info:t,plugins:r}])=>(0,n.createElement)("section",{key:e,className:"category-section"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},t.title||e),t.description&&(0,n.createElement)("p",{className:"gv-text-sm"},t.description),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},r.map(e=>{R(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:k?.labels?.free||"Free",r=(0,h.M)(e,t,k),i=(0,h.Tc)(e),o=(0,h.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-sm gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius ocmp-plugin-cards",onClick:t=>{U(e);const r=new URL(window.location.href);r.searchParams.set("plugin",e.slug),window.history.pushState({},"",r.toString())}},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-2 gv-tab-span-2"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${H}add_box.svg`,alt:e.name})),(0,n.createElement)("div",{className:"gv-desk-span-9 gv-tab-span-9 gv-span-9 gv-ml-sm"},(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-justify-between gv-h-full"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm gv-flex-1"}," ",e.i18n.listingDescription||e.i18n.subtitle," "),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&o>0?null!==o?o:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(k?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",k?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-span-1 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`},(0,n.createElement)("img",{className:"gv-tile",src:`${H}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))))})))),F&&!G&&(()=>{const e=Y(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>U(null),loading:N})})())}},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5771:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(4889),o=r(6027),s=r(3258),a=r(3526),c=r(7979);const l=()=>{const{allPluginsActivated:e,catalogError:t,catalogLoading:r,isWpVersionSupported:l}=(0,c.D)(),u=l("6.2"),[p,h]=(0,n.useState)("undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin"));return(0,n.useEffect)(()=>{const e=()=>{const e="undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin");h(!!e)};window.addEventListener("popstate",e);const t=window.history.pushState;window.history.pushState=function(...r){t.apply(this,r),e()};const r=window.history.replaceState;return window.history.replaceState=function(...t){r.apply(this,t),e()},()=>{window.removeEventListener("popstate",e),window.history.pushState=t,window.history.replaceState=r}},[]),(0,n.createElement)(n.Fragment,null,(0,n.createElement)(a.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-surface-dim gv-w-max-container gv-mx-auto gv-p-fluid "},!p&&!t&&u&&(0,n.createElement)(o.A,{loading:r}),!p&&!e&&u&&(0,n.createElement)(s.A,{loading:r}),(0,n.createElement)(i.A,null))))},u=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o})=>(0,n.createElement)(c.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o},(0,n.createElement)(l,null))},5795:e=>{"use strict";e.exports=window.ReactDOM},6027:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);const o=({loading:e=!1})=>{const{assetsBaseUrl:t,uiI18n:r}=(0,i.D)(),o="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png",s="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png";return(0,n.createElement)("header",{className:"gv-product-header gv-product-banner gv-pt-fluid gv-items-stretch gv-justify-between gv-gap-lg gv-max-mob-pt-md"},(0,n.createElement)("div",{className:"gv-left-banner "+(e?"gv-h-full gv-w-full":"")},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:o}),(0,n.createElement)("img",{src:o,alt:"Left banner"})))),(0,n.createElement)("div",{className:"gv-content gv-banner-content gv-max-mob-pt-0 gv-max-mob-pb-0 gv-desk-lg-text-center gv-tab-text-left gv-flex gv-flex-col gv-align-center gv-justify-center gv-pt-0"},e?(0,n.createElement)(n.Fragment,null,(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"})):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",{className:"gv-banner-title"},r?.headings?.pageTitle),(0,n.createElement)("p",{className:"gv-banner-text gv-text-sm gv-mt-sm"},r?.text?.pageContent))),(0,n.createElement)("div",{className:"gv-right-banner gv-max-mob-pl-md "+(e?"gv-h-full gv-mt-0 gv-w-full":""),...e?{style:{transform:"translate(70px,5px)"}}:{}},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:s}),(0,n.createElement)("img",{src:s,alt:"Product image"})))))}},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var P=function(e){return T("Node",e,"childNodes")},L=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(L(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(L(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!P(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,P=function(){R.removeEventListener("load",P);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P)}if("audio"===y||"video"===y){var L=b;L.rr_mediaState=e.paused?"paused":"played",L.rr_mediaCurrentTime=e.currentTime,L.rr_mediaPlaybackRate=e.playbackRate,L.rr_mediaMuted=e.muted,L.rr_mediaLoop=e.loop,L.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=L(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(P(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(P(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=L(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Pe=Te;Te.default=Te;var Le=Pe;function De(e,t){new Le(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Pe,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Pt=Re.isClean,Lt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Pt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Lt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Pr=Ge,Lr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Lr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Pr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Li(e),Ti(e))return this.mapFile=e,Pi(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Li(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Po=To;To.default=To;var Lo="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Lo&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Lo:case Do:i=r===Lo?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,P=e.recordCanvas,L=void 0!==P&&P,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:L,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:L,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:L,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:L,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Pl(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ll(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Pl(e[i])&&Ll(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Pl(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Pl(s)&&Ll(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Pu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Pu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Pu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Pu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Pp=Du("recorder"),Lp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Pp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Lp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Pp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Pp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Pp.log("Recording already in progress, skipping startRecording.")},Lp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Lp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Lp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Lp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Pp.log("No resumable recording found."),null)}.bind(this))},Lp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Lp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Lp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Lp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Pu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Pu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Pu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Pu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Pd="$device:",Ld=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Ld&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Pu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Ld){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Pu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Pu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Pd+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Pu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Pu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Pu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Ld)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Ld||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Ld||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Ld)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Pu.log("MIXPANEL REQUEST:"),Pu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Pd))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Pd+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Pu.error.apply(Pu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Pu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{$B:()=>d,Mh:()=>p,Yk:()=>h,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}},h=(e=null,t=null,r=!1)=>{try{u({category:"marketplace_home",itemName:"Catalog Page",contentReceivedAt:e,contentRenderedAt:t,isCached:r})}catch(e){console.error("[MixpanelTracking] Error tracking marketplace visit:",e)}},d=(e,t=null,r=null,n=!1)=>{try{if(!e)return void console.warn("[MixpanelTracking] Plugin object required for tracking detail visit");const i=e.categories&&e.categories.length>0?"object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0]:"";u({pluginSlug:e.slug,pluginName:e.name,category:i,itemName:"Product Page",contentReceivedAt:t,contentRenderedAt:r,isCached:n})}catch(e){console.error("[MixpanelTracking] Error tracking plugin detail visit:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[P,L]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:P,setCatalogLoading:L,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=k.detailsBannerUrl||k.bannerUrl,T=w?.name||e.name||"Product",P=w?.i18n?.description||w?.i18n?.subtitle,L=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},P)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,L)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(5771),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/frontend/build/index.js.map b/frontend/build/index.js.map index 2af8b71..9649474 100644 --- a/frontend/build/index.js.map +++ b/frontend/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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,OAAO,yBAChB,OAC8C,IAA9CsH,EAAStH,OAAO,0BAChB,QACmD,IAAnDsH,EAAStH,OAAO,+BAChB,aAEA,IAEf,EAEAsrE,WAAY,SAAShkE,GACjB,IAAItH,EAASjL,GAAE8M,KAAKwpE,aAAa/jE,GAC7B4J,EAAmB,SAAVlR,EAAqB,IAAM,IACpCrS,EAAM,CAAC,EAEX,GAAe,OAAXqS,EAAiB,CACjBrS,EAAoB,eAAIqS,EAExB,IAAIurE,EAAUx2E,GAAE4xE,cAAcr/D,EAAU4J,GACpCq6D,EAAQhkG,SACRomB,EAAgB,WAAI49E,EAE5B,CAEA,OAAO59E,CACX,EAOA69E,QAAS,SAASC,EAAYC,EAAQ3J,GAElC,OADA2J,EAASA,GAAU,GACf3J,GAAShtE,GAAE7sB,SAASujG,EAAY,SAC5B12E,GAAE7sB,SAASujG,EAAY,QAChB,aAEJ,QACA,8BAA8BvwF,KAAKuwF,GACnC,aACA12E,GAAE7sB,SAASujG,EAAY,aAAe12E,GAAE7sB,SAASujG,EAAY,aAC7D,2BACA12E,GAAE7sB,SAASujG,EAAY,mBAEvB,mBACA12E,GAAE7sB,SAASujG,EAAY,SAAW12E,GAAE7sB,SAASujG,EAAY,QACzD,iBACA12E,GAAE7sB,SAASujG,EAAY,SACvB,kBACA12E,GAAE7sB,SAASujG,EAAY,UAEvB,gBACA12E,GAAE7sB,SAASujG,EAAY,UACvB,SACA12E,GAAE7sB,SAASujG,EAAY,SACvB,aACA12E,GAAE7sB,SAASujG,EAAY,UAAY12E,GAAE7sB,SAASujG,EAAY,aAC1D,aACA12E,GAAE7sB,SAASujG,EAAY,SACvB,cACA12E,GAAE7sB,SAASwjG,EAAQ,SACtB32E,GAAE7sB,SAASujG,EAAY,UAChB,gBAEJ,SACA12E,GAAE7sB,SAASujG,EAAY,WACvB,iBACA12E,GAAE7sB,SAASujG,EAAY,aACvB,YACA12E,GAAE7sB,SAASujG,EAAY,WACvB,UACA12E,GAAE7sB,SAASujG,EAAY,SAAW12E,GAAE7sB,SAASujG,EAAY,YACzD,oBACA12E,GAAE7sB,SAASujG,EAAY,SACv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","sources":["webpack://MarketPlaceWP/./src/utils/wpVersionHelper.js","webpack://MarketPlaceWP/./src/utils/priceFormatter.js","webpack://MarketPlaceWP/./src/components/WpVersionErrorState.jsx","webpack://MarketPlaceWP/./src/components/PluginActions.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/context.js","webpack://MarketPlaceWP/external window \"React\"","webpack://MarketPlaceWP/./src/components/ErrorState.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://MarketPlaceWP/./node_modules/i18next/dist/esm/i18next.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/unescape.js","webpack://MarketPlaceWP/./src/utils/redirectUrlHelper.js","webpack://MarketPlaceWP/./src/components/FeaturedCarousel.jsx","webpack://MarketPlaceWP/./src/components/LoadingOverlay.jsx","webpack://MarketPlaceWP/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://MarketPlaceWP/./src/components/normalised-plugins.jsx","webpack://MarketPlaceWP/./src/components/SuccessNotice.jsx","webpack://MarketPlaceWP/./src/components/ProductDetail.jsx","webpack://MarketPlaceWP/./src/components/ErrorToast.jsx","webpack://MarketPlaceWP/./src/components/MarketPlace.jsx","webpack://MarketPlaceWP/./node_modules/void-elements/index.js","webpack://MarketPlaceWP/./src/i18n/index.js","webpack://MarketPlaceWP/./src/MarketplaceApp.jsx","webpack://MarketPlaceWP/external window \"ReactDOM\"","webpack://MarketPlaceWP/./src/components/ProductBanner.jsx","webpack://MarketPlaceWP/./node_modules/@group.one/gravity/dist/index.es.js","webpack://MarketPlaceWP/./node_modules/mixpanel-browser/dist/mixpanel.module.js","webpack://MarketPlaceWP/./src/utils/mixpanelTracking.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/defaults.js","webpack://MarketPlaceWP/./src/context/MarketplaceContext.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/utils.js","webpack://MarketPlaceWP/./src/components/ProductDetailRankMath.jsx","webpack://MarketPlaceWP/webpack/bootstrap","webpack://MarketPlaceWP/webpack/runtime/compat get default export","webpack://MarketPlaceWP/webpack/runtime/define property getters","webpack://MarketPlaceWP/webpack/runtime/hasOwnProperty shorthand","webpack://MarketPlaceWP/webpack/runtime/make namespace object","webpack://MarketPlaceWP/./src/index.jsx"],"sourcesContent":["export const isWpVersionSupported = (version, minVersion) => {\n if (!version) return true;\n const v1 = String(version).split('.');\n const v2 = String(minVersion).split('.');\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const num1 = parseInt(v1[i] || 0, 10);\n const num2 = parseInt(v2[i] || 0, 10);\n if (num1 > num2) return true;\n if (num1 < num2) return false;\n }\n return true;\n};\n","/**\n * Currency symbol mapping - scalable for future currencies\n */\nconst CURRENCY_SYMBOLS = {\n 'EUR': '€',\n 'USD': '$',\n 'GBP': '£',\n 'DKK': 'kr',\n 'NOK': 'kr',\n 'SEK': 'kr',\n // Add more currencies here as needed\n // 'JPY': '¥',\n};\n\n/**\n * Currencies that display the symbol AFTER the amount (e.g., \"79.00 kr\")\n * Most European currencies like EUR, USD, GBP display before, but Nordic currencies display after\n */\nconst CURRENCIES_WITH_POST_SYMBOL = ['DKK', 'SEK', 'NOK'];\n\n/**\n * Gets the currency symbol for a given currency code\n * @param {string} currencyCode - The currency code (e.g., 'EUR', 'USD')\n * @returns {string} - The currency symbol or the code itself as fallback\n */\nconst getCurrencySymbol = (currencyCode) => {\n return CURRENCY_SYMBOLS[currencyCode] || currencyCode;\n};\n\n/**\n * Formats price with currency symbol in the correct position\n * @param {string} amount - The formatted amount\n * @param {string} symbol - The currency symbol\n * @param {string} currencyCode - The currency code\n * @returns {string} - Formatted price with symbol in correct position\n */\nconst formatPriceWithSymbol = (amount, symbol, currencyCode) => {\n if (CURRENCIES_WITH_POST_SYMBOL.includes(currencyCode)) {\n return `${amount} ${symbol}`;\n }\n return `${symbol} ${amount}`;\n};\n\n/**\n * Extracts and formats the full price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted full price with currency symbol or null if not found\n */\nexport const getFullPrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const fullPrice = plugin.prices.find(p => p.priceType === 'full');\n if (fullPrice && fullPrice.amount && fullPrice.currency) {\n const symbol = getCurrencySymbol(fullPrice.currency);\n const formattedAmount = Number(fullPrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, fullPrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Extracts and formats the rebate price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted rebate price with currency symbol or null if not found\n */\nexport const getRebatePrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const rebatePrice = plugin.prices.find(p => p.priceType === 'rebate');\n if (rebatePrice && rebatePrice.amount !== undefined && rebatePrice.amount !== null && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Formats the price display for a plugin based on its license type\n * @param {Object} plugin - The plugin object containing price and license information\n * @param {string} freeLabel - Optional label for free plugins (defaults to 'Free')\n * @param {Object} uiI18n - Optional UI internationalization object containing labels\n * @returns {string} - Formatted price string ('Free', 'Symbol Amount', or blank)\n */\nexport const formatPluginPrice = (plugin, freeLabel = 'Free', uiI18n = null) => {\n const isFree = plugin.licenseType === \"free\";\n\n if (isFree) {\n return freeLabel;\n }\n\n // Handle new API format with prices array\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n // Check if there's a rebate price type for premium licenses\n const rebatePrice = plugin.prices.find(price => price.priceType === 'rebate');\n\n if (rebatePrice && plugin.licenseType === 'premium') {\n // If rebate amount is 0, display \"Free until renewal\"\n if (rebatePrice.amount === 0) {\n return uiI18n?.labels?.freeUntilRenewal || 'Free until renewal';\n }\n // If rebate amount is not 0, display \"amount until renewal\"\n if (rebatePrice.amount && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n const priceWithSymbol = formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n return `${priceWithSymbol} `;\n }\n }\n\n // If no rebate, find the full price (first active price, or use first price if isActive is not present)\n let priceToUse = plugin.prices.find(price => price.priceType === 'full' && (price.isActive === true || price.isActive === undefined));\n\n // Fallback: find any active price\n if (!priceToUse) {\n priceToUse = plugin.prices.find(price => price.isActive === true);\n }\n\n // If no price with isActive:true found, use first price (for formats without isActive)\n if (!priceToUse) {\n priceToUse = plugin.prices[0];\n }\n\n if (priceToUse && priceToUse.amount && priceToUse.currency) {\n const symbol = getCurrencySymbol(priceToUse.currency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(priceToUse.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, priceToUse.currency);\n }\n }\n\n // Backward compatibility: Handle old format with priceCurrency and priceAmount\n if (plugin.priceCurrency && plugin.priceAmount) {\n const symbol = getCurrencySymbol(plugin.priceCurrency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(plugin.priceAmount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, plugin.priceCurrency);\n }\n\n // Return blank for premium products without prices\n return '';\n};\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function WpVersionErrorState() {\n const { uiI18n } = useMarketplace();\n\n const handleUpdateClick = () => {\n window.location.href = typeof window !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl\n ? `${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`\n : \"/wp-admin/update-core.php\";\n };\n\n const updateText = (uiI18n?.notifications?.updateWPText)?.replace(\"{0}\", \"6.2\");\n\n return (\n
\n
\n
\n {uiI18n?.notifications?.updateWPTitle}\n
\n

\n {updateText}\n

\n \n {uiI18n?.updateWPButton}\n \n
\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackPluginAction, trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function PluginActions({ plugin }) {\n const {\n assetsBaseUrl,\n pluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n isOnecomBrand,\n handlePluginAction,\n uiI18n,\n isSpecialPlugin\n } = useMarketplace();\n\n // Get subscription status for this plugin from context\n const pluginSubscriptionStatus = subscriptionStatus[plugin.slug];\n const pluginIsCheckingSubscription = isCheckingSubscription[plugin.slug];\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n const handleClick = (action) => {\n // Check if brand is onecom, plugin is not installed, and slug is wp-rocket or rank-math-pro\n const isNotInstalled = !plugin.installed;\n\n if (isOnecomBrand && isSpecialPlugin(plugin.slug) && isNotInstalled && action === \"install\") {\n // Track install event with result: initiated for special plugins\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'initiated',\n }\n });\n\n // Dispatch custom event instead of calling handlePluginAction\n const event = new CustomEvent(\"onecom-plugin-provision\", {\n detail: {\n slug: plugin.slug,\n },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n // Dispatch on document so listeners using document.addEventListener receive it\n document.dispatchEvent(event);\n return;\n }\n\n // Default behavior\n handlePluginAction(action, plugin, 'product_detail');\n };\n\n const handleSelectClick = () => {\n // Track the select button click\n trackButtonClick({\n buttonName: 'Select',\n buttonAction: 'subscribe_addon',\n plugin: plugin,\n });\n\n // Dispatch custom event for provisioning\n const event = new CustomEvent(\"onecom-subscribe-addon\", {\n detail: { slug: plugin.slug },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n document.dispatchEvent(event);\n };\n\n const handleManage = () => {\n // Track the manage button click\n trackButtonClick({\n buttonName: 'Manage',\n buttonAction: 'manage_product',\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n const redirectUrl = getPluginRedirectUrl(plugin, false);\n navigateToPluginUrl(redirectUrl);\n };\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n // Check if we should show \"Select\" button instead of install/activate\n const shouldShowSelectButton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed && pluginSubscriptionStatus === false;\n\n // Check if we should show skeleton loader (while checking subscription for special plugins)\n // Show skeleton if: checking OR status is undefined (not yet fetched)\n const shouldShowSkeleton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed &&\n (pluginIsCheckingSubscription || pluginSubscriptionStatus === undefined);\n\n return (\n
\n {shouldShowSkeleton ? (\n
\n ) : shouldShowSelectButton ? (\n \n Select\n \n ) : plugin.installed ? (\n plugin.activated ? (\n \n {uiI18n?.labels?.manage || 'Manage'}\n \n \n ) : (\n handleClick(\"activate\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.activating || 'Activating {0}', pluginName)\n : (uiI18n?.activateButton || plugin.i18n?.activateButton || 'Activate')}\n \n )\n ) : (\n handleClick(\"install\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.installing || 'Installing {0}', pluginName)\n : (uiI18n?.installButton || plugin.i18n?.installButton || 'Install')}\n \n )}\n
\n );\n}\n","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","module.exports = window[\"React\"];","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ErrorState() {\n const { assetsBaseUrl } = useMarketplace();\n const { t } = useTranslation();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const handleRefresh = () => {\n window.location.reload();\n };\n\n return (\n
\n
\n
{t('ui.notifications.couldNotLoad')}
\n

{t('ui.notifications.refreshPage')}

\n \n {t('ui.button.refreshPage')}\n \n
\n
\n );\n}\n","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n return resolved?.res !== undefined;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n if (usingLegacyFormatFunction) {\n this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n }\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, {\n ...this.options,\n ...opts\n });\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, {\n ...this.options,\n ...opts\n });\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n return new I18n(options, callback);\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","/**\n * Get the redirect URL for a plugin based on its configuration and state.\n *\n * @param {Object} plugin The plugin object from API.\n * @param {boolean} forceOnboarding Whether to prioritize onboardingUrl for all plugins (default: false).\n * @returns {string} The resolved redirect path.\n */\nexport const getPluginRedirectUrl = (plugin, forceOnboarding = false) => {\n let redirectUrl = plugin.redirectUrl;\n\n const isRankMath = plugin.slug === 'seo-by-rank-math' || plugin.slug === 'seo-by-rank-math-pro';\n const hasOnboardingUrl = plugin.onboardingUrl && typeof plugin.onboardingUrl === 'string' && plugin.onboardingUrl.trim() !== '';\n\n if (isRankMath) {\n // Safe access to rankMathRegistrationSkip config\n const wpConfig = window.marketplaceConfig?.wpConfig;\n const rankMathRegistrationSkip = wpConfig ? wpConfig.rankMathRegistrationSkip === true : false;\n\n if (!rankMathRegistrationSkip && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n } else if (forceOnboarding && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n\n return redirectUrl;\n};\n\n/**\n * Navigates to the plugin's page in WordPress admin.\n *\n * @param {string} redirectPath The relative path to redirect to.\n */\nexport const navigateToPluginUrl = (redirectPath) => {\n if (redirectPath && redirectPath.trim() !== '') {\n // Get the admin URL from config (provided by PHP)\n const adminUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl;\n\n if (adminUrl) {\n // Construct full URL using adminUrl from PHP config\n // adminUrl is like \"https://example.com/wp-admin/\"\n // redirectUrl comes as \"wp-admin\\/admin.php?page=termly\" (JSON unescapes \\/ to /)\n // Strip \"wp-admin/\" prefix from redirectUrl if present to avoid duplication\n let cleanPath = redirectPath;\n if (cleanPath.startsWith('wp-admin/')) {\n cleanPath = cleanPath.substring('wp-admin/'.length);\n }\n const fullUrl = `${adminUrl}${cleanPath}`;\n window.location.href = fullUrl;\n } else {\n // Fallback: use window.location.origin if adminUrl not available\n const siteUrl = window.location.origin;\n const fullUrl = `${siteUrl}/${redirectPath}`;\n window.location.href = fullUrl;\n }\n return;\n }\n\n // Fallback to plugins page\n window.location.href = '/wp-admin/plugins.php';\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice } from \"../utils/priceFormatter\";\n\nexport default function FeaturedCarousel({ loading = false }) {\n const { plugins, assetsBaseUrl,uiI18n } = useMarketplace();\n const [currentIndex, setCurrentIndex] = useState(0);\n const [slidesPerView, setSlidesPerView] = useState(2);\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n useEffect(() => {\n const updateSlidesPerView = () => {\n if (window.innerWidth > 1024) {\n setSlidesPerView(2); // Desktop: show 2 slides\n } else if (window.innerWidth >= 600) {\n setSlidesPerView(1); // Tablet: show 2 slides\n } else {\n setSlidesPerView(1); // Mobile: show 1 slide\n }\n };\n\n updateSlidesPerView();\n window.addEventListener('resize', updateSlidesPerView);\n return () => window.removeEventListener('resize', updateSlidesPerView);\n }, []);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = (plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n };\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n // Filter featured plugins that are not active, pass rules check, and handle Rank Math logic\n const featuredPlugins = plugins.filter(plugin => {\n // Skip activated plugins\n if (plugin.activated === true || plugin.featured !== true) {\n return false;\n }\n\n // Handle Rank Math plugin visibility\n if (plugin.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n return !rankMathActivated && !rankMathProActivated && shouldShowPlugin(plugin);\n }\n\n if (plugin.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n return rankMathActivated && shouldShowPlugin(plugin);\n }\n\n // For all other plugins, apply normal filtering\n return shouldShowPlugin(plugin);\n }).sort((a, b) => {\n const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity;\n const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity;\n return orderA - orderB;\n });\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const totalSlides = featuredPlugins.length;\n const maxIndex = Math.max(0, totalSlides - slidesPerView);\n\n const goToPrevious = () => {\n if (currentIndex > 0) {\n setCurrentIndex(prev => prev - 1);\n }\n };\n\n const goToNext = () => {\n if (currentIndex < maxIndex) {\n setCurrentIndex(prev => prev + 1);\n }\n };\n\n // Show skeleton loaders while loading\n if (loading) {\n return (\n
\n
\n
\n
\n\n
\n \n {/* Generate 2 skeleton carousel slides */}\n {[...Array(slidesPerView)].map((_, index) => (\n \n
\n
\n {/* Badge skeleton */}\n
\n\n {/* Title skeleton */}\n
\n\n {/* Description skeletons */}\n
\n
\n
\n\n {/* Footer with button and price skeletons */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n \n \n
\n );\n }\n\n // If no featured plugins, don't render anything\n if (!featuredPlugins || featuredPlugins.length === 0) {\n return null;\n }\n\n const goToSlide = (index) => {\n setCurrentIndex(Math.min(index, maxIndex));\n };\n\n // Navigate to plugin detail page\n const handleReadMore = (plugin) => {\n if (typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, \"\", url.toString());\n\n // Dispatch custom event to notify app of navigation\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n\n return (\n
\n
\n
{uiI18n?.headings?.recommendedHeading}
\n
\n\n
\n \n {featuredPlugins.map((plugin, index) => {\n const title = plugin?.i18n?.featuredTitle;\n const description = plugin?.i18n?.featuredContent;\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract category name from plugin categories array\n const categoryObj = Array.isArray(plugin.categories) && plugin.categories.length\n ? (typeof plugin.categories[0] === 'object' ? plugin.categories[0] : { slug: String(plugin.categories[0]), title: String(plugin.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n const categoryName = categoryObj.title || categoryObj.slug || \"Others\";\n\n return (\n \n
\n \n
{plugin?.name}
\n
\n
\n \n {title}\n \n

\n {description?.trim()}\n

\n
\n\n
\n handleReadMore(plugin)}\n className=\"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0\"\n >\n {uiI18n?.featuredCta}\n \n\n \n {price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n
\n
\n
\n
\n \n \n \n \n
\n \n \n );\n })}\n \n \n\n {/* Navigation Controls: Arrows + Dots */}\n {totalSlides > slidesPerView && (\n \n \n \"Previous\"\n \n\n \n {Array.from({ length: maxIndex + 1 }).map((_, index) => (\n goToSlide(index)}\n className=\"gv-carousel-dot\"\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n border: 'none',\n background: currentIndex === index ? '#0066CC' : '#D0D0D0',\n cursor: 'pointer',\n padding: 0\n }}\n aria-label={`Go to slide ${index + 1}`}\n />\n ))}\n \n\n = maxIndex}\n className=\"gv-carousel-nav gv-carousel-nav-next\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: currentIndex >= maxIndex ? 'not-allowed' : 'pointer',\n opacity: currentIndex >= maxIndex ? 0.5 : 1\n }}\n aria-label=\"Next slide\"\n >\n \"Next\"\n \n \n )}\n
\n );\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function LoadingOverlay() {\n const { loadingAction, loadingPlugin, assetsBaseUrl } = useMarketplace();\n\n // Don't show overlay if no action is in progress\n if (!loadingAction) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const spinnerSrc = `${assetBase}assets/images/spinner.svg`;\n\n return (\n
\n
\n \n

{loadingAction}

\n
\n
\n );\n}\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function normalizePlugins(rawResponse) {\n // Support the new response shape:\n // { error: null, success: true, data: { catalog: [...], locale: \"...\", uiI18n: {...} } }\n\n if (!rawResponse || !rawResponse.data || !Array.isArray(rawResponse.data.catalog)) {\n // Log a clear error when the response is not supported\n // Keeping a minimal, non-crashing fallback of returning an empty object\n console.error(\"Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.\", rawResponse);\n return { plugins: [], uiI18n: {}, locale: null };\n }\n\n const items = rawResponse.data.catalog;\n const uiI18n = rawResponse.data.uiI18n || {};\n const locale = rawResponse.data.locale || null;\n\n if (items.length === 0) return { plugins: [], uiI18n, locale };\n\n // Map to normalized structure\n const normalized = items.map((plugin) => {\n // Prefer description coming from i18n.description, then fallback to description field\n const descriptionFromTextKeys = plugin?.i18n?.description;\n const description =\n (typeof descriptionFromTextKeys === \"string\" && descriptionFromTextKeys)\n ? descriptionFromTextKeys\n : (typeof plugin?.description === \"object\" && plugin.description !== null\n ? (plugin.description[\"en-gb\"] || Object.values(plugin.description)[0] || \"\")\n : (plugin?.description || \"\")\n );\n\n const download = plugin?.download || plugin?.download_url || plugin?.downloadUrl || \"\";\n\n // Author may be a string or an object { name, url }\n const authorName = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.name || \"\")\n : (plugin?.author || \"\");\n const authorUrl = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.url || \"\")\n : \"\";\n\n const priceAmount = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.amount\n : undefined;\n const priceCurrency = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.currency\n : undefined;\n\n return {\n ...plugin,\n name: plugin?.name || \"Unknown\",\n slug: plugin?.slug || \"\",\n thumbnail: plugin?.thumbnail || \"\",\n description,\n download,\n author: authorName,\n authorUrl,\n priceAmount,\n priceCurrency,\n installed: plugin?.installed ?? false,\n activated: plugin?.activated ?? false,\n i18n: plugin?.i18n || {},\n };\n });\n\n // Deduplicate by slug (first occurrence wins)\n const seen = new Set();\n const plugins = normalized.filter((p) => {\n const key = p.slug || p.name || JSON.stringify(p);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n\n return { plugins, uiI18n, locale };\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function SuccessNotice({ plugin }) {\n const {\n assetsBaseUrl,\n noticeState,\n setNoticeState,\n handlePluginAction,\n cancelReload,\n uiI18n\n } = useMarketplace();\n\n if (!noticeState || !noticeState.visible || noticeState.pluginSlug !== plugin?.slug) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n sessionStorage.removeItem('mp_success_notice');\n };\n\n const handleActivate = () => {\n handlePluginAction(\"activate\", plugin, 'product_detail');\n };\n\n const handleManage = () => {\n // Track the Get Started button click\n trackButtonClick({\n buttonName: 'Get started',\n buttonAction: 'manage_product',\n plugin: plugin,\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n // Cancel the scheduled reload since user is navigating manually\n cancelReload();\n\n const redirectUrl = getPluginRedirectUrl(plugin, true);\n navigateToPluginUrl(redirectUrl);\n };\n\n const isInstalled = noticeState.type === 'installed';\n const isActivated = noticeState.type === 'activated';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n \"Success\"\n
\n
\n {isInstalled && formatMessage(uiI18n?.notifications?.pluginInstalled || 'Plugin was installed.', pluginName)}\n {isActivated && formatMessage(uiI18n?.notifications?.pluginActivated || 'Plugin was activated.', pluginName)}\n
\n

\n {isInstalled && (uiI18n?.notifications?.activateNow || 'Activate it now to start using it.')}\n {isActivated && formatMessage(uiI18n?.notifications?.manageInMyProducts || '{0} plugin was activated for this site. You can manage it on the My products page.', pluginName)}\n

\n
\n {isInstalled && (\n \n {uiI18n?.activatePluginButton}\n \n )}\n {isActivated && (\n \n {uiI18n?.featuredCta || 'Get Started'}\n \n \n )}\n \n \n \n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice, getRebatePrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetail({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n {/* Breadcrumbs skeleton */}\n \n\n {/* Header skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Pricing / Action Section skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Key features skeleton */}\n
\n
\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n\n {/* Benefits skeleton */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [plugin.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract data with fallbacks\n const title = plugin.name || 'Product';\n const description = plugin.i18n?.description || plugin.i18n?.subtitle || plugin.description || plugin.shortDescription || 'No description available.';\n const subTitle = plugin.i18n?.subtitle;\n const isFree = plugin.licenseType === \"free\";\n const freeTrialText = plugin.i18n?.freeTrialText || '';\n const hasFreeTrialText = freeTrialText && freeTrialText.trim() !== '';\n const freeTrialPeriod = plugin.i18n?.freeTrialPeriod || '';\n const hasFreeTrialPeriod = freeTrialPeriod && freeTrialPeriod.trim() !== '';\n\n const price = (hasFreeTrialPeriod || hasFreeTrialText)\n ? (uiI18n?.headings?.freeTrial || 'Free trial*')\n : formatPluginPrice(plugin, uiI18n?.labels?.free || 'Free', uiI18n);\n\n // Check if price is \"Free until renewal\" (rebate amount is 0)\n const isFreeUntilRenewal = price === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full and rebate prices using common utility functions\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (keyBenefitContent1, keyBenefitContent2, etc.)\n const benefitsFromI18n = extractNumberedProps(plugin.i18n, 'keyBenefitContent');\n\n // Extract key features from i18n (keyFeatureContent1 through keyFeatureContent6)\n const keyFeaturesFromI18n = extractNumberedProps(plugin.i18n, 'keyFeatureContent');\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (plugin.i18n && typeof plugin.i18n === 'object') {\n let i = 1;\n while (plugin.i18n[`coreFeatureTitle${i}`] || plugin.i18n[`coreFeatureContent${i}`]) {\n const featureTitle = plugin.i18n[`coreFeatureTitle${i}`];\n const content = plugin.i18n[`coreFeatureContent${i}`];\n if (featureTitle && featureTitle.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: featureTitle, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const keyFeatures = keyFeaturesFromI18n;\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n\n
\n
\n

{title}

\n

{description}

\n {/*{plugin.author && (*/}\n {/*

*/}\n {/* Author: {plugin.authorUrl ? {plugin.author} : plugin.author}*/}\n {/*

*/}\n {/*)}*/}\n
\n
\n \n \n \n \n
\n
\n\n {/* Pricing / Action Section */}\n
\n
\n
\n
\n
\n
\n
\n

{title}

\n

{subTitle}

\n
\n
\n
\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n {price}\n ) : (\n <>\n \n {plugin.licenseType === \"premium\" && rebatePriceAmount !== null\n ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount)\n : price}\n \n {!isFree && !isFreeUntilRenewal && price && (\n /{uiI18n?.labels?.timeMonth}\n )}\n \n )}\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n
\n
{freeTrialText}
\n
\n ) : (\n !isFree && price && fullPriceAmount && rebatePriceAmount !== null &&\n
\n
{uiI18n.labels.untilRenewal} [{rebatePriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
{uiI18n.labels.afterThat} [{fullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
\n )}\n
\n {useWPHandlers ? (\n \n ) : (\n plugin.download && (\n \n Download\n \n )\n )}\n
\n
\n
\n
\n\n {keyFeatures.length > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || plugin.i18n?.keyFeatureHeading}

\n
\n
\n {keyFeatures.map((f, i) => (\n
\n
\n {f}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n\n {/* Details / Benefits */}\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {/* Core Features Overview */}\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\n}\n","import React, { useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function ErrorToast({ plugin: propPlugin }) {\n const {\n assetsBaseUrl,\n errorState,\n setErrorState,\n uiI18n,\n plugins\n } = useMarketplace();\n\n const plugin = propPlugin || plugins.find(p => p.slug === errorState.pluginSlug);\n const isVisible = errorState && errorState.visible && errorState.pluginSlug === plugin?.slug;\n\n useEffect(() => {\n if (isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, 5000);\n\n return () => clearTimeout(timer);\n }\n }, [isVisible]);\n\n if (!isVisible) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n const isActivateError = errorState.type === 'activate';\n const isDeactivateError = errorState.type === 'deactivate';\n const isInstallError = errorState.type === 'install';\n const isDeleteError = errorState.type === 'delete';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n
\n \n
\n {isActivateError && formatMessage(uiI18n?.notifications?.pluginActivationFailed || \"Couldn't activate plugin.\", pluginName)}\n {isDeactivateError && formatMessage(uiI18n?.notifications?.pluginDeactivationFailed || \"Couldn't deactivate plugin.\", pluginName)}\n {isInstallError && formatMessage(uiI18n?.notifications?.pluginInstallationFailed || \"Couldn't install plugin.\", pluginName)}\n {isDeleteError && formatMessage(uiI18n?.notifications?.pluginDeletionFailed || \"Couldn't delete plugin.\", pluginName)}\n
\n \n
\n
\n );\n }\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {normalizePlugins} from \"./normalised-plugins\";\nimport \"@group.one/gravity\";\nimport { useTranslation } from \"react-i18next\";\nimport ProductDetail from \"./ProductDetail\";\nimport ProductDetailRankMath from \"./ProductDetailRankMath\";\nimport ErrorState from \"./ErrorState\";\nimport WpVersionErrorState from \"./WpVersionErrorState\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getRebatePrice,getFullPrice } from \"../utils/priceFormatter\";\nimport { trackMarketplaceVisit, trackPluginDetailVisit, trackPageView } from \"../utils/mixpanelTracking\";\n\nexport default function Marketplace() {\n const {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported\n } = useMarketplace();\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n const [downloadingPlugins, setDownloadingPlugins] = useState({});\n const [selectedPlugin, setSelectedPlugin] = useState(null);\n\n // Use ref to track if plugins have already been fetched\n const hasFetchedPlugins = useRef(false);\n\n // Use ref to track if marketplace visit has been tracked (prevent duplicates)\n const hasTrackedMarketplaceVisit = useRef(false);\n\n // Use ref to track last tracked plugin detail to prevent duplicate tracking\n const lastTrackedPluginSlug = useRef(null);\n\n // Use ref to store timestamps for tracking\n const contentReceivedTimestamp = useRef(null);\n const contentRenderTimestamp = useRef(null);\n\n // Use ref to store is_cached flag from API response\n const isCachedRef = useRef(false);\n\n // Construct icon base URL with fallback logic\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Determine if a plugin slug is in the URL\n const pluginFromQuery = typeof window !== \"undefined\"\n ? new URLSearchParams(window.location.search).get(\"plugin\")\n : null;\n\n // Get base page URL (without plugin parameter)\n const getBaseUrl = () => {\n if (typeof window === \"undefined\") return \"\";\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n return url.toString();\n };\n\n\n // After plugins load, select plugin from query if present\n useEffect(() => {\n if (pluginFromQuery && plugins.length) {\n const match = plugins.find(p => p.slug === pluginFromQuery);\n if (match) setSelectedPlugin(match);\n } else if (!pluginFromQuery) {\n // Clear selectedPlugin when no plugin parameter in URL\n setSelectedPlugin(null);\n }\n }, [pluginFromQuery, plugins]);\n\n // Listen for browser back/forward navigation\n useEffect(() => {\n const handlePopState = () => {\n const currentPluginParam = new URLSearchParams(window.location.search).get(\"plugin\");\n if (!currentPluginParam) {\n // URL no longer has plugin parameter, clear selection\n setSelectedPlugin(null);\n } else if (plugins.length) {\n // URL has plugin parameter, update selection\n const match = plugins.find(p => p.slug === currentPluginParam);\n if (match) setSelectedPlugin(match);\n }\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [plugins]);\n\n const {t} = useTranslation();\n\n useEffect(() => {\n // Only fetch once\n if (hasFetchedPlugins.current) {\n return;\n }\n\n async function fetchPlugins() {\n try {\n hasFetchedPlugins.current = true;\n const res = await fetch(`${apiBaseUrl}`);\n const json = await res.json();\n\n // Capture timestamp when API content is received\n contentReceivedTimestamp.current = Date.now();\n\n // Extract is_cached flag from API response\n isCachedRef.current = json.is_cached || false;\n\n // Check for API error response (success: false)\n if (json && json.success === false) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n // Check for blank/empty response\n if (!json || !json.data || !json.data.catalog || (Array.isArray(json.data.catalog) && json.data.catalog.length === 0)) {\n console.error(\"API returned empty or blank response\");\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n const { plugins: normalizedPlugins, uiI18n: apiUiI18n } = normalizePlugins(json);\n setPlugins(normalizedPlugins);\n setUiI18n(apiUiI18n);\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n if (isOnecomBrand) {\n const specialPlugins = normalizedPlugins.filter(p => isSpecialPlugin(p.slug));\n\n // Fetch subscription status for each special plugin\n specialPlugins.forEach(plugin => {\n fetchSubscriptionStatus(plugin.slug);\n });\n }\n } catch (e) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n } finally {\n setCatalogLoading(false);\n }\n }\n\n fetchPlugins();\n }, [apiBaseUrl, isOnecomBrand, fetchSubscriptionStatus, setPlugins]);\n\n // Use useMemo to filter plugins based on rules and activation status\n const visiblePlugins = React.useMemo(() => {\n if (!plugins.length) return [];\n\n const bySlug = new Map();\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n plugins.forEach((p) => {\n // Skip if already in map or activated\n if (bySlug.has(p.slug) || p.activated === true) {\n return;\n }\n\n // Handle Rank Math plugin visibility\n if (p.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n if (!rankMathActivated && !rankMathProActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n if (p.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n if (rankMathActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n // Apply filtering based on rules\n if (shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n });\n\n return Array.from(bySlug.values());\n }, [plugins, shouldShowPlugin]);\n\n // Update allPluginsActivated in context whenever plugins change\n useEffect(() => {\n if (plugins.length > 0) {\n // If there are no plugins that should be visible (not activated and passing rules), then all are activated/hidden\n const allActivated = visiblePlugins.length === 0;\n setAllPluginsActivated(allActivated);\n }\n }, [plugins, visiblePlugins, setAllPluginsActivated]);\n\n // Track marketplace visit when plugins are loaded and no plugin detail is shown\n useEffect(() => {\n if (!catalogLoading && !catalogError && plugins.length > 0 && !pluginFromQuery && !hasTrackedMarketplaceVisit.current) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackMarketplaceVisit(contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n hasTrackedMarketplaceVisit.current = true;\n }\n }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]);\n\n // Track plugin detail page visit when selectedPlugin changes\n useEffect(() => {\n if (selectedPlugin && pluginFromQuery && lastTrackedPluginSlug.current !== selectedPlugin.slug) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackPluginDetailVisit(selectedPlugin, contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n lastTrackedPluginSlug.current = selectedPlugin.slug;\n }\n // Reset when returning to marketplace list\n if (!pluginFromQuery) {\n lastTrackedPluginSlug.current = null;\n }\n }, [selectedPlugin, pluginFromQuery]);\n\n const handleDownloadClick = (e, plugin) => {\n e.stopPropagation();\n\n // Set downloading state\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Reset after a short delay (download is triggered immediately)\n // The browser handles the actual download, so we simulate completion\n setTimeout(() => {\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: false }));\n }, 2000);\n };\n\n const openDetail = (plugin, e) => {\n // Debug to confirm click\n setSelectedPlugin(plugin);\n };\n\n\n\n // Helper function to determine if we should use ProductDetailRankMath\n const shouldUseRankMathDetail = (plugin) => {\n if (!plugin) return false;\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = plugin.slug === \"seo-by-rank-math-pro\" || plugin.slug === \"seo-by-rank-math\";\n return isOnecomBrand && isRankMathPlugin;\n };\n\n\n\n if (catalogLoading) {\n // If there's a plugin parameter in the URL, show appropriate skeleton based on plugin type\n if (pluginFromQuery) {\n // Determine if we should use RankMath detail component based on slug\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = pluginFromQuery === \"seo-by-rank-math-pro\" || pluginFromQuery === \"seo-by-rank-math\";\n const DetailComponent = (isOnecomBrand && isRankMathPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {}}\n usePortal={false}\n loading={true}\n />\n );\n }\n\n // Show catalog skeleton loaders while catalog is loading\n return (\n
\n
\n
\n
\n
\n {/* Generate first 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n\n {/* Additional skeleton loaders after 3 cards */}\n
\n
\n
\n\n\n {/* Generate remaining 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n );\n }\n\n // Show error state if API failed or returned error\n if (catalogError) {\n return ;\n }\n\n // Show WP version error state\n if (!isWpVersionSupported('6.2')) {\n return ;\n }\n\n // Early return: show full page detail instead of list\n if (selectedPlugin && pluginFromQuery) {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {\n // Return to listing (clear selection and URL)\n setSelectedPlugin(null);\n // Check if history.back() will work (has navigable history)\n if (typeof window !== \"undefined\" && window.history && window.history.length > 1) {\n window.history.back();\n } else {\n // In new-tab scenario, manually remove plugin parameter from URL\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n window.history.replaceState({}, '', url.toString());\n }\n }}\n usePortal={false}\n loading={catalogLoading}\n />\n );\n }\n\n // Group plugins by a single, specific category (first category), avoid duplicates across headings\n const categoryMap = new Map();\n\n visiblePlugins.forEach((p) => {\n // Handle new category object structure: { id, slug, title, description }\n const categoryObj = Array.isArray(p.categories) && p.categories.length\n ? (typeof p.categories[0] === 'object' ? p.categories[0] : { slug: String(p.categories[0]), title: String(p.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n\n const categoryKey = categoryObj.slug || categoryObj.title || \"Others\";\n\n if (!categoryMap.has(categoryKey)) {\n categoryMap.set(categoryKey, { info: categoryObj, plugins: [] });\n }\n categoryMap.get(categoryKey).plugins.push(p);\n });\n\n const categories = Array.from(categoryMap.entries()).filter(([catKey, { plugins: list }]) => list.length > 0);\n\n // If all plugins are activated, show the \"You've got all our plugins!\" message\n if (allPluginsActivated) {\n return (\n
\n
\n
{uiI18n?.notifications?.allPluginsOwned}
\n

{uiI18n?.text?.managePlugins}

\n {\n // Navigate to plugins page\n window.location.href = '/wp-admin/plugins.php';\n }}\n >\n {uiI18n.viewProductsButton}\n \n \n
\n
\n );\n }\n\n return (\n
\n {categories.map(([catKey, { info, plugins: list }]) => (\n
\n

{info.title || catKey}

\n {info.description &&

{info.description}

}\n
\n {list.map((plugin) => {\n const isProvisionable = shouldShowProvision(plugin);\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n return (\n {\n setSelectedPlugin(plugin);\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, '', url.toString());\n }}\n >\n
\n {plugin.name}\n
\n
\n
\n

{plugin.name}

\n

{plugin.i18n.listingDescription || plugin.i18n.subtitle}

\n \n <>\n {plugin.licenseType === \"premium\" && (rebatePriceAmount > 0) ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) : price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n \n
\n
\n
\n \n \n
\n\n
\n
\n );\n })}\n \n \n ))}\n {/* Remove overlay render (keep for non-query usage) */}\n {selectedPlugin && !pluginFromQuery && (() => {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n setSelectedPlugin(null)}\n loading={catalogLoading}\n />\n );\n })()}\n \n );\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\n// Import all translations\nimport en_GB from \"./locales/en_GB.json\";\nimport da_DK from \"./locales/da_DK.json\";\nimport de_DE from \"./locales/de_DE.json\";\nimport es_ES from \"./locales/es_ES.json\";\nimport fi_FI from \"./locales/fi_FI.json\";\nimport fr_FR from \"./locales/fr_FR.json\";\nimport it_IT from \"./locales/it_IT.json\";\nimport nl_NL from \"./locales/nl_NL.json\";\nimport no_NO from \"./locales/no_NO.json\";\nimport pt_PT from \"./locales/pt_PT.json\";\nimport sv_SE from \"./locales/sv_SE.json\";\n\nconst resources = {\n\ten_GB: { translation: en_GB },\n\tda_DK: { translation: da_DK },\n\tde_DE: { translation: de_DE },\n\tes_ES: { translation: es_ES },\n\tfi_FI: { translation: fi_FI },\n\tfr_FR: { translation: fr_FR },\n\tit_IT: { translation: it_IT },\n\tnl_NL: { translation: nl_NL },\n\tno_NO: { translation: no_NO },\n\tnb_NO: { translation: no_NO },\n\tpt_PT: { translation: pt_PT },\n\tsv_SE: { translation: sv_SE },\n\tfi: { translation: fi_FI },\n};\n\ni18n.use(initReactI18next).init({\n\tresources,\n\tlng: \"en_GB\", // default fallback\n\tfallbackLng: \"en_GB\",\n\tinterpolation: { escapeValue: false },\n});\n\nexport default i18n;\n","import React, { useState, useEffect } from \"react\";\nimport Marketplace from \"./components/MarketPlace\";\nimport ProductBanner from \"./components/ProductBanner\";\nimport FeaturedCarousel from \"./components/FeaturedCarousel\";\nimport LoadingOverlay from \"./components/LoadingOverlay\";\nimport { MarketplaceProvider, useMarketplace } from \"./context/MarketplaceContext\";\n\n// Inner component that can access the context\nconst MarketplaceContent = () => {\n const { allPluginsActivated, catalogError, catalogLoading, isWpVersionSupported } = useMarketplace();\n\n const isSupportedWpVersion = isWpVersionSupported('6.2');\n\n // Track detail page visibility with state\n const [isDetailPage, setIsDetailPage] = useState(\n typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\")\n );\n\n // Listen for URL changes (both popstate and custom events)\n useEffect(() => {\n const checkDetailPage = () => {\n const hasPlugin = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\");\n setIsDetailPage(!!hasPlugin);\n };\n\n // Listen for browser back/forward\n window.addEventListener('popstate', checkDetailPage);\n\n // Listen for programmatic URL changes (from pushState)\n const originalPushState = window.history.pushState;\n window.history.pushState = function(...args) {\n originalPushState.apply(this, args);\n checkDetailPage();\n };\n\n // Listen for programmatic URL changes (from replaceState)\n const originalReplaceState = window.history.replaceState;\n window.history.replaceState = function(...args) {\n originalReplaceState.apply(this, args);\n checkDetailPage();\n };\n\n return () => {\n window.removeEventListener('popstate', checkDetailPage);\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n };\n }, []);\n\n return (\n <>\n \n
\n
\n\n {!isDetailPage && !catalogError && isSupportedWpVersion && }\n {!isDetailPage && !allPluginsActivated && isSupportedWpVersion && }\n\n \n
\n
\n \n );\n};\n\nconst MarketplaceApp = ({ apiBaseUrl, useWPHandlers, wpConfig, enableDefaultStyles, assetsBaseUrl }) => {\n return (\n \n \n \n );\n};\n\nexport default MarketplaceApp;\n","module.exports = window[\"ReactDOM\"];","import React from 'react';\nimport { useMarketplace } from '../context/MarketplaceContext';\n\nconst ProductBanner = ({ loading = false }) => {\n const { assetsBaseUrl, uiI18n } = useMarketplace();\n const leftBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png';\n const rightBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png';\n\n return (\n
\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Left\n \n
\n )}\n
\n\n
\n {loading ? (\n <>\n
\n
\n
\n
\n \n ) : (\n <>\n

\n {uiI18n?.headings?.pageTitle}\n

\n

\n {uiI18n?.text?.pageContent}\n

\n \n )}\n
\n\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Product\n \n
\n )}\n
\n
\n );\n};\n\nexport default ProductBanner;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst promises = {};\nasync function fetchWithCache(url) {\n if (promises.hasOwnProperty(url)) {\n return promises[url];\n }\n let promise;\n if (url.startsWith(\"data:\") || !(\"caches\" in self)) {\n promise = fetch(url).then((r) => r.text());\n } else {\n promise = caches.open(\"gravity\").then(async (cache) => {\n let response = await cache.match(url);\n if (!response) {\n response = await fetch(url);\n if (response.ok) {\n await cache.put(url, response.clone());\n }\n }\n return response.text();\n });\n }\n promises[url] = promise;\n return promise;\n}\nclass GvFlagElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchFlag(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchFlag(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchFlag(newValue);\n }\n }\n}\n__publicField(GvFlagElement, \"TAG_NAME\", \"gv-flag\");\nclass GvIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIcon(newValue);\n }\n }\n}\n__publicField(GvIconElement, \"TAG_NAME\", \"gv-icon\");\nclass GvIllustrationElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIllustration(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIllustration(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIllustration(newValue);\n }\n }\n}\n__publicField(GvIllustrationElement, \"TAG_NAME\", \"gv-illustration\");\nclass GvIndicatorElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIndicator(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIndicator(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIndicator(newValue);\n }\n }\n}\n__publicField(GvIndicatorElement, \"TAG_NAME\", \"gv-indicator\");\nclass GvLoaderElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLoader(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLoader(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLoader(newValue);\n }\n }\n}\n__publicField(GvLoaderElement, \"TAG_NAME\", \"gv-loader\");\nclass GvLogoElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLogo(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLogo(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLogo(newValue);\n }\n }\n}\n__publicField(GvLogoElement, \"TAG_NAME\", \"gv-logo\");\nclass GvPayIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchPayIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchPayIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchPayIcon(newValue);\n }\n }\n}\n__publicField(GvPayIconElement, \"TAG_NAME\", \"gv-pay-icon\");\nclass GvTileElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchTile(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchTile(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchTile(newValue);\n }\n }\n}\n__publicField(GvTileElement, \"TAG_NAME\", \"gv-tile\");\nfunction defineCustomElement(tagName, elementClass) {\n if (!customElements.get(tagName)) {\n customElements.define(tagName, elementClass);\n }\n}\ndefineCustomElement(GvFlagElement.TAG_NAME, GvFlagElement);\ndefineCustomElement(GvIconElement.TAG_NAME, GvIconElement);\ndefineCustomElement(GvIllustrationElement.TAG_NAME, GvIllustrationElement);\ndefineCustomElement(GvIndicatorElement.TAG_NAME, GvIndicatorElement);\ndefineCustomElement(GvLoaderElement.TAG_NAME, GvLoaderElement);\ndefineCustomElement(GvLogoElement.TAG_NAME, GvLogoElement);\ndefineCustomElement(GvPayIconElement.TAG_NAME, GvPayIconElement);\ndefineCustomElement(GvTileElement.TAG_NAME, GvTileElement);\n","// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n crypto: {randomUUID: function() {throw Error('unsupported');}},\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _set_prototype_of(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function wrapNativeSuper(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class);\n };\n return _wrap_native_super(Class);\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) {\n return {\n done: true\n };\n }\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction _ts_values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = function(obj, key, value) {\n return key in obj ? __defProp$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1 = function(obj, key, value) {\n return __defNormalProp$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar _a;\nvar __defProp$1$1 = Object.defineProperty;\nvar __defNormalProp$1$1 = function(obj, key, value) {\n return key in obj ? __defProp$1$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1$1 = function(obj, key, value) {\n return __defNormalProp$1$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar NodeType$3 = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType$3 || {});\nvar testableAccessors$1 = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods$1 = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype$1 = {};\nvar isAngularZonePresent$1 = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1,\n patch: patch$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n var hostEl = // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null;\n return Boolean(hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2);\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, \" -webkit-background-clip: text; background-clip: text;\");\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n var cssText = rule2.cssText;\n if (cssText.split('\"').length < 3) return cssText;\n var statement = [\n \"@import\",\n \"url(\" + JSON.stringify(rule2.href) + \")\"\n ];\n if (rule2.layerName === \"\") {\n statement.push(\"layer\");\n } else if (rule2.layerName) {\n statement.push(\"layer(\" + rule2.layerName + \")\");\n }\n if (rule2.supportsText) {\n statement.push(\"supports(\" + rule2.supportsText + \")\");\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n var rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n var sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n var stringifiedRules = Array.from(rules2, function(rule2) {\n return stringifyRule(rule2, sheetHref);\n }).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n var importStringified;\n try {\n importStringified = // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n var ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n var regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nvar Mirror = /*#__PURE__*/ function() {\n function Mirror() {\n __publicField$1$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n };\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror;\n}();\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue(param) {\n var element = param.element, maskInputOptions = param.maskInputOptions, tagName = param.tagName, type = param.type, value = param.value, maskInputFn = param.maskInputFn;\n var text = value || \"\";\n var actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nvar ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n var chunkSize = 50;\n for(var x2 = 0; x2 < canvas.width; x2 += chunkSize){\n for(var y = 0; y < canvas.height; y += chunkSize){\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n var pixelBuffer = new Uint32Array(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function(pixel) {\n return pixel !== 0;\n })) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n var type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n var url;\n try {\n url = new URL(path, baseURL != null ? baseURL : window.location.href);\n } catch (err) {\n return null;\n }\n var regex = /\\.([0-9a-z]+)(?:$)/i;\n var match = url.pathname.match(regex);\n var _ref;\n return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null;\n}\nfunction extractOrigin(url) {\n var origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nvar URL_WWW_MATCH = /^www\\..*/i;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (DATA_URI.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (filePath[0] === \"/\") {\n return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n }\n var stack = href.split(\"/\");\n var parts = filePath.split(\"/\");\n stack.pop();\n for(var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;){\n var part = _step.value;\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join(\"/\") + maybeQuote + \")\";\n });\n}\nfunction normalizeCssString(cssText, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n var childNodes2 = Array.from(style.childNodes);\n var splits = [];\n var iterCount = 0;\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n var cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n var normFactor = cssTextNorm.length / cssText.length;\n for(var i2 = 1; i2 < childNodes2.length; i2++){\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n var textContentNorm = normalizeCssString(childNodes2[i2].textContent, _testNoPxNorm);\n var jLimit = 100;\n var j = 3;\n for(; j < textContentNorm.length; j++){\n if (// keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1) {\n continue;\n }\n break;\n }\n for(; j < textContentNorm.length; j++){\n var startSubstring = textContentNorm.substring(0, j);\n var cssNormSplits = cssTextNorm.split(startSubstring);\n var splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i2 - 1].textContent !== \"\") {\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n startSubstring = startSubstring.substring(0, startSubstring.length - 1);\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1;\n } else if (j === textContentNorm.length - 1) {\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n var prevTextContent = childNodes2[i2 - 1].textContent;\n if (prevTextContent && typeof prevTextContent === \"string\") {\n var prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n var k = Math.floor(splitNorm / normFactor);\n for(; k > 0 && k < cssText.length;){\n iterCount += 1;\n if (iterCount > 50 * childNodes2.length) {\n splits.push(cssText);\n return splits;\n }\n var normPart = normalizeCssString(cssText.substring(0, k), _testNoPxNorm);\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(1, Math.floor((splitNorm - normPart.length) / normFactor));\n } else {\n k -= Math.max(1, Math.floor((normPart.length - splitNorm) * normFactor));\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nvar _id = 1;\nvar tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (_instanceof(element, HTMLFormElement)) {\n return \"form\";\n }\n var processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nvar canvasService;\nvar canvasCtx;\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars2;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n var output = [];\n while(true){\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n var descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while(true){\n var c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nvar cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n var a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for(var eIndex = element.classList.length; eIndex--;){\n var className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {}\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for(var eIndex = node2.classList.length; eIndex--;){\n var className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n var el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(\".\" + maskTextClass)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {}\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n var fired = false;\n var styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, needsMask = options.needsMask, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var rootId = getRootId(doc, mirror2);\n switch(n2.nodeType){\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId: rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n rootId: rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc: doc,\n needsMask: needsMask,\n maskTextFn: maskTextFn,\n rootId: rootId,\n cssCaptured: cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId: rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n var docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n var needsMask = options.needsMask, maskTextFn = options.maskTextFn, rootId = options.rootId, cssCaptured = options.cssCaptured;\n var parent = index$1.parentNode(n2);\n var parentTagName = parent && parent.tagName;\n var textContent2 = \"\";\n var isStyle = parentTagName === \"STYLE\" ? true : void 0;\n var isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId: rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, rootId = options.rootId;\n var needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n var tagName = getValidTagName$1(n2);\n var attributes = {};\n var len = n2.attributes.length;\n for(var i2 = 0; i2 < len; i2++){\n var attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function(s2) {\n return s2.href === n2.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n var cssText1 = stringifyStylesheet(n2.sheet);\n if (cssText1) {\n if (n2.childNodes.length > 1) {\n cssText1 = markCssSplits(cssText1, n2);\n }\n attributes._cssText = cssText1;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n var value = n2.value;\n var checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n } else if (!(\"__context\" in n2)) {\n var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n var image = n2;\n var imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n var priorCrossOrigin = image.crossOrigin;\n var recordInlineImage = function() {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\"Cannot inline img src=\" + imageSrc + \"! Error: \" + err);\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n var mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n var _n2_getBoundingClientRect = n2.getBoundingClientRect(), width = _n2_getBoundingClientRect.width, height = _n2_getBoundingClientRect.height;\n attributes = {\n class: attributes.class,\n rr_width: \"\" + width + \"px\",\n rr_height: \"\" + height + \"px\"\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n var isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {}\n return {\n type: NodeType$3.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock: needBlock,\n rootId: rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _options_iframeLoadTimeout = options.iframeLoadTimeout, iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout, onStylesheetLoad = options.onStylesheetLoad, _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var needsMask = options.needsMask;\n var _options_preserveWhiteSpace = options.preserveWhiteSpace, preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace;\n if (!needsMask) {\n var checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, checkAncestors);\n }\n var _serializedNode = serializeNode(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n cssCaptured: cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n var id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, {\n id: id\n });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n var shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl)) serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;){\n var childN = _step.value;\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n var shadowRootEl1 = null;\n if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;){\n var childN1 = _step1.value;\n var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions);\n if (serializedChildNode1) {\n isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode1);\n }\n }\n }\n }\n var parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(n2, function() {\n var iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n2, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(n2, function() {\n if (onStylesheetLoad) {\n var serializedLinkNode = serializeNodeWithId(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n2, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n var _ref = options || {}, tmp = _ref.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp, _ref_blockClass = _ref.blockClass, blockClass = _ref_blockClass === void 0 ? \"rr-block\" : _ref_blockClass, _ref_blockSelector = _ref.blockSelector, blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector, _ref_maskTextClass = _ref.maskTextClass, maskTextClass = _ref_maskTextClass === void 0 ? \"rr-mask\" : _ref_maskTextClass, _ref_maskTextSelector = _ref.maskTextSelector, maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector, _ref_inlineStylesheet = _ref.inlineStylesheet, inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet, _ref_inlineImages = _ref.inlineImages, inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages, _ref_recordCanvas = _ref.recordCanvas, recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas, _ref_maskAllInputs = _ref.maskAllInputs, maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs, maskTextFn = _ref.maskTextFn, maskInputFn = _ref.maskInputFn, _ref_slimDOM = _ref.slimDOM, slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM, dataURLOptions = _ref.dataURLOptions, preserveWhiteSpace = _ref.preserveWhiteSpace, onSerialize = _ref.onSerialize, onIframeLoad = _ref.onIframeLoad, iframeLoadTimeout = _ref.iframeLoadTimeout, onStylesheetLoad = _ref.onStylesheetLoad, stylesheetLoadTimeout = _ref.stylesheetLoadTimeout, _ref_keepIframeSrcFn = _ref.keepIframeSrcFn, keepIframeSrcFn = _ref_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _ref_keepIframeSrcFn;\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n } : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = {\n exports: {}\n};\nvar x$1 = String;\nvar create$1 = function create$1() {\n return {\n isColorSupported: false,\n reset: x$1,\n bold: x$1,\n dim: x$1,\n italic: x$1,\n underline: x$1,\n inverse: x$1,\n hidden: x$1,\n strikethrough: x$1,\n black: x$1,\n red: x$1,\n green: x$1,\n yellow: x$1,\n blue: x$1,\n magenta: x$1,\n cyan: x$1,\n white: x$1,\n gray: x$1,\n bgBlack: x$1,\n bgRed: x$1,\n bgGreen: x$1,\n bgYellow: x$1,\n bgBlue: x$1,\n bgMagenta: x$1,\n bgCyan: x$1,\n bgWhite: x$1\n };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nvar __viteBrowserExternal$2 = {};\nvar __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar pico$1 = picocolors_browserExports$1;\nvar terminalHighlight$1$1 = require$$2$1;\nvar CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError, Error1);\n function CssSyntaxError(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError);\n }\n return _this;\n }\n var _proto = CssSyntaxError.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico$1_createColors = pico$1.createColors(true), bold = _pico$1_createColors.bold, gray = _pico$1_createColors.gray, red = _pico$1_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError;\n}(_wrap_native_super(Error));\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nvar DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2$1 = /*#__PURE__*/ function() {\n function Stringifier(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier;\n}();\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nvar Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n var str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nvar isClean$2$1 = symbols$1.isClean, my$2$1 = symbols$1.my;\nvar CssSyntaxError$2$1 = cssSyntaxError$1;\nvar Stringifier2$1 = stringifier$1;\nvar stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode$1(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4$1 = /*#__PURE__*/ function() {\n function Node2(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node2.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode$1(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2$1(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2$1] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3$1;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node2, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node2;\n}();\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nvar Node$3$1 = node$1;\nvar Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) {\n _inherits(Declaration, Node$3$1);\n function Declaration(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3$1.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration;\n}(Node$3$1);\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nvar urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = {\n nanoid: nanoid$1$1\n};\nvar SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator;\nvar existsSync$1 = require$$2$1.existsSync, readFileSync$1 = require$$2$1.readFileSync;\nvar dirname$1$1 = require$$2$1.dirname, join$1 = require$$2$1.join;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2$1 = /*#__PURE__*/ function() {\n function PreviousMap(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2$1)) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2$1)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join$1(dirname$1$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap;\n}();\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nvar SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator;\nvar fileURLToPath$1 = require$$2$1.fileURLToPath, pathToFileURL$1$1 = require$$2$1.pathToFileURL;\nvar isAbsolute$1 = require$$2$1.isAbsolute, resolve$1$1 = require$$2$1.resolve;\nvar nanoid$2 = nonSecure$1.nanoid;\nvar terminalHighlight$2 = require$$2$1;\nvar CssSyntaxError$1$1 = cssSyntaxError$1;\nvar PreviousMap$1$1 = previousMap$1;\nvar fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nvar pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nvar Input$4$1 = /*#__PURE__*/ function() {\n function Input(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n var map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input;\n}();\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nvar SourceMapConsumer$3 = require$$2$1.SourceMapConsumer, SourceMapGenerator$3 = require$$2$1.SourceMapGenerator;\nvar dirname$2 = require$$2$1.dirname, relative$1 = require$$2$1.relative, resolve$2 = require$$2$1.resolve, sep$1 = require$$2$1.sep;\nvar pathToFileURL$2 = require$$2$1.pathToFileURL;\nvar Input$3$1 = input$1;\nvar sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nvar pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nvar MapGenerator$2$1 = /*#__PURE__*/ function() {\n function MapGenerator(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname$2(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n var path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n var fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator;\n}();\nvar mapGenerator$1 = MapGenerator$2$1;\nvar Node$2$1 = node$1;\nvar Comment$4$1 = /*#__PURE__*/ function(Node$2$1) {\n _inherits(Comment, Node$2$1);\n function Comment(defaults) {\n var _this;\n _this = Node$2$1.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment;\n}(Node$2$1);\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nvar isClean$1$1 = symbols$1.isClean, my$1$1 = symbols$1.my;\nvar Declaration$3$1 = declaration$1;\nvar Comment$3$1 = comment$1;\nvar Node$1$1 = node$1;\nvar parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp$1(i2);\n }\n }\n}\nvar Container$7$1 = /*#__PURE__*/ function(Node$1$1) {\n _inherits(Container, Node$1$1);\n function Container() {\n return Node$1$1.apply(this, arguments) || this;\n }\n var _proto = Container.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3$1(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4$1(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4$1(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3$1(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container;\n}(Node$1$1);\nContainer$7$1.registerParse = function(dependant) {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = function(dependant) {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = function(dependant) {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = function(dependant) {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7$1.rebuild(child);\n });\n }\n};\nvar Container$6$1 = container$1;\nvar LazyResult$4$1, Processor$3$1;\nvar Document$3$1 = /*#__PURE__*/ function(Container$6$1) {\n _inherits(Document2, Container$6$1);\n function Document2(defaults) {\n var _this;\n _this = Container$6$1.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document2.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n };\n return Document2;\n}(Container$6$1);\nDocument$3$1.registerLazyResult = function(dependant) {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = function(dependant) {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nvar printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2$1 = /*#__PURE__*/ function() {\n function Warning(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning;\n}();\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nvar Warning$1$1 = warning$1;\nvar Result$3$1 = /*#__PURE__*/ function() {\n function Result(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result;\n}();\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nvar SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nvar BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nvar SLASH$1 = \"/\".charCodeAt(0);\nvar NEWLINE$1 = \"\\n\".charCodeAt(0);\nvar SPACE$1 = \" \".charCodeAt(0);\nvar FEED$1 = \"\\f\".charCodeAt(0);\nvar TAB$1 = \"\t\".charCodeAt(0);\nvar CR$1 = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nvar OPEN_CURLY$1 = \"{\".charCodeAt(0);\nvar CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nvar SEMICOLON$1 = \";\".charCodeAt(0);\nvar ASTERISK$1 = \"*\".charCodeAt(0);\nvar COLON$1 = \":\".charCodeAt(0);\nvar AT$1 = \"@\".charCodeAt(0);\nvar RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES$1:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1:\n {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT$1:\n {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH$1:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH$1){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE$1.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5$1 = container$1;\nvar AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) {\n _inherits(AtRule, Container$5$1);\n function AtRule(defaults) {\n var _this;\n _this = Container$5$1.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule;\n}(Container$5$1);\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nvar Container$4$1 = container$1;\nvar LazyResult$3$1, Processor$2$1;\nvar Root$5$1 = /*#__PURE__*/ function(Container$4$1) {\n _inherits(Root, Container$4$1);\n function Root(defaults) {\n var _this;\n _this = Container$4$1.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4$1.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4$1.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n };\n return Root;\n}(Container$4$1);\nRoot$5$1.registerLazyResult = function(dependant) {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = function(dependant) {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nvar list$2$1 = {\n comma: function comma(string) {\n return list$2$1.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2$1.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nvar Container$3$1 = container$1;\nvar list$1$1 = list_1$1;\nvar Rule$3$1 = /*#__PURE__*/ function(Container$3$1) {\n _inherits(Rule, Container$3$1);\n function Rule(defaults) {\n var _this;\n _this = Container$3$1.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule;\n}(Container$3$1);\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nvar Declaration$2$1 = declaration$1;\nvar tokenizer2$1 = tokenize$1;\nvar Comment$2$1 = comment$1;\nvar AtRule$2$1 = atRule$1;\nvar Root$4$1 = root$1;\nvar Rule$2$1 = rule$1;\nvar SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1$1 = /*#__PURE__*/ function() {\n function Parser(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser;\n}();\nvar parser$1 = Parser$1$1;\nvar Container$2$1 = container$1;\nvar Parser2$1 = parser$1;\nvar Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n var input2 = new Input$2$1(css, opts);\n var parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nvar isClean$3 = symbols$1.isClean, my$3 = symbols$1.my;\nvar MapGenerator$1$1 = mapGenerator$1;\nvar stringify$2$1 = stringify_1$1;\nvar Container$1$1 = container$1;\nvar Document$2$1 = document$1$1;\nvar warnOnce$1$1 = warnOnce$2$1;\nvar Result$2$1 = result$1;\nvar parse$2$1 = parse_1$1;\nvar Root$3$1 = root$1;\nvar TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN$1,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack$1(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN$1,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN$1,\n \"RootExit\"\n ];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks$1(i2);\n });\n return node2;\n}\nvar postcss$2$1 = {};\nvar LazyResult$2$1 = /*#__PURE__*/ function() {\n function LazyResult(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (_instanceof(css, LazyResult) || _instanceof(css, Result$2$1)) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2$1, {\n postcss: postcss$2$1,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS$1[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise$1(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean$3]) return [\n 3,\n 14\n ];\n root2[isClean$3] = true;\n stack = [\n toStack$1(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise$1(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean$3]){\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean$3] = true;\n var events = getEvents$1(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean$3]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult;\n}();\nLazyResult$2$1.registerPostcss = function(dependant) {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nvar MapGenerator2$1 = mapGenerator$1;\nvar stringify$1$1 = stringify_1$1;\nvar warnOnce2$1 = warnOnce$2$1;\nvar parse$1$1 = parse_1$1;\nvar Result$1$1 = result$1;\nvar NoWorkResult$1$1 = /*#__PURE__*/ function() {\n function NoWorkResult(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult;\n}();\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nvar NoWorkResult2$1 = noWorkResult$1;\nvar LazyResult$1$1 = lazyResult$1;\nvar Document$1$1 = document$1$1;\nvar Root$2$1 = root$1;\nvar Processor$1$1 = /*#__PURE__*/ function() {\n function Processor(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor;\n}();\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nvar Declaration$1$1 = declaration$1;\nvar PreviousMap2$1 = previousMap$1;\nvar Comment$1$1 = comment$1;\nvar AtRule$1$1 = atRule$1;\nvar Input$1$1 = input$1;\nvar Root$1$1 = root$1;\nvar Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap2$1.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nvar CssSyntaxError2$1 = cssSyntaxError$1;\nvar Declaration2$1 = declaration$1;\nvar LazyResult2$1 = lazyResult$1;\nvar Container2$1 = container$1;\nvar Processor2$1 = processor$1;\nvar stringify$5 = stringify_1$1;\nvar fromJSON$2 = fromJSON_1$1;\nvar Document22 = document$1$1;\nvar Warning2$1 = warning$1;\nvar Comment2$1 = comment$1;\nvar AtRule2$1 = atRule$1;\nvar Result2$1 = result$1;\nvar Input2$1 = input$1;\nvar parse$5 = parse_1$1;\nvar list$3 = list_1$1;\nvar Rule2$1 = rule$1;\nvar Root2$1 = root$1;\nvar Node2$1 = node$1;\nfunction postcss$3() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = function(defaults) {\n return new Comment2$1(defaults);\n};\npostcss$3.atRule = function(defaults) {\n return new AtRule2$1(defaults);\n};\npostcss$3.decl = function(defaults) {\n return new Declaration2$1(defaults);\n};\npostcss$3.rule = function(defaults) {\n return new Rule2$1(defaults);\n};\npostcss$3.root = function(defaults) {\n return new Root2$1(defaults);\n};\npostcss$3.document = function(defaults) {\n return new Document22(defaults);\n};\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nvar postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = function(obj, key, value) {\n return key in obj ? __defProp2(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField2 = function(obj, key, value) {\n return __defNormalProp2(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = {\n exports: {}\n};\nvar x = String;\nvar create = function create() {\n return {\n isColorSupported: false,\n reset: x,\n bold: x,\n dim: x,\n italic: x,\n underline: x,\n inverse: x,\n hidden: x,\n strikethrough: x,\n black: x,\n red: x,\n green: x,\n yellow: x,\n blue: x,\n magenta: x,\n cyan: x,\n white: x,\n gray: x,\n bgBlack: x,\n bgRed: x,\n bgGreen: x,\n bgYellow: x,\n bgBlue: x,\n bgMagenta: x,\n bgCyan: x,\n bgWhite: x\n };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nvar __viteBrowserExternal = {};\nvar __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar pico = picocolors_browserExports;\nvar terminalHighlight$1 = require$$2;\nvar CssSyntaxError$3 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError2, Error1);\n function CssSyntaxError2(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError2);\n }\n return _this;\n }\n var _proto = CssSyntaxError2.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico_createColors = pico.createColors(true), bold = _pico_createColors.bold, gray = _pico_createColors.gray, red = _pico_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError2;\n}(_wrap_native_super(Error));\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nvar DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2 = /*#__PURE__*/ function() {\n function Stringifier2(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier2.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier2;\n}();\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nvar Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n var str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nvar isClean$2 = symbols.isClean, my$2 = symbols.my;\nvar CssSyntaxError$2 = cssSyntaxError;\nvar Stringifier22 = stringifier;\nvar stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4 = /*#__PURE__*/ function() {\n function Node3(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node3.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node3, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node3;\n}();\nvar node = Node$4;\nNode$4.default = Node$4;\nvar Node$3 = node;\nvar Declaration$4 = /*#__PURE__*/ function(Node$3) {\n _inherits(Declaration2, Node$3);\n function Declaration2(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration2, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration2;\n}(Node$3);\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = {\n nanoid: nanoid$1\n};\nvar SourceMapConsumer$2 = require$$2.SourceMapConsumer, SourceMapGenerator$2 = require$$2.SourceMapGenerator;\nvar existsSync = require$$2.existsSync, readFileSync = require$$2.readFileSync;\nvar dirname$1 = require$$2.dirname, join = require$$2.join;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2 = /*#__PURE__*/ function() {\n function PreviousMap2(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap2.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2)) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join(dirname$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap2;\n}();\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nvar SourceMapConsumer$1 = require$$2.SourceMapConsumer, SourceMapGenerator$1 = require$$2.SourceMapGenerator;\nvar fileURLToPath = require$$2.fileURLToPath, pathToFileURL$1 = require$$2.pathToFileURL;\nvar isAbsolute = require$$2.isAbsolute, resolve$1 = require$$2.resolve;\nvar nanoid = nonSecure.nanoid;\nvar terminalHighlight = require$$2;\nvar CssSyntaxError$1 = cssSyntaxError;\nvar PreviousMap$1 = previousMap;\nvar fromOffsetCache = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nvar pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nvar Input$4 = /*#__PURE__*/ function() {\n function Input2(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n var map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input2.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input2, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input2;\n}();\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nvar SourceMapConsumer = require$$2.SourceMapConsumer, SourceMapGenerator = require$$2.SourceMapGenerator;\nvar dirname = require$$2.dirname, relative = require$$2.relative, resolve$3 = require$$2.resolve, sep = require$$2.sep;\nvar pathToFileURL = require$$2.pathToFileURL;\nvar Input$3 = input;\nvar sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nvar pathAvailable = Boolean(dirname && resolve$3 && relative && sep);\nvar MapGenerator$2 = /*#__PURE__*/ function() {\n function MapGenerator2(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator2.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve$3(from, this.mapOpts.annotation));\n }\n var path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n var fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator2;\n}();\nvar mapGenerator = MapGenerator$2;\nvar Node$2 = node;\nvar Comment$4 = /*#__PURE__*/ function(Node$2) {\n _inherits(Comment2, Node$2);\n function Comment2(defaults) {\n var _this;\n _this = Node$2.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment2;\n}(Node$2);\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nvar isClean$1 = symbols.isClean, my$1 = symbols.my;\nvar Declaration$3 = declaration;\nvar Comment$3 = comment;\nvar Node$1 = node;\nvar parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp(i2);\n }\n }\n}\nvar Container$7 = /*#__PURE__*/ function(Node$1) {\n _inherits(Container2, Node$1);\n function Container2() {\n return Node$1.apply(this, arguments) || this;\n }\n var _proto = Container2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container2, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container2;\n}(Node$1);\nContainer$7.registerParse = function(dependant) {\n parse$4 = dependant;\n};\nContainer$7.registerRule = function(dependant) {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = function(dependant) {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = function(dependant) {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7.rebuild(child);\n });\n }\n};\nvar Container$6 = container;\nvar LazyResult$4, Processor$3;\nvar Document$3 = /*#__PURE__*/ function(Container$6) {\n _inherits(Document23, Container$6);\n function Document23(defaults) {\n var _this;\n _this = Container$6.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document23.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n };\n return Document23;\n}(Container$6);\nDocument$3.registerLazyResult = function(dependant) {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = function(dependant) {\n Processor$3 = dependant;\n};\nvar document$1$2 = Document$3;\nDocument$3.default = Document$3;\nvar printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2 = /*#__PURE__*/ function() {\n function Warning2(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning2.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning2;\n}();\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nvar Warning$1 = warning;\nvar Result$3 = /*#__PURE__*/ function() {\n function Result2(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result2.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result2, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result2;\n}();\nvar result = Result$3;\nResult$3.default = Result$3;\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = \"\\\\\".charCodeAt(0);\nvar SLASH = \"/\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar SPACE = \" \".charCodeAt(0);\nvar FEED = \"\\f\".charCodeAt(0);\nvar TAB = \"\t\".charCodeAt(0);\nvar CR = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES = \")\".charCodeAt(0);\nvar OPEN_CURLY = \"{\".charCodeAt(0);\nvar CLOSE_CURLY = \"}\".charCodeAt(0);\nvar SEMICOLON = \";\".charCodeAt(0);\nvar ASTERISK = \"*\".charCodeAt(0);\nvar COLON = \":\".charCodeAt(0);\nvar AT = \"@\".charCodeAt(0);\nvar RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT:\n {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5 = container;\nvar AtRule$3 = /*#__PURE__*/ function(Container$5) {\n _inherits(AtRule2, Container$5);\n function AtRule2(defaults) {\n var _this;\n _this = Container$5.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule2;\n}(Container$5);\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nvar Container$4 = container;\nvar LazyResult$3, Processor$2;\nvar Root$5 = /*#__PURE__*/ function(Container$4) {\n _inherits(Root2, Container$4);\n function Root2(defaults) {\n var _this;\n _this = Container$4.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root2.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n };\n return Root2;\n}(Container$4);\nRoot$5.registerLazyResult = function(dependant) {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = function(dependant) {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nvar list$2 = {\n comma: function comma(string) {\n return list$2.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nvar Container$3 = container;\nvar list$1 = list_1;\nvar Rule$3 = /*#__PURE__*/ function(Container$3) {\n _inherits(Rule2, Container$3);\n function Rule2(defaults) {\n var _this;\n _this = Container$3.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule2, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule2;\n}(Container$3);\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nvar Declaration$2 = declaration;\nvar tokenizer22 = tokenize;\nvar Comment$2 = comment;\nvar AtRule$2 = atRule;\nvar Root$4 = root;\nvar Rule$2 = rule;\nvar SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1 = /*#__PURE__*/ function() {\n function Parser2(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser2.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser2;\n}();\nvar parser = Parser$1;\nvar Container$2 = container;\nvar Parser22 = parser;\nvar Input$2 = input;\nfunction parse$3(css, opts) {\n var input2 = new Input$2(css, opts);\n var parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nvar isClean = symbols.isClean, my = symbols.my;\nvar MapGenerator$1 = mapGenerator;\nvar stringify$2 = stringify_1;\nvar Container$1 = container;\nvar Document$2 = document$1$2;\nvar warnOnce$1 = warnOnce$2;\nvar Result$2 = result;\nvar parse$2 = parse_1;\nvar Root$3 = root;\nvar TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN = 0;\nfunction isPromise(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN,\n \"RootExit\"\n ];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks(i2);\n });\n return node2;\n}\nvar postcss$2 = {};\nvar LazyResult$2 = /*#__PURE__*/ function() {\n function LazyResult2(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (_instanceof(css, LazyResult2) || _instanceof(css, Result$2)) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2, {\n postcss: postcss$2,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean]) return [\n 3,\n 14\n ];\n root2[isClean] = true;\n stack = [\n toStack(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean]){\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean] = true;\n var events = getEvents(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult2;\n}();\nLazyResult$2.registerPostcss = function(dependant) {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nvar MapGenerator22 = mapGenerator;\nvar stringify$1 = stringify_1;\nvar warnOnce22 = warnOnce$2;\nvar parse$1 = parse_1;\nvar Result$1 = result;\nvar NoWorkResult$1 = /*#__PURE__*/ function() {\n function NoWorkResult2(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult2;\n}();\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nvar NoWorkResult22 = noWorkResult;\nvar LazyResult$1 = lazyResult;\nvar Document$1 = document$1$2;\nvar Root$2 = root;\nvar Processor$1 = /*#__PURE__*/ function() {\n function Processor2(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor2.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor2;\n}();\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nvar Declaration$1 = declaration;\nvar PreviousMap22 = previousMap;\nvar Comment$1 = comment;\nvar AtRule$1 = atRule;\nvar Input$1 = input;\nvar Root$1 = root;\nvar Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap22.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nvar CssSyntaxError22 = cssSyntaxError;\nvar Declaration22 = declaration;\nvar LazyResult22 = lazyResult;\nvar Container22 = container;\nvar Processor22 = processor;\nvar stringify$6 = stringify_1;\nvar fromJSON = fromJSON_1;\nvar Document222 = document$1$2;\nvar Warning22 = warning;\nvar Comment22 = comment;\nvar AtRule22 = atRule;\nvar Result22 = result;\nvar Input22 = input;\nvar parse = parse_1;\nvar list = list_1;\nvar Rule22 = rule;\nvar Root22 = root;\nvar Node22 = node;\nfunction postcss() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify$6;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = function(defaults) {\n return new Comment22(defaults);\n};\npostcss.atRule = function(defaults) {\n return new AtRule22(defaults);\n};\npostcss.decl = function(defaults) {\n return new Declaration22(defaults);\n};\npostcss.rule = function(defaults) {\n return new Rule22(defaults);\n};\npostcss.root = function(defaults) {\n return new Root22(defaults);\n};\npostcss.document = function(defaults) {\n return new Document222(defaults);\n};\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nvar postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar BaseRRNode = /*#__PURE__*/ function() {\n function BaseRRNode() {\n for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n _args[_key] = arguments[_key];\n }\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n var _proto = BaseRRNode.prototype;\n _proto.contains = function contains(node2) {\n if (!_instanceof(node2, BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while(node2.parentNode){\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.appendChild = function appendChild(_newChild) {\n throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.insertBefore = function insertBefore(_newChild, _refChild) {\n throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.removeChild = function removeChild(_node) {\n throw new Error(\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n _proto.toString = function toString() {\n return \"RRNode\";\n };\n _create_class(BaseRRNode, [\n {\n key: \"childNodes\",\n get: function get() {\n var childNodes2 = [];\n var childIterator = this.firstChild;\n while(childIterator){\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n }\n ]);\n return BaseRRNode;\n}();\nvar testableAccessors = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype = {};\nvar isAngularZonePresent = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key]) return untaintedBasePrototype[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods ? testableMethods[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch$2(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index = {\n childNodes: childNodes,\n parentNode: parentNode,\n parentElement: parentElement,\n textContent: textContent,\n contains: contains,\n getRootNode: getRootNode,\n host: host,\n styleSheets: styleSheets,\n shadowRoot: shadowRoot,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch: patch$2\n};\nfunction on(type, fn, target) {\n if (target === void 0) target = document;\n var options = {\n capture: true,\n passive: true\n };\n target.addEventListener(type, fn, options);\n return function() {\n return target.removeEventListener(type, fn, options);\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nvar _mirror = {\n map: {},\n getId: function getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get: function get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options) {\n if (options === void 0) options = {};\n var timeout = null;\n var previous = 0;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(function() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n if (win === void 0) win = window;\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked ? d : {\n set: function set(value) {\n var _this = this;\n setTimeout(function() {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n });\n return function() {\n return hookSetter(target, key, original || {}, true);\n };\n}\nvar nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = function() {\n return /* @__PURE__ */ new Date().getTime();\n };\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n var doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n var el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n var el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {}\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n var parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win) {\n if (win === void 0) win = window;\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2));\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (_instanceof(n2, BaseRRNode) && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nvar StyleSheetMirror = /*#__PURE__*/ function() {\n function StyleSheetMirror() {\n __publicField$1(this, \"id\", 1);\n __publicField$1(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n var _proto = StyleSheetMirror.prototype;\n _proto.getId = function getId(stylesheet) {\n var _this_styleIDMap_get;\n return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1;\n };\n _proto.has = function has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n };\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */ _proto.add = function add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n var newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n };\n _proto.getStyle = function getStyle(id) {\n return this.idStyleMap.get(id) || null;\n };\n _proto.reset = function reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n };\n _proto.generateId = function generateId() {\n return this.id++;\n };\n return StyleSheetMirror;\n}();\nfunction getShadowHost(n2) {\n var _a2;\n var shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2))) shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n var rootShadowHost = n2;\n var shadowHost;\n while(shadowHost = getShadowHost(rootShadowHost))rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n var shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ function(EventType2) {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n}(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ function(IncrementalSource2) {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n}(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ function(MouseInteractions2) {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n}(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ function(PointerTypes2) {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n}(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ function(CanvasContext2) {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n}(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ function(MediaInteractions2) {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n}(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nvar DoubleLinkedList = /*#__PURE__*/ function() {\n function DoubleLinkedList() {\n __publicField$1(this, \"length\", 0);\n __publicField$1(this, \"head\", null);\n __publicField$1(this, \"tail\", null);\n }\n var _proto = DoubleLinkedList.prototype;\n _proto.get = function get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n var current = this.head;\n for(var index2 = 0; index2 < position; index2++){\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n };\n _proto.addNode = function addNode(n2) {\n var node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n var current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n var current1 = n2.nextSibling.__ln.previous;\n node2.previous = current1;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current1) {\n current1.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n };\n _proto.removeNode = function removeNode(n2) {\n var current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}();\nvar moveKey = function(id, parentId) {\n return id + \"@\" + parentId;\n};\nvar MutationBuffer = /*#__PURE__*/ function() {\n function MutationBuffer() {\n var _this = this;\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"texts\", []);\n __publicField$1(this, \"attributes\", []);\n __publicField$1(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"removes\", []);\n __publicField$1(this, \"mapRemoves\", []);\n __publicField$1(this, \"movedMap\", {});\n /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */ __publicField$1(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"blockClass\");\n __publicField$1(this, \"blockSelector\");\n __publicField$1(this, \"maskTextClass\");\n __publicField$1(this, \"maskTextSelector\");\n __publicField$1(this, \"inlineStylesheet\");\n __publicField$1(this, \"maskInputOptions\");\n __publicField$1(this, \"maskTextFn\");\n __publicField$1(this, \"maskInputFn\");\n __publicField$1(this, \"keepIframeSrcFn\");\n __publicField$1(this, \"recordCanvas\");\n __publicField$1(this, \"inlineImages\");\n __publicField$1(this, \"slimDOMOptions\");\n __publicField$1(this, \"dataURLOptions\");\n __publicField$1(this, \"doc\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"iframeManager\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"shadowDomManager\");\n __publicField$1(this, \"canvasManager\");\n __publicField$1(this, \"processedNodeManager\");\n __publicField$1(this, \"unattachedDoc\");\n __publicField$1(this, \"processMutations\", function(mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n });\n __publicField$1(this, \"emit\", function() {\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addedIds = /* @__PURE__ */ new Set();\n var addList = new DoubleLinkedList();\n var getNextId = function(n2) {\n var ns = n2;\n var nextId = IGNORED_NODE;\n while(nextId === IGNORED_NODE){\n ns = ns && ns.nextSibling;\n nextId = ns && _this.mirror.getId(ns);\n }\n return nextId;\n };\n var pushAdd = function(n2) {\n var parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n var cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n var parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && _this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent);\n var nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n var sn = serializeNodeWithId(n2, {\n doc: _this.doc,\n mirror: _this.mirror,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n dataURLOptions: _this.dataURLOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function(currentN) {\n if (isSerializedIframe(currentN, _this.mirror)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, _this.mirror)) {\n _this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n2)) {\n _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(link, childSn) {\n _this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured: cssCaptured\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while(_this.mapRemoves.length){\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;){\n var n2 = _step.value;\n if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;){\n var n21 = _step1.value;\n if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) {\n pushAdd(n21);\n } else if (isAncestorInSet(_this.movedSet, n21)) {\n pushAdd(n21);\n } else {\n _this.droppedSet.add(n21);\n }\n }\n var candidate = null;\n while(addList.length){\n var node2 = null;\n if (candidate) {\n var parentId = _this.mirror.getId(index.parentNode(candidate.value));\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n var tailNode = addList.tail;\n while(tailNode){\n var _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n var parentId1 = _this.mirror.getId(index.parentNode(_node.value));\n var nextId1 = getNextId(_node.value);\n if (nextId1 === -1) continue;\n else if (parentId1 !== -1) {\n node2 = _node;\n break;\n } else {\n var unhandledNode = _node.value;\n var parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n var shadowHost = index.host(parent);\n var parentId2 = _this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while(addList.head){\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n var payload = {\n texts: _this.texts.map(function(text) {\n var n2 = text.node;\n var parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(parent);\n }\n return {\n id: _this.mirror.getId(n2),\n value: text.value\n };\n }).filter(function(text) {\n return !addedIds.has(text.id);\n }).filter(function(text) {\n return _this.mirror.has(text.id);\n }),\n attributes: _this.attributes.map(function(attribute) {\n var attributes = attribute.attributes;\n if (typeof attributes.style === \"string\") {\n var diffAsStr = JSON.stringify(attribute.styleDiff);\n var unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: _this.mirror.getId(attribute.node),\n attributes: attributes\n };\n }).filter(function(attribute) {\n return !addedIds.has(attribute.id);\n }).filter(function(attribute) {\n return _this.mirror.has(attribute.id);\n }),\n removes: _this.removes,\n adds: adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.attributeMap = /* @__PURE__ */ new WeakMap();\n _this.removes = [];\n _this.addedSet = /* @__PURE__ */ new Set();\n _this.movedSet = /* @__PURE__ */ new Set();\n _this.droppedSet = /* @__PURE__ */ new Set();\n _this.removesSubTreeCache = /* @__PURE__ */ new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n });\n __publicField$1(this, \"genTextAreaValueMutation\", function(textarea) {\n var item = _this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(textarea, item);\n }\n var value = Array.from(index.childNodes(textarea), function(cn) {\n return index.textContent(cn) || \"\";\n }).join(\"\");\n item.attributes.value = maskInputValue({\n element: textarea,\n maskInputOptions: _this.maskInputOptions,\n tagName: textarea.tagName,\n type: getInputType(textarea),\n value: value,\n maskInputFn: _this.maskInputFn\n });\n });\n __publicField$1(this, \"processMutation\", function(m) {\n if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n switch(m.type){\n case \"characterData\":\n {\n var value = index.textContent(m.target);\n if (!isBlocked(m.target, _this.blockClass, _this.blockSelector, false) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector, true) && value ? _this.maskTextFn ? _this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\":\n {\n var target = m.target;\n var attributeName = m.attributeName;\n var value1 = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n var type = getInputType(target);\n value1 = maskInputValue({\n element: target,\n maskInputOptions: _this.maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: value1,\n maskInputFn: _this.maskInputFn\n });\n }\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) {\n return;\n }\n var item = _this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !_this.keepIframeSrcFn(value1)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1);\n if (attributeName === \"style\") {\n if (!_this.unattachedDoc) {\n try {\n _this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n _this.unattachedDoc = _this.doc;\n }\n }\n var old = _this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;){\n var pname = _step.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [\n newValue,\n newPriority\n ];\n }\n } else {\n item._unchangedStyles[pname] = [\n newValue,\n newPriority\n ];\n }\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;){\n var pname1 = _step1.value;\n if (target.style.getPropertyValue(pname1) === \"\") {\n item.styleDiff[pname1] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\":\n {\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return;\n if (m.target.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach(function(n2) {\n return _this.genAdds(n2, m.target);\n });\n m.removedNodes.forEach(function(n2) {\n var nodeId = _this.mirror.getId(n2);\n var parentId = isShadowRoot(m.target) ? _this.mirror.getId(index.host(m.target)) : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || isIgnored(n2, _this.mirror, _this.slimDOMOptions) || !isSerialized(n2, _this.mirror)) {\n return;\n }\n if (_this.addedSet.has(n2)) {\n deepDelete(_this.addedSet, n2);\n _this.droppedSet.add(n2);\n } else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n2) && _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n2);\n } else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, _this.removesSubTreeCache);\n }\n _this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */ __publicField$1(this, \"genAdds\", function(n2, target) {\n if (_this.processedNodeManager.inOtherBuffer(n2, _this)) return;\n if (_this.addedSet.has(n2) || _this.movedSet.has(n2)) return;\n if (_this.mirror.hasNode(n2)) {\n if (isIgnored(n2, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n _this.movedSet.add(n2);\n var targetId = null;\n if (target && _this.mirror.hasNode(target)) {\n targetId = _this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n _this.movedMap[moveKey(_this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n _this.addedSet.add(n2);\n _this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, _this.blockClass, _this.blockSelector, false)) {\n index.childNodes(n2).forEach(function(childN) {\n return _this.genAdds(childN);\n });\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach(function(childN) {\n _this.processedNodeManager.add(childN, _this);\n _this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n var _proto = MutationBuffer.prototype;\n _proto.init = function init(options) {\n var _this = this;\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach(function(key) {\n _this[key] = options[key];\n });\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n _proto.isFrozen = function isFrozen() {\n return this.frozen;\n };\n _proto.lock = function lock() {\n this.locked = true;\n this.canvasManager.lock();\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n _proto.reset = function reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}();\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach(function(childN) {\n return deepDelete(addsSet, childN);\n });\n}\nfunction processRemoves(n2, cache) {\n var queue = [\n n2\n ];\n while(queue.length){\n var next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach(function(n22) {\n return queue.push(n22);\n });\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n var node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n var parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nvar errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nvar callbackWrapper = function(cb) {\n if (!errorHandler) {\n return cb;\n }\n var rrwebWrapped = function() {\n for(var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++){\n rest[_key] = arguments[_key];\n }\n try {\n return cb.apply(void 0, [].concat(rest));\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nvar mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n var path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch (e) {}\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver(param) {\n var mousemoveCb = param.mousemoveCb, sampling = param.sampling, doc = param.doc, mirror2 = param.mirror;\n if (sampling.mousemove === false) {\n return function() {};\n }\n var threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(callbackWrapper(function(source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function(p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt, clientX = _ref.clientX, clientY = _ref.clientY;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(typeof DragEvent !== \"undefined\" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false\n }));\n var handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initMouseInteractionObserver(param) {\n var mouseInteractionCb = param.mouseInteractionCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n if (sampling.mouseInteraction === false) {\n return function() {};\n }\n var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n var handlers = [];\n var currentPointerType = null;\n var getHandler = function(eventKey) {\n return function(event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var pointerType = null;\n var thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch(event.pointerType){\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n var id = mirror2.getId(target);\n var clientX = e2.clientX, clientY = e2.clientY;\n callbackWrapper(mouseInteractionCb)(_extends({\n type: MouseInteractions[thisEventKey],\n id: id,\n x: clientX,\n y: clientY\n }, pointerType !== null && {\n pointerType: pointerType\n }));\n };\n };\n Object.keys(MouseInteractions).filter(function(key) {\n return Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false;\n }).forEach(function(eventKey) {\n var eventName = toLowerCase(eventKey);\n var handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch(MouseInteractions[eventKey]){\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\"mouse\", \"pointer\");\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initScrollObserver(param) {\n var scrollCb = param.scrollCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n var scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id: id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }), sampling.scroll || 100));\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver(param, param1) {\n var viewportResizeCb = param.viewportResizeCb;\n var win = param1.win;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = callbackWrapper(throttle(callbackWrapper(function() {\n var height = getWindowHeight();\n var width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }), 200));\n return on(\"resize\", updateDimension, win);\n}\nvar INPUT_TAGS = [\n \"INPUT\",\n \"TEXTAREA\",\n \"SELECT\"\n];\nvar lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver(param) {\n var inputCb = param.inputCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, ignoreClass = param.ignoreClass, ignoreSelector = param.ignoreSelector, maskInputOptions = param.maskInputOptions, maskInputFn = param.maskInputFn, sampling = param.sampling, userTriggeredOnInput = param.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n var tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n var type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions: maskInputOptions,\n tagName: tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn\n });\n }\n cbWithDedup(target, userTriggeredOnInput ? {\n text: text,\n isChecked: isChecked,\n userTriggered: userTriggered\n } : {\n text: text,\n isChecked: isChecked\n });\n var name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]').forEach(function(el) {\n if (el !== target) {\n var text2 = el.value;\n cbWithDedup(el, userTriggeredOnInput ? {\n text: text2,\n isChecked: !isChecked,\n userTriggered: false\n } : {\n text: text2,\n isChecked: !isChecked\n });\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n var id = mirror2.getId(target);\n callbackWrapper(inputCb)(_extends({}, v2, {\n id: id\n }));\n }\n }\n var events = sampling.input === \"last\" ? [\n \"change\"\n ] : [\n \"input\",\n \"change\"\n ];\n var handlers = events.map(function(eventName) {\n return on(eventName, callbackWrapper(eventHandler), doc);\n });\n var currentWindow = doc.defaultView;\n if (!currentWindow) {\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n }\n var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, \"value\");\n var hookProperties = [\n [\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLInputElement.prototype,\n \"checked\"\n ],\n [\n currentWindow.HTMLSelectElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLTextAreaElement.prototype,\n \"value\"\n ],\n // Some UI library use selectedIndex to set select value\n [\n currentWindow.HTMLSelectElement.prototype,\n \"selectedIndex\"\n ],\n [\n currentWindow.HTMLOptionElement.prototype,\n \"selected\"\n ]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n var _handlers;\n (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) {\n return hookSetter(p[0], p[1], {\n set: function set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n });\n }\n }, false, currentWindow);\n })));\n }\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n var positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule(\"CSSMediaRule\") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule(\"CSSSupportsRule\") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule(\"CSSConditionRule\") && _instanceof(childRule.parentRule, CSSConditionRule)) {\n var rules2 = Array.from(childRule.parentRule.cssRules);\n var index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n var rules21 = Array.from(childRule.parentStyleSheet.cssRules);\n var index21 = rules21.indexOf(childRule);\n pos.unshift(index21);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n var id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId: styleId,\n id: id\n };\n}\nfunction initStyleSheetObserver(param, param1) {\n var styleSheetRuleCb = param.styleSheetRuleCb, mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return function() {};\n }\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) {\n if (index2 === void 0) index2 = this.cssRules.length;\n var rule2 = selector + \" { \" + styleBlock + \" }\";\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [\n rule2,\n index2\n ]);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [\n index2\n ]);\n };\n var replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2 || 0\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n });\n return callbackWrapper(function() {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver(param, host2) {\n var mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var _a2, _b, _c;\n var hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n var patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, \"adoptedStyleSheets\") : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {};\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: function get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set: function set(sheets) {\n var _a3;\n var result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {}\n }\n return result2;\n }\n });\n return callbackWrapper(function() {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver(param, param1) {\n var styleDeclarationCb = param.styleDeclarationCb, mirror2 = param.mirror, ignoreCSSAttributes = param.ignoreCSSAttributes, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0], value = argumentsList[1], priority = argumentsList[2];\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [\n property,\n value,\n priority\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n set: {\n property: property,\n value: value,\n priority: priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0];\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [\n property\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n remove: {\n property: property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n return callbackWrapper(function() {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver(param) {\n var mediaInteractionCb = param.mediaInteractionCb, blockClass = param.blockClass, blockSelector = param.blockSelector, mirror2 = param.mirror, sampling = param.sampling, doc = param.doc;\n var handler = callbackWrapper(function(type) {\n return throttle(callbackWrapper(function(event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var currentTime = target.currentTime, volume = target.volume, muted = target.muted, playbackRate = target.playbackRate, loop = target.loop;\n mediaInteractionCb({\n type: type,\n id: mirror2.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n playbackRate: playbackRate,\n loop: loop\n });\n }), sampling.media || 500);\n });\n var handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initFontObserver(param) {\n var fontCb = param.fontCb, doc = param.doc;\n var win = doc.defaultView;\n if (!win) {\n return function() {};\n }\n var handlers = [];\n var fontMap = /* @__PURE__ */ new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== \"string\",\n descriptors: descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n var restoreHandler = patch$2(doc.fonts, \"add\", function(original) {\n return function(fontFace) {\n setTimeout(callbackWrapper(function() {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [\n fontFace\n ]);\n };\n });\n handlers.push(function() {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initSelectionObserver(param) {\n var doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, selectionCb = param.selectionCb;\n var collapsed = true;\n var updateSelection = callbackWrapper(function() {\n var selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n var ranges = [];\n var count = selection.rangeCount || 0;\n for(var i2 = 0; i2 < count; i2++){\n var range = selection.getRangeAt(i2);\n var startContainer = range.startContainer, startOffset = range.startOffset, endContainer = range.endContainer, endOffset = range.endOffset;\n var blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset: startOffset,\n end: mirror2.getId(endContainer),\n endOffset: endOffset\n });\n }\n selectionCb({\n ranges: ranges\n });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver(param) {\n var doc = param.doc, customElementCb = param.customElementCb;\n var win = doc.defaultView;\n if (!win || !win.customElements) return function() {};\n var restoreHandler = patch$2(win.customElements, \"define\", function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name: name\n }\n });\n } catch (e2) {\n console.warn(\"Custom element callback failed for \" + name);\n }\n return original.apply(this, [\n name,\n constructor,\n options\n ]);\n };\n });\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n var mutationCb = o2.mutationCb, mousemoveCb = o2.mousemoveCb, mouseInteractionCb = o2.mouseInteractionCb, scrollCb = o2.scrollCb, viewportResizeCb = o2.viewportResizeCb, inputCb = o2.inputCb, mediaInteractionCb = o2.mediaInteractionCb, styleSheetRuleCb = o2.styleSheetRuleCb, styleDeclarationCb = o2.styleDeclarationCb, canvasMutationCb = o2.canvasMutationCb, fontCb = o2.fontCb, selectionCb = o2.selectionCb, customElementCb = o2.customElementCb;\n o2.mutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mutation) {\n var _hooks;\n (_hooks = hooks).mutation.apply(_hooks, [].concat(p));\n }\n mutationCb.apply(void 0, [].concat(p));\n };\n o2.mousemoveCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mousemove) {\n var _hooks;\n (_hooks = hooks).mousemove.apply(_hooks, [].concat(p));\n }\n mousemoveCb.apply(void 0, [].concat(p));\n };\n o2.mouseInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mouseInteraction) {\n var _hooks;\n (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p));\n }\n mouseInteractionCb.apply(void 0, [].concat(p));\n };\n o2.scrollCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.scroll) {\n var _hooks;\n (_hooks = hooks).scroll.apply(_hooks, [].concat(p));\n }\n scrollCb.apply(void 0, [].concat(p));\n };\n o2.viewportResizeCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.viewportResize) {\n var _hooks;\n (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p));\n }\n viewportResizeCb.apply(void 0, [].concat(p));\n };\n o2.inputCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.input) {\n var _hooks;\n (_hooks = hooks).input.apply(_hooks, [].concat(p));\n }\n inputCb.apply(void 0, [].concat(p));\n };\n o2.mediaInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mediaInteaction) {\n var _hooks;\n (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p));\n }\n mediaInteractionCb.apply(void 0, [].concat(p));\n };\n o2.styleSheetRuleCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleSheetRule) {\n var _hooks;\n (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p));\n }\n styleSheetRuleCb.apply(void 0, [].concat(p));\n };\n o2.styleDeclarationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleDeclaration) {\n var _hooks;\n (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p));\n }\n styleDeclarationCb.apply(void 0, [].concat(p));\n };\n o2.canvasMutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.canvasMutation) {\n var _hooks;\n (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p));\n }\n canvasMutationCb.apply(void 0, [].concat(p));\n };\n o2.fontCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.font) {\n var _hooks;\n (_hooks = hooks).font.apply(_hooks, [].concat(p));\n }\n fontCb.apply(void 0, [].concat(p));\n };\n o2.selectionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.selection) {\n var _hooks;\n (_hooks = hooks).selection.apply(_hooks, [].concat(p));\n }\n selectionCb.apply(void 0, [].concat(p));\n };\n o2.customElementCb = function() {\n for(var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++){\n c2[_key] = arguments[_key];\n }\n if (hooks.customElement) {\n var _hooks;\n (_hooks = hooks).customElement.apply(_hooks, [].concat(c2));\n }\n customElementCb.apply(void 0, [].concat(c2));\n };\n}\nfunction initObservers(o2, hooks) {\n if (hooks === void 0) hooks = {};\n var currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return function() {};\n }\n mergeHooks(o2, hooks);\n var mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n var mousemoveHandler = initMoveObserver(o2);\n var mouseInteractionHandler = initMouseInteractionObserver(o2);\n var scrollHandler = initScrollObserver(o2);\n var viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n var inputHandler = initInputObserver(o2);\n var mediaInteractionHandler = initMediaInteractionObserver(o2);\n var styleSheetObserver = function() {};\n var adoptedStyleSheetObserver = function() {};\n var styleDeclarationObserver = function() {};\n var fontObserver = function() {};\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, {\n win: currentWindow\n });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n var selectionObserver = initSelectionObserver(o2);\n var customElementObserver = initCustomElementObserver(o2);\n var pluginHandlers = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options));\n }\n return callbackWrapper(function() {\n mutationBuffers.forEach(function(b) {\n return b.reset();\n });\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype);\n}\nvar CrossOriginIframeMirror = /*#__PURE__*/ function() {\n function CrossOriginIframeMirror(generateIdFn) {\n __publicField$1(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n var _proto = CrossOriginIframeMirror.prototype;\n _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n var id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n };\n _proto.getIds = function getIds(iframe, remoteId) {\n var _this = this;\n var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(function(id) {\n return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap);\n });\n };\n _proto.getRemoteId = function getRemoteId(iframe, id, map) {\n var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n var remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n };\n _proto.getRemoteIds = function getRemoteIds(iframe, ids) {\n var _this = this;\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map(function(id) {\n return _this.getRemoteId(iframe, id, remoteIdToIdMap);\n });\n };\n _proto.reset = function reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n };\n _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) {\n var idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n };\n _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) {\n var remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n };\n return CrossOriginIframeMirror;\n}();\nvar IframeManager = /*#__PURE__*/ function() {\n function IframeManager(options) {\n __publicField$1(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField$1(this, \"crossOriginIframeStyleMirror\");\n __publicField$1(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"wrappedEmit\");\n __publicField$1(this, \"loadListener\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n var _proto = IframeManager.prototype;\n _proto.addIframe = function addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n };\n _proto.addLoadListener = function addLoadListener(cb) {\n this.loadListener = cb;\n };\n _proto.attachIframe = function attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes) (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\"message\", this.handleMessage.bind(this));\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n };\n _proto.handleMessage = function handleMessage(message) {\n var crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin) return;\n var iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n var iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n };\n _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) {\n var _this = this;\n var _a2;\n switch(e2.type){\n case EventType.FullSnapshot:\n {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n var rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded:\n {\n return false;\n }\n case EventType.Plugin:\n {\n return e2;\n }\n case EventType.Custom:\n {\n this.replaceIds(e2.data.payload, iframeEl, [\n \"id\",\n \"parentId\",\n \"previousId\",\n \"nextId\"\n ]);\n return e2;\n }\n case EventType.IncrementalSnapshot:\n {\n switch(e2.data.source){\n case IncrementalSource.Mutation:\n {\n e2.data.adds.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n _this.replaceIdOnNode(n2.node, iframeEl);\n var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && _this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"id\"\n ]);\n });\n e2.data.attributes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n e2.data.texts.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n {\n e2.data.positions.forEach(function(p) {\n _this.replaceIds(p, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize:\n {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleId\"\n ]);\n return e2;\n }\n case IncrementalSource.Font:\n {\n return e2;\n }\n case IncrementalSource.Selection:\n {\n e2.data.ranges.forEach(function(range) {\n _this.replaceIds(range, iframeEl, [\n \"start\",\n \"end\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleIds\"\n ]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function(style) {\n _this.replaceStyleIds(style, iframeEl, [\n \"styleId\"\n ]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n };\n _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) {\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n };\n _proto.replaceIds = function replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n };\n _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n };\n _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) {\n var _this = this;\n this.replaceIds(node2, iframeEl, [\n \"id\",\n \"rootId\"\n ]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.replaceIdOnNode(child, iframeEl);\n });\n }\n };\n _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) {\n var _this = this;\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.patchRootIdOnNode(child, rootId);\n });\n }\n };\n return IframeManager;\n}();\nvar ShadowDomManager = /*#__PURE__*/ function() {\n function ShadowDomManager(options) {\n __publicField$1(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"scrollCb\");\n __publicField$1(this, \"bypassOptions\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n var _proto = ShadowDomManager.prototype;\n _proto.init = function init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n };\n _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) {\n var _this = this;\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n var observer = initMutationObserver(_extends({}, this.bypassOptions, {\n doc: doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n }), shadowRoot2);\n this.restoreHandlers.push(function() {\n return observer.disconnect();\n });\n this.restoreHandlers.push(initScrollObserver(_extends({}, this.bypassOptions, {\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })));\n setTimeout(function() {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2)));\n _this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: _this.mirror,\n stylesheetManager: _this.bypassOptions.stylesheetManager\n }, shadowRoot2));\n }, 0);\n };\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n };\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) {\n var manager = this;\n this.restoreHandlers.push(patch$2(element.prototype, \"attachShadow\", function(original) {\n return function(option) {\n var sRoot = original.call(this, option);\n var shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }));\n };\n _proto.reset = function reset() {\n this.restoreHandlers.forEach(function(handler) {\n try {\n handler();\n } catch (e2) {}\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n };\n return ShadowDomManager;\n}();\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor(var i$1 = 0; i$1 < chars.length; i$1++){\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function encode(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for(i2 = 0; i2 < len; i2 += 3){\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nvar canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n var contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nvar saveWebGLVar = function(value, win, ctx) {\n if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\")) return;\n var name = value.constructor.name;\n var list2 = variableListFor$1(ctx, name);\n var index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (_instanceof(value, Array)) {\n return value.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n } else if (value === null) {\n return value;\n } else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) {\n var name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n Object.values(value)\n ]\n };\n } else if (// SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n _instanceof(value, ArrayBuffer)) {\n var name1 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name1,\n base64: base64\n };\n } else if (_instanceof(value, DataView)) {\n var name2 = value.constructor.name;\n return {\n rr_type: name2,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (_instanceof(value, HTMLImageElement)) {\n var name3 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name3,\n src: src\n };\n } else if (_instanceof(value, HTMLCanvasElement)) {\n var name4 = \"HTMLImageElement\";\n var src1 = value.toDataURL();\n return {\n rr_type: name4,\n src: src1\n };\n } else if (_instanceof(value, ImageData)) {\n var name5 = value.constructor.name;\n return {\n rr_type: name5,\n args: [\n serializeArg(value.data, win, ctx),\n value.width,\n value.height\n ]\n };\n } else if (isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\") {\n var name6 = value.constructor.name;\n var index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name6,\n index: index2\n };\n }\n return value;\n}\nvar serializeArgs = function(args, win, ctx) {\n return args.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n};\nvar isInstanceOfWebGLObject = function(value, win) {\n var webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function(name) {\n return typeof win[name] === \"function\";\n });\n return Boolean(supportedWebGLConstructorNames.find(function(name) {\n return _instanceof(value, win[name]);\n }));\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n var _loop = function() {\n var prop = _step.value;\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(win.CanvasRenderingContext2D.prototype, prop, function(original) {\n return function() {\n var _this = this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(function() {\n var recordArgs = serializeArgs(args, win, _this);\n cb(_this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props2D), _step; !(_step = _iterator()).done;)_loop();\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n var handlers = [];\n try {\n var restoreHandler = patch$2(win.HTMLCanvasElement.prototype, \"getContext\", function(original) {\n return function(contextType) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n var ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\n \"webgl\",\n \"webgl2\"\n ].includes(ctxName)) {\n if (args[0] && _type_of(args[0]) === \"object\") {\n var contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [].concat([\n contextType\n ], args));\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n var _loop = function() {\n var prop = _step.value;\n if (//prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)) {\n return \"continue\";\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(prototype, prop, function(original) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n var recordArgs = serializeArgs(args, win, this);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props), _step; !(_step = _iterator()).done;)_loop();\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n var _handlers;\n var handlers = [];\n (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win)));\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n var _handlers1;\n (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win)));\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nvar encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nvar decodeBase64 = function(base64) {\n return Uint8Array.from(atob(base64), function(c2) {\n return c2.charCodeAt(0);\n });\n};\nvar blob = typeof window !== \"undefined\" && window.Blob && new Blob([\n decodeBase64(encodedJs)\n], {\n type: \"text/javascript;charset=utf-8\"\n});\nfunction WorkerWrapper(options) {\n var objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n var worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", function() {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\"data:text/javascript;base64,\" + encodedJs, {\n name: options == null ? void 0 : options.name\n });\n } finally{\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nvar CanvasManager = /*#__PURE__*/ function() {\n function CanvasManager(options) {\n var _this = this;\n __publicField$1(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"rafStamps\", {\n latestId: 0,\n invokeId: null\n });\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"resetObservers\");\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"processMutation\", function(target, mutation) {\n var newFrame = _this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId;\n if (newFrame || !_this.rafStamps.invokeId) _this.rafStamps.invokeId = _this.rafStamps.latestId;\n if (!_this.pendingCanvasMutations.has(target)) {\n _this.pendingCanvasMutations.set(target, []);\n }\n _this.pendingCanvasMutations.get(target).push(mutation);\n });\n var _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? \"all\" : _options_sampling, win = options.win, blockClass = options.blockClass, blockSelector = options.blockSelector, recordCanvas = options.recordCanvas, dataURLOptions = options.dataURLOptions;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\") this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions: dataURLOptions\n });\n }\n var _proto = CanvasManager.prototype;\n _proto.reset = function reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n };\n _proto.lock = function lock() {\n this.locked = true;\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n };\n _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n var _this = this;\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\n var snapshotInProgressMap = /* @__PURE__ */ new Map();\n var worker = new WorkerWrapper();\n worker.onmessage = function(e2) {\n var id = e2.data.id;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n var _e2_data = e2.data, base64 = _e2_data.base64, type = _e2_data.type, width = _e2_data.width, height = _e2_data.height;\n _this.mutationCb({\n id: id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [\n 0,\n 0,\n width,\n height\n ]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [\n {\n rr_type: \"ArrayBuffer\",\n base64: base64\n }\n ],\n type: type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n var timeBetweenSnapshots = 1e3 / fps;\n var lastSnapshotTime = 0;\n var rafId;\n var getCanvas = function() {\n var matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach(function(canvas) {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n var takeCanvasSnapshots = function(timestamp) {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n var _this1 = _this;\n getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) {\n var _a2, id, context, bitmap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n id = _this1.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return [\n 2\n ];\n if (canvas.width === 0 || canvas.height === 0) return [\n 2\n ];\n snapshotInProgressMap.set(id, true);\n if ([\n \"webgl\",\n \"webgl2\"\n ].includes(canvas.__context)) {\n context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n return [\n 4,\n createImageBitmap(canvas)\n ];\n case 1:\n bitmap = _state.sent();\n worker.postMessage({\n id: id,\n bitmap: bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n }, [\n bitmap\n ]);\n return [\n 2\n ];\n }\n });\n }));\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = function() {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n };\n _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n this.resetObservers = function() {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() {\n var _this = this;\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.startRAFTimestamping = function startRAFTimestamping() {\n var _this = this;\n var setLatestRAFTimestamp = function(timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() {\n var _this = this;\n this.pendingCanvasMutations.forEach(function(_values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n var values = valuesWithType.map(function(value) {\n value.type; var rest = _object_without_properties_loose(value, [\n \"type\"\n ]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({\n id: id,\n type: type,\n commands: values\n });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}();\nvar StylesheetManager = /*#__PURE__*/ function() {\n function StylesheetManager(options) {\n __publicField$1(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"adoptedStyleSheetCb\");\n __publicField$1(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n var _proto = StylesheetManager.prototype;\n _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes) this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n };\n _proto.trackLinkElement = function trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n };\n _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) {\n var _this, _loop = function() {\n var sheet = _step.value;\n var styleId = void 0;\n if (!_this.styleMirror.has(sheet)) {\n styleId = _this.styleMirror.add(sheet);\n styles.push({\n styleId: styleId,\n rules: Array.from(sheet.rules || CSSRule, function(r2, index2) {\n return {\n rule: stringifyRule(r2, sheet.href),\n index: index2\n };\n })\n });\n } else styleId = _this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n };\n if (sheets.length === 0) return;\n var adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n var styles = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;)_this = this, _loop();\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n };\n _proto.reset = function reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n };\n // TODO: take snapshot on stylesheet reload by applying event listener\n _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {};\n return StylesheetManager;\n}();\nvar ProcessedNodeManager = /*#__PURE__*/ function() {\n function ProcessedNodeManager() {\n __publicField$1(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"active\", false);\n }\n var _proto = ProcessedNodeManager.prototype;\n _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) {\n var buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some(function(buffer) {\n return buffer !== thisBuffer;\n });\n };\n _proto.add = function add(node2, buffer) {\n var _this = this;\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(function() {\n _this.nodeMap = /* @__PURE__ */ new WeakMap();\n _this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n };\n _proto.destroy = function destroy() {};\n return ProcessedNodeManager;\n}();\nvar wrappedEmit;\nvar takeFullSnapshot$1;\nvar canvasManager;\nvar recording = false;\ntry {\n if (Array.from([\n 1\n ], function(x2) {\n return x2 * 2;\n })[0] !== 2) {\n var cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nvar mirror = createMirror$2();\nfunction record(options) {\n if (options === void 0) options = {};\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _options_blockClass = options.blockClass, blockClass = _options_blockClass === void 0 ? \"rr-block\" : _options_blockClass, _options_blockSelector = options.blockSelector, blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector, _options_ignoreClass = options.ignoreClass, ignoreClass = _options_ignoreClass === void 0 ? \"rr-ignore\" : _options_ignoreClass, _options_ignoreSelector = options.ignoreSelector, ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector, _options_maskTextClass = options.maskTextClass, maskTextClass = _options_maskTextClass === void 0 ? \"rr-mask\" : _options_maskTextClass, _options_maskTextSelector = options.maskTextSelector, maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? {} : _options_sampling, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, mousemoveWait = options.mousemoveWait, _options_recordDOM = options.recordDOM, recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, _options_recordCrossOriginIframes = options.recordCrossOriginIframes, recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes, _options_recordAfter = options.recordAfter, recordAfter = _options_recordAfter === void 0 ? options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\" : _options_recordAfter, _options_userTriggeredOnInput = options.userTriggeredOnInput, userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput, _options_collectFonts = options.collectFonts, collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, plugins = options.plugins, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_ignoreCSSAttributes = options.ignoreCSSAttributes, ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes, errorHandler2 = options.errorHandler;\n registerErrorHandler(errorHandler2);\n var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n var passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return function() {};\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : {\n password: true\n };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function(e2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = function(r2, isCheckout) {\n var _a2;\n var e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function(buf) {\n return buf.unfreeze();\n });\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n var message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout: isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n var wrappedMutationEmit = function(m) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Mutation\n }, m)\n });\n };\n var wrappedScrollEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Scroll\n }, p)\n });\n };\n var wrappedCanvasMutationEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CanvasMutation\n }, p)\n });\n };\n var wrappedAdoptedStyleSheetEmit = function(a2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.AdoptedStyleSheet\n }, a2)\n });\n };\n var stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n var iframeManager = new IframeManager({\n mirror: mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes: recordCrossOriginIframes,\n wrappedEmit: wrappedEmit\n });\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.getMirror) plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n var processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n blockSelector: blockSelector,\n mirror: mirror,\n sampling: sampling.canvas,\n dataURLOptions: dataURLOptions\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n dataURLOptions: dataURLOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n canvasManager: canvasManager,\n keepIframeSrcFn: keepIframeSrcFn,\n processedNodeManager: processedNodeManager\n },\n mirror: mirror\n });\n takeFullSnapshot$1 = function(isCheckout) {\n if (isCheckout === void 0) isCheckout = false;\n if (!recordDOM) {\n return;\n }\n wrappedEmit({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n }, isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach(function(buf) {\n return buf.lock();\n });\n var node2 = snapshot(document, {\n mirror: mirror,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function(n2) {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(linkEl, childSn) {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit({\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n }, isCheckout);\n mutationBuffers.forEach(function(buf) {\n return buf.unlock();\n });\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n try {\n var handlers = [];\n var observe = function(doc) {\n var _a2;\n return callbackWrapper(initObservers)({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function(positions, source) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions\n }\n });\n },\n mouseInteractionCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MouseInteraction\n }, d)\n });\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.ViewportResize\n }, d)\n });\n },\n inputCb: function(v2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Input\n }, v2)\n });\n },\n mediaInteractionCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MediaInteraction\n }, p)\n });\n },\n styleSheetRuleCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleSheetRule\n }, r2)\n });\n },\n styleDeclarationCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleDeclaration\n }, r2)\n });\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Font\n }, p)\n });\n },\n selectionCb: function(p) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Selection\n }, p)\n });\n },\n customElementCb: function(c2) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CustomElement\n }, c2)\n });\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n ignoreSelector: ignoreSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordDOM: recordDOM,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n keepIframeSrcFn: keepIframeSrcFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n shadowDomManager: shadowDomManager,\n processedNodeManager: processedNodeManager,\n canvasManager: canvasManager,\n ignoreCSSAttributes: ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) {\n return p.observer;\n })) == null ? void 0 : _a2.map(function(p) {\n return {\n observer: p.observer,\n options: p.options,\n callback: function(payload) {\n return wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload\n }\n });\n }\n };\n })) || []\n }, hooks);\n };\n iframeManager.addLoadListener(function(iframeEl) {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n var init = function() {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(on(\"DOMContentLoaded\", function() {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n }));\n handlers.push(on(\"load\", function() {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n }, window));\n }\n return function() {\n handlers.forEach(function(handler) {\n try {\n handler();\n } catch (error) {\n var msg = String(error).toLowerCase();\n if (!msg.includes(\"cross-origin\")) {\n console.warn(error);\n }\n }\n });\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function(tag, payload) {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload\n }\n });\n};\nrecord.freezePage = function() {\n mutationBuffers.forEach(function(buf) {\n return buf.freeze();\n });\n};\nrecord.takeFullSnapshot = function(isCheckout) {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nrecord.addCustomEvent;\nrecord.freezePage;\nrecord.takeFullSnapshot;\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = function(obj, key, value) {\n return key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField = function(obj, key, value) {\n return __defNormalProp(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar StackFrame = /*#__PURE__*/ function() {\n function StackFrame(obj) {\n __publicField(this, \"fileName\");\n __publicField(this, \"functionName\");\n __publicField(this, \"lineNumber\");\n __publicField(this, \"columnNumber\");\n this.fileName = obj.fileName || \"\";\n this.functionName = obj.functionName || \"\";\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n var _proto = StackFrame.prototype;\n _proto.toString = function toString() {\n var lineNumber = this.lineNumber || \"\";\n var columnNumber = this.columnNumber || \"\";\n if (this.functionName) return this.functionName + \" (\" + this.fileName + \":\" + lineNumber + \":\" + columnNumber + \")\";\n return this.fileName + \":\" + lineNumber + \":\" + columnNumber;\n };\n return StackFrame;\n}();\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n /**\n * Given an Error object, extract the most information from it.\n */ parse: function parse(error) {\n if (!error) {\n return [];\n }\n if (// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error.stacktrace !== \"undefined\" || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error[\"opera#sourceloc\"] !== \"undefined\") {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n console.warn(\"[console-record-plugin]: Failed to parse error object:\", error);\n return [];\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function extractLocation(urlLike) {\n if (urlLike.indexOf(\":\") === -1) {\n return [\n urlLike\n ];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n if (!parts) throw new Error(\"Cannot parse given url: \" + urlLike);\n return [\n parts[1],\n parts[2] || void 0,\n parts[3] || void 0\n ];\n },\n parseV8OrIE: function parseV8OrIE(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\"(eval \") > -1) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(\\),.*$)/g, \"\");\n }\n var sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\");\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(\" \") || void 0;\n var fileName = [\n \"eval\",\n \"\"\n ].indexOf(locationParts[0]) > -1 ? void 0 : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n },\n parseFFOrSafari: function parseFFOrSafari(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\" > eval\") > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n }\n if (line.indexOf(\"@\") === -1 && line.indexOf(\":\") === -1) {\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : void 0;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, \"\"));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }\n }, this);\n },\n parseOpera: function parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf(\"\\n\") > -1 && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split(\"\\n\");\n var result = [];\n for(var i = 2, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n parseOpera10: function parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split(\"\\n\");\n var result = [];\n for(var i = 0, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || void 0,\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function parseOpera11(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function(line) {\n var tokens = line.split(\"@\");\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || \"\";\n var functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n }\n};\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return \"\";\n }\n var path = \"\";\n while(node.parentElement){\n var name = node.localName;\n if (!name) {\n break;\n }\n name = name.toLowerCase();\n var parent = node.parentElement;\n var domSiblings = [];\n if (parent.children && parent.children.length > 0) {\n for(var i = 0; i < parent.children.length; i++){\n var sibling = parent.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name += \":eq(\" + domSiblings.indexOf(node) + \")\";\n }\n path = name + (path ? \">\" + path : \"\");\n node = parent;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isObjTooDeep(obj, limit) {\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = \"[Circular ~]\";\n } else {\n value = \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n }\n }\n } else {\n stack.push(value);\n }\n if (value === null) return value;\n if (value === void 0) return \"undefined\";\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"bigint\") {\n return value.toString() + \"n\";\n }\n if (_instanceof(value, Event)) {\n var eventResult = {};\n for(var eventKey in value){\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n } else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n } else if (_instanceof(value, Node)) {\n if (_instanceof(value, HTMLElement)) {\n return value ? value.outerHTML : \"\";\n }\n return value.nodeName;\n } else if (_instanceof(value, Error)) {\n return value.stack ? value.stack + \"\\nEnd of stack for Error object\" : value.name + \": \" + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === \"function\") {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\" + str.slice(0, options.stringLengthLimit) + \"...\";\n }\n return str;\n }\n}\nvar defaultLogOptions = {\n level: [\n \"assert\",\n \"clear\",\n \"count\",\n \"countReset\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeLog\",\n \"trace\",\n \"warn\"\n ],\n lengthThreshold: 1e3,\n logger: \"console\"\n};\nfunction initLogObserver(cb, win, options) {\n var logOptions = options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function() {};\n }\n var logger;\n if (typeof loggerType === \"string\") {\n logger = win[loggerType];\n } else {\n logger = loggerType;\n }\n var logCount = 0;\n var inStack = false;\n var cancelHandlers = [];\n if (logOptions.level.includes(\"error\")) {\n var errorHandler = function(event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n var payload = [\n stringify(message, logOptions.stringifyOptions)\n ];\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"error\", errorHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"error\", errorHandler);\n });\n var unhandledrejectionHandler = function(event) {\n var error;\n var payload;\n if (_instanceof(event.reason, Error)) {\n error = event.reason;\n payload = [\n stringify(\"Uncaught (in promise) \" + error.name + \": \" + error.message, logOptions.stringifyOptions)\n ];\n } else {\n error = new Error();\n payload = [\n stringify(\"Uncaught (in promise)\", logOptions.stringifyOptions),\n stringify(event.reason, logOptions.stringifyOptions)\n ];\n }\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n });\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(logOptions.level), _step; !(_step = _iterator()).done;){\n var levelType = _step.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n return function() {\n cancelHandlers.forEach(function(h) {\n return h();\n });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function() {};\n }\n return patch(_logger, level, function(original) {\n var _this1 = _this;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n original.apply(_this1, args);\n if (level === \"assert\" && !!args[0]) {\n return;\n }\n if (inStack) {\n return;\n }\n inStack = true;\n try {\n var trace = ErrorStackParser.parse(new Error()).map(function(stackFrame) {\n return stackFrame.toString();\n }).splice(1);\n var argsForPayload = level === \"assert\" ? args.slice(1) : args;\n var payload = argsForPayload.map(function(s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload\n });\n } else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: \"warn\",\n trace: [],\n payload: [\n stringify(\"The number of log records reached the threshold.\")\n ]\n });\n }\n } catch (error) {\n original.apply(void 0, [].concat([\n \"rrweb logger error:\",\n error\n ], args));\n } finally{\n inStack = false;\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = \"rrweb/console@1\";\nvar getRecordConsolePlugin = function(options) {\n return {\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n };\n};\n\nvar setImmediate = win['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function() {\n try {\n // use native Crypto API when available\n return win['crypto']['randomUUID']();\n } catch (err) {\n // fall back to generating our own UUID\n // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n var uuid = new Array(36);\n for (var i = 0; i < 36; i++) {\n uuid[i] = Math.floor(Math.random() * 16);\n }\n uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n uuid[19] = uuid[19] &= -5; // set bit 6 of clock-seq-and-reserved to zero\n uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n return _.map(uuid, function(x) {\n return x.toString(16);\n }).join('');\n }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console$1.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _testStorageSupported = function (storage) {\n var supported = true;\n try {\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n return _localStorageSupported = _testStorageSupported(storage || win.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n if (_sessionStorageSupported !== null && !forceCheck) {\n return _sessionStorageSupported;\n }\n return _sessionStorageSupported = _testStorageSupported(storage || win.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n var log_error = function(msg) {\n console$1.error(name + ' error: ' + msg);\n };\n\n return {\n is_supported: function(forceCheck) {\n var supported = is_supported_fn(storage, forceCheck);\n if (!supported) {\n console$1.error(name + ' unsupported');\n }\n return supported;\n },\n error: log_error,\n get: function(key) {\n try {\n return storage.getItem(key);\n } catch (err) {\n log_error(err);\n }\n return null;\n },\n parse: function(key) {\n try {\n return _.JSONDecode(storage.getItem(key)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n set: function(key, value) {\n try {\n storage.setItem(key, value);\n } catch (err) {\n log_error(err);\n }\n },\n remove: function(key) {\n try {\n storage.removeItem(key);\n } catch (err) {\n log_error(err);\n }\n }\n };\n}\n\n_.localStorage = _storageWrapper(win.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(win.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console$1.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(win.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Whale/')) {\n // https://user-agents.net/browsers/whale-browser\n return 'Whale Browser';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/,\n 'Whale Browser': /Whale\\/(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return win.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': win.location.hostname,\n 'current_url_path': win.location.pathname,\n 'current_url_protocol': win.location.protocol,\n 'current_url_search': win.location.search\n });\n }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n var timeoutPromise = null;\n var throttledItems = [];\n return function (item) {\n var self = this;\n throttledItems.push(item);\n\n if (!timeoutPromise) {\n timeoutPromise = new PromisePolyfill(function (resolve) {\n setTimeout(function () {\n var returnValue = fn.apply(self, [throttledItems]);\n timeoutPromise = null;\n throttledItems = [];\n resolve(returnValue);\n }, waitMs);\n });\n }\n return timeoutPromise;\n };\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n/**\n * Generates a W3C traceparent header for easy interop with distributed tracing systems i.e Open Telemetry\n * https://www.w3.org/TR/trace-context/#traceparent-header\n*/\nvar generateTraceparent = function() {\n var traceID = _.UUID().replace(/-/g, '');\n var parentID = _.UUID().replace(/-/g, '').substring(0, 16);\n\n // Sampled trace\n var traceFlags = '01';\n\n return '00-' + traceID + '-' + parentID + '-' + traceFlags;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = win.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n/**\n * Determines if CompressionStream API should be used.\n * Returns false for Safari 16.4 and 16.5 which have breaking CompressionStream bugs.\n * https://bugs.webkit.org/show_bug.cgi?id=254021\n * fixed in 16.6 https://developer.apple.com/documentation/safari-release-notes/safari-16_6-release-notes\n */\nvar canUseCompressionStream = function(userAgent, vendor, opera) {\n if (!win.CompressionStream) {\n return false;\n }\n\n var browser = _.info.browser(userAgent, vendor, opera);\n var version = _.info.browserVersion(userAgent, vendor, opera);\n if (browser === 'Safari' || browser === 'Mobile Safari') {\n if (version >= 16.4 && version < 16.6) {\n return false;\n }\n }\n\n return true;\n};\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info'] = _.info;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device'] = _.info.device;\n_['info']['properties'] = _.info.properties;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['isObject'] = _.isObject;\n_['JSONDecode'] = _.JSONDecode;\n_['JSONEncode'] = _.JSONEncode;\n_['toArray'] = _.toArray;\n_['NPO'] = NpoPromise;\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n /**\n * @type {Promise|null}\n */\n this.dbPromise = null;\n this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n return new PromisePolyfill(function (resolve, reject) {\n var openRequest = win.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n openRequest['onerror'] = function () {\n reject(openRequest.error);\n };\n\n openRequest['onsuccess'] = function () {\n resolve(openRequest.result);\n };\n\n openRequest['onupgradeneeded'] = function (ev) {\n var db = ev.target.result;\n\n OBJECT_STORES.forEach(function (storeName) {\n db.createObjectStore(storeName);\n });\n };\n });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n if (!win.indexedDB) {\n return PromisePolyfill.reject('indexedDB is not supported in this browser');\n }\n\n if (!this.dbPromise) {\n this.dbPromise = this._openDb();\n }\n\n return this.dbPromise\n .then(function (dbOrError) {\n if (dbOrError instanceof win['IDBDatabase']) {\n return PromisePolyfill.resolve();\n } else {\n return PromisePolyfill.reject(dbOrError);\n }\n });\n};\n\nIDBStorageWrapper.prototype.isInitialized = function () {\n return !!this.dbPromise;\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n var storeName = this.storeName;\n var doTransaction = function (db) {\n return new PromisePolyfill(function (resolve, reject) {\n var transaction = db.transaction(storeName, mode);\n transaction.oncomplete = function () {\n resolve(transaction);\n };\n transaction.onabort = transaction.onerror = function () {\n reject(transaction.error);\n };\n\n storeCb(transaction.objectStore(storeName));\n });\n };\n\n return this.dbPromise\n .then(doTransaction)\n .catch(function (err) {\n if (err && err['name'] === 'InvalidStateError') {\n // try reopening the DB if the connection is closed\n this.dbPromise = this._openDb();\n return this.dbPromise.then(doTransaction);\n } else {\n return PromisePolyfill.reject(err);\n }\n }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.put(value, key);\n });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.get(key);\n }).then(function () {\n return req.result;\n });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.delete(key);\n });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.getAll();\n }).then(function () {\n return req.result;\n });\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console$1.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console$1.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win$1 = (options && options.window) || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win$1['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console$1.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console$1.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\nvar logger$6 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || win.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || PromisePolyfill;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$6.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || win.localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return PromisePolyfill.resolve();\n};\n\nLocalStorageWrapper.prototype.isInitialized = function () {\n return true;\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, JSONStringify(value));\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n var item;\n try {\n item = JSONParse(this.storage.getItem(key));\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nvar logger$5 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, {\n storage: options.sharedLockStorage || win.localStorage,\n timeoutMS: options.sharedLockTimeoutMS,\n });\n }\n this.reportError = options.errorReporter || _.bind(logger$5.error, logger$5);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n\n if (options.enqueueThrottleMs) {\n this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n } else {\n this.enqueuePersisted = _.bind(function (queueEntry) {\n return this._enqueuePersisted([queueEntry]);\n }, this);\n }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized || !this.usePersistence) {\n return PromisePolyfill.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return PromisePolyfill.resolve(true);\n } else {\n return this.enqueuePersisted(queueEntry);\n }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n return this.saveToStorage(storedQueue.concat(queueEntries));\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue = this.memQueue.concat(queueEntries);\n }\n\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing items', err, queueEntries);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return PromisePolyfill.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.lock.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, queue);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger$4 = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n usePersistence: options.usePersistence,\n enqueueThrottleMs: options.enqueueThrottleMs\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this._flushPromise = this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new PromisePolyfill(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger$4.log('Flush: Request already in progress');\n return PromisePolyfill.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return PromisePolyfill.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return PromisePolyfill.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return PromisePolyfill.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return PromisePolyfill.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return PromisePolyfill.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger$4.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger$4.error.apply(logger$4.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger$4.error(err);\n }\n }\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n var now = Date.now();\n return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nvar logger$3 = console_with_prefix('recorder');\nvar CompressionStream = win['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp - the unix timestamp of the last recorded event from rrweb\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} UserIdInfo\n * @property {string} distinct_id\n * @property {string} user_id\n * @property {string} device_id\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n this._rrwebRecord = options.rrwebRecord || null;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n this.replayId = options.replayId;\n\n this.batchStartUrl = options.batchStartUrl || null;\n this.replayStartUrl = options.replayStartUrl || null;\n this.idleExpires = options.idleExpires || null;\n this.maxExpires = options.maxExpires || null;\n this.replayStartTime = options.replayStartTime || null;\n this.lastEventTimestamp = options.lastEventTimestamp || null;\n this.seqNo = options.seqNo || 0;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // disable persistence if localStorage is not supported\n // request-queue will automatically disable persistence if indexedDB fails to initialize\n var usePersistence = localStorageSupported(options.sharedLockStorage, true) && !this.getConfig('disable_persistence');\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n this.batcher = new RequestBatcher(this.batcherKey, {\n errorReporter: this.reportError.bind(this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n queueStorage: this.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: usePersistence,\n stopAllBatchingFunc: this.stopRecording.bind(this),\n\n // increased throttle and shared lock timeout because recording events are very high frequency.\n // this will minimize the amount of lock contention between enqueued events.\n // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n sharedLockTimeoutMS: 10 * 1000,\n });\n};\n\n/**\n * @returns {UserIdInfo}\n */\nSessionRecording.prototype.getUserIdInfo = function () {\n if (this.finalFlushUserIdInfo) {\n return this.finalFlushUserIdInfo;\n }\n\n var userIdInfo = {\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n };\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n userIdInfo['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n userIdInfo['$user_id'] = userId;\n }\n return userIdInfo;\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n this.batcher.stop();\n\n return this.queueStorage.init().catch(function () {\n this.reportError('Error initializing IndexedDB storage for unloading persisted data.');\n }.bind(this)).then(function () {\n // if the recording is too short, just delete any stored events without flushing\n if (this.getDurationMs() < this._getRecordMinMs()) {\n return this.queueStorage.removeItem(this.batcherKey);\n }\n\n return this.batcher.flush()\n .then(function () {\n return this.queueStorage.removeItem(this.batcherKey);\n }.bind(this));\n }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._rrwebRecord === null) {\n this.reportError('rrweb record function not provided. ');\n return;\n }\n\n if (this._stopRecording !== null) {\n logger$3.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger$3.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.maxExpires) {\n this.maxExpires = new Date().getTime() + this.recordMaxMs;\n }\n\n this.recordMinMs = this._getRecordMinMs();\n\n if (!this.replayStartTime) {\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n }\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = function () {\n clearTimeout(this.idleTimeoutId);\n var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n this.idleExpires = new Date().getTime() + idleTimeoutMs;\n }.bind(this);\n resetIdleTimeout();\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n try {\n this._stopRecording = this._rrwebRecord({\n 'emit': function (ev) {\n if (this.idleExpires && this.idleExpires < ev.timestamp) {\n this._onIdleTimeout();\n return;\n }\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n // promise only used to await during tests\n this.__enqueuePromise = this.batcher.enqueue(ev);\n\n // Capture the timestamp of the last event for duration calculation.\n if (this.lastEventTimestamp === null || ev.timestamp > this.lastEventTimestamp) {\n this.lastEventTimestamp = ev.timestamp;\n }\n }.bind(this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n },\n 'plugins': this.getConfig('record_console') ? [\n getRecordConsolePlugin({\n stringifyOptions: {\n stringLengthLimit: 1000,\n numOfKeysLimit: 50,\n depthOfLimit: 2\n }\n })\n ] : []\n });\n } catch (err) {\n this.reportError('Unexpected error when starting rrweb recording.', err);\n }\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n var maxTimeoutMs = this.maxExpires - new Date().getTime();\n this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n // store the user ID info in case this is getting called in mixpanel.reset()\n this.finalFlushUserIdInfo = this.getUserIdInfo();\n\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n var flushPromise;\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n flushPromise = this.batcher.clear();\n } else if (!skipFlush) {\n // flush any remaining events from running batcher\n flushPromise = this.batcher.flush();\n }\n this.batcher.stop();\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n var onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n cb({error: 'Tracking has been opted out, stopping recording.'});\n }\n }.bind(this);\n\n this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n // don't break if mixpanel instance was destroyed at some point\n var tabId;\n try {\n tabId = this._mixpanel.get_tab_id();\n } catch (e) {\n this.reportError('Error getting tab ID for serialization ', e);\n tabId = null;\n }\n\n return {\n 'replayId': this.replayId,\n 'seqNo': this.seqNo,\n 'replayStartTime': this.replayStartTime,\n 'batchStartUrl': this.batchStartUrl,\n 'replayStartUrl': this.replayStartUrl,\n 'lastEventTimestamp': this.lastEventTimestamp,\n 'idleExpires': this.idleExpires,\n 'maxExpires': this.maxExpires,\n 'tabId': tabId,\n };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n var recording = new SessionRecording(_.extend({}, options, {\n replayId: serializedRecording['replayId'],\n batchStartUrl: serializedRecording['batchStartUrl'],\n replayStartUrl: serializedRecording['replayStartUrl'],\n idleExpires: serializedRecording['idleExpires'],\n maxExpires: serializedRecording['maxExpires'],\n replayStartTime: serializedRecording['replayStartTime'],\n lastEventTimestamp: serializedRecording['lastEventTimestamp'],\n seqNo: serializedRecording['seqNo'],\n sharedLockStorage: options.sharedLockStorage,\n }));\n\n return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n\n this._onBatchSent();\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }.bind(this);\n var apiHost = (this._mixpanel.get_api_host && this._mixpanel.get_api_host('record')) || this.getConfig('api_host');\n win['fetch'](apiHost + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n var numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = Infinity;\n var batchEndTime = -Infinity;\n var hasFullSnapshot = false;\n for (var i = 0; i < numEvents; i++) {\n batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n if (data[i].type === EventType.FullSnapshot) {\n hasFullSnapshot = true;\n }\n }\n\n if (this.seqNo === 0) {\n if (!hasFullSnapshot) {\n callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n this.stopRecording(true);\n return;\n }\n this.replayStartTime = batchStartTime;\n } else if (!this.replayStartTime) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n this.replayStartTime = batchStartTime;\n }\n\n var replayLengthMs = batchEndTime - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = JSON.stringify(data);\n Object.assign(reqParams, this.getUserIdInfo());\n\n if (canUseCompressionStream(userAgent, navigator.vendor, windowOpera)) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }.bind(this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger$3.error.apply(logger$3.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger$3.error(err);\n }\n};\n\n/**\n * Calculates the duration of the recording in milliseconds, based on the start time and time of last recorded event.\n * @returns {number} The duration of the recording in milliseconds. Returns 0 if recording hasn't started.\n */\nSessionRecording.prototype.getDurationMs = function() {\n if (this.replayStartTime === null) {\n return 0;\n }\n\n // If the recording has no events, assume it is in progress and use the current time as the end time.\n if (this.lastEventTimestamp === null) {\n return new Date().getTime() - this.replayStartTime;\n }\n\n return this.lastEventTimestamp - this.replayStartTime;\n};\n\n/**\n * Lazily loads the minimum recording length config in milliseconds, respecting the maximum limit.\n * @returns {number} The minimum recording length in milliseconds.\n */\nSessionRecording.prototype._getRecordMinMs = function() {\n var configValue = this.getConfig('record_min_ms');\n\n if (configValue > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n logger$3.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n return MAX_VALUE_FOR_MIN_RECORDING_MS;\n }\n\n return configValue;\n};\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n /** @type {IDBStorageWrapper} */\n this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n this.errorReporter = options.errorReporter;\n this.mixpanelInstance = options.mixpanelInstance;\n this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.isPersistenceEnabled = function() {\n return !this.mixpanelInstance.get_config('disable_persistence');\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve();\n }\n\n var tabId = serializedRecording['tabId'];\n if (!tabId) {\n console.warn('No tab ID is set, cannot persist recording metadata.');\n return PromisePolyfill.resolve();\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.setItem(tabId, serializedRecording);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve(null);\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n }.bind(this))\n .then(function (serializedRecording) {\n return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n if (this.isPersistenceEnabled()) {\n // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n return this.markActiveRecordingExpired();\n } else {\n return this.deleteActiveRecording();\n }\n};\n\nRecordingRegistry.prototype.markActiveRecordingExpired = function () {\n return this.getActiveRecording()\n .then(function (serializedRecording) {\n if (serializedRecording) {\n serializedRecording['maxExpires'] = 0;\n return this.setActiveRecording(serializedRecording);\n }\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.deleteActiveRecording = function () {\n // avoid initializing IDB if this registry instance hasn't already written a recording\n if (this.idb.isInitialized()) {\n return this.idb.removeItem(this.mixpanelInstance.get_tab_id())\n .catch(this.handleError.bind(this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve([]);\n }\n\n return this.idb.init()\n .then(function() {\n return this.idb.getAll();\n }.bind(this))\n .then(function (serializedRecordings) {\n // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n var unloadPromises = serializedRecordings\n .filter(function (serializedRecording) {\n return isRecordingExpired(serializedRecording);\n })\n .map(function (serializedRecording) {\n var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n mixpanelInstance: this.mixpanelInstance,\n sharedLockStorage: this.sharedLockStorage\n });\n return sessionRecording.unloadPersistedData()\n .then(function () {\n // expired recording was successfully flushed, we can clean it up from the registry\n return this.idb.removeItem(serializedRecording['tabId']);\n }.bind(this))\n .catch(this.handleError.bind(this));\n }.bind(this));\n\n return PromisePolyfill.all(unloadPromises);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nvar logger$2 = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n this.mixpanelInstance = mixpanelInstance;\n this.rrwebRecord = rrwebRecord || record;\n this.sharedLockStorage = sharedLockStorage;\n\n /**\n * @member {import('./registry').RecordingRegistry}\n */\n this.recordingRegistry = new RecordingRegistry({\n mixpanelInstance: this.mixpanelInstance,\n errorReporter: logger$2.error,\n sharedLockStorage: sharedLockStorage\n });\n this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n this.activeRecording = null;\n this.stopRecordingInProgress = false;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n options = options || {};\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger$2.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = function () {\n logger$2.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }.bind(this);\n\n var onMaxLengthReached = function () {\n logger$2.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }.bind(this);\n\n var onBatchSent = function () {\n this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n }.bind(this);\n\n /**\n * @type {import('./session-recording').SessionRecordingOptions}\n */\n var sessionRecordingOptions = {\n mixpanelInstance: this.mixpanelInstance,\n onBatchSent: onBatchSent,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: this.rrwebRecord,\n sharedLockStorage: this.sharedLockStorage\n };\n\n if (options.activeSerializedRecording) {\n this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n } else {\n this.activeRecording = new SessionRecording(sessionRecordingOptions);\n }\n\n this.activeRecording.startRecording(options.shouldStopBatcher);\n return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n // Prevents activeSerializedRecording from being reused when stopping the recording.\n this.stopRecordingInProgress = true;\n return this._stopCurrentRecording(false, true).then(function() {\n return this.recordingRegistry.clearActiveRecording();\n }.bind(this)).then(function() {\n this.stopRecordingInProgress = false;\n }.bind(this));\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush, disableActiveRecording) {\n if (this.activeRecording) {\n var stopRecordingPromise = this.activeRecording.stopRecording(skipFlush);\n if (disableActiveRecording) {\n this.activeRecording = null;\n }\n return stopRecordingPromise;\n }\n return PromisePolyfill.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n this.activeRecording.startRecording(false);\n return PromisePolyfill.resolve(null);\n }\n\n return this.recordingRegistry.getActiveRecording()\n .then(function (activeSerializedRecording) {\n if (activeSerializedRecording && !this.stopRecordingInProgress) {\n return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n } else if (startNewIfInactive) {\n return this.startRecording({shouldStopBatcher: false});\n } else {\n logger$2.log('No resumable recording found.');\n return null;\n }\n }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\nwin['__mp_recorder'] = MixpanelRecorder;\n\n// stateless utils\n// mostly from https://github.com/mixpanel/mixpanel-js/blob/989ada50f518edab47b9c4fd9535f9fbd5ec5fc0/src/autotrack-utils.js\n\n\nvar EV_CHANGE = 'change';\nvar EV_CLICK = 'click';\nvar EV_HASHCHANGE = 'hashchange';\nvar EV_INPUT = 'input';\nvar EV_LOAD = 'load';\nvar EV_MP_LOCATION_CHANGE = 'mp_locationchange';\nvar EV_POPSTATE = 'popstate';\n// TODO scrollend isn't available in Safari: document or polyfill?\nvar EV_SCROLLEND = 'scrollend';\nvar EV_SCROLL = 'scroll';\nvar EV_SELECT = 'select';\nvar EV_SUBMIT = 'submit';\nvar EV_TOGGLE = 'toggle';\nvar EV_VISIBILITYCHANGE = 'visibilitychange';\n\nvar CLICK_EVENT_PROPS = [\n 'clientX', 'clientY',\n 'offsetX', 'offsetY',\n 'pageX', 'pageY',\n 'screenX', 'screenY',\n 'x', 'y'\n];\nvar OPT_IN_CLASSES = ['mp-include'];\nvar OPT_OUT_CLASSES = ['mp-no-track'];\nvar SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(['mp-sensitive']);\nvar TRACKED_ATTRS = [\n 'aria-label', 'aria-labelledby', 'aria-describedby',\n 'href', 'name', 'role', 'title', 'type'\n];\n\nvar INTERACTIVE_ARIA_ROLES = {\n 'button': true,\n 'checkbox': true,\n 'combobox': true,\n 'grid': true,\n 'link': true,\n 'listbox': true,\n 'menu': true,\n 'menubar': true,\n 'menuitem': true,\n 'menuitemcheckbox': true,\n 'menuitemradio': true,\n 'navigation': true,\n 'option': true,\n 'radio': true,\n 'radiogroup': true,\n 'searchbox': true,\n 'slider': true,\n 'spinbutton': true,\n 'switch': true,\n 'tab': true,\n 'tablist': true,\n 'textbox': true,\n 'tree': true,\n 'treegrid': true,\n 'treeitem': true\n};\n\nvar ALWAYS_NON_INTERACTIVE_TAGS = {\n // Document metadata\n 'base': true,\n 'head': true,\n 'html': true,\n 'link': true,\n 'meta': true,\n 'script': true,\n 'style': true,\n 'title': true,\n // Text formatting\n 'br': true,\n 'hr': true,\n 'wbr': true,\n // Other\n 'noscript': true,\n 'picture': true,\n 'source': true,\n 'template': true,\n 'track': true\n};\n\n// Common container tags that need additional checks\nvar TEXT_CONTAINER_TAGS = {\n 'article': true,\n 'div': true,\n 'h1': true,\n 'h2': true,\n 'h3': true,\n 'h4': true,\n 'h5': true,\n 'h6': true,\n 'p': true,\n 'section': true,\n 'span': true\n};\n\nvar EVENT_HANDLER_ATTRIBUTES = [\n 'onclick', 'onmousedown', 'onmouseup', 'onpointerdown', 'onpointerup', 'ontouchend', 'ontouchstart'\n];\n\nvar MAX_DEPTH = 5;\n\nvar logger$1 = console_with_prefix('autocapture');\n\n\nfunction getClasses(el) {\n var classes = {};\n var classList = getClassName(el).split(' ');\n for (var i = 0; i < classList.length; i++) {\n var cls = classList[i];\n if (cls) {\n classes[cls] = true;\n }\n }\n return classes;\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n * @param {Element} el - element to get the className of\n * @returns {string} the element's class\n */\nfunction getClassName(el) {\n switch(typeof el.className) {\n case 'string':\n return el.className;\n case 'object': // handle cases where className might be SVGAnimatedString or some other type\n return el.className.baseVal || el.getAttribute('class') || '';\n default: // future proof\n return '';\n }\n}\n\nfunction getPreviousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n } else {\n do {\n el = el.previousSibling;\n } while (el && !isElementNode(el));\n return el;\n }\n}\n\nfunction getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) {\n var props = {\n '$classes': getClassName(el).split(' '),\n '$tag_name': el.tagName.toLowerCase()\n };\n var elId = el.id;\n if (elId) {\n props['$id'] = elId;\n }\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) {\n _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) {\n if (el.hasAttribute(attr) && !blockAttrsSet[attr]) {\n var attrVal = el.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$attr-' + attr] = attrVal;\n }\n }\n });\n }\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = el;\n while (currentElem = getPreviousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign\n nthChild++;\n if (currentElem.tagName === el.tagName) {\n nthOfType++;\n }\n }\n props['$nth_child'] = nthChild;\n props['$nth_of_type'] = nthOfType;\n\n return props;\n}\n\nfunction getPropsForDOMEvent(ev, config) {\n var allowElementCallback = config.allowElementCallback;\n var allowSelectors = config.allowSelectors || [];\n var blockAttrs = config.blockAttrs || [];\n var blockElementCallback = config.blockElementCallback;\n var blockSelectors = config.blockSelectors || [];\n var captureTextContent = config.captureTextContent || false;\n var captureExtraAttrs = config.captureExtraAttrs || [];\n var capturedForHeatMap = config.capturedForHeatMap || false;\n\n // convert array to set every time, as the config may have changed\n var blockAttrsSet = {};\n _.each(blockAttrs, function(attr) {\n blockAttrsSet[attr] = true;\n });\n\n var props = null;\n\n var target = typeof ev.target === 'undefined' ? ev.srcElement : ev.target;\n if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = target.parentNode;\n }\n\n if (\n shouldTrackDomEvent(target, ev) &&\n isElementAllowed(target, ev, allowElementCallback, allowSelectors) &&\n !isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n var targetElementList = [target];\n var curEl = target;\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n targetElementList.push(curEl.parentNode);\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href, explicitNoTrack = false;\n _.each(targetElementList, function(el) {\n var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors);\n\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (!blockAttrsSet['href'] && el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = shouldTrackDetails && shouldTrackValue(href) && href;\n }\n\n if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) {\n explicitNoTrack = true;\n }\n\n elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors));\n }, this);\n\n if (!explicitNoTrack) {\n var docElement = document$1['documentElement'];\n props = {\n '$event_type': ev.type,\n '$host': win.location.host,\n '$pathname': win.location.pathname,\n '$elements': elementsJson,\n '$el_attr__href': href,\n '$viewportHeight': Math.max(docElement['clientHeight'], win['innerHeight'] || 0),\n '$viewportWidth': Math.max(docElement['clientWidth'], win['innerWidth'] || 0),\n '$pageHeight': document$1['body']['offsetHeight'] || 0,\n '$pageWidth': document$1['body']['offsetWidth'] || 0,\n };\n _.each(captureExtraAttrs, function(attr) {\n if (!blockAttrsSet[attr] && target.hasAttribute(attr)) {\n var attrVal = target.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$el_attr__' + attr] = attrVal;\n }\n }\n });\n\n if (captureTextContent) {\n elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (ev.type === EV_CLICK) {\n _.each(CLICK_EVENT_PROPS, function(prop) {\n if (prop in ev) {\n props['$' + prop] = ev[prop];\n }\n });\n if (capturedForHeatMap) {\n props['$captured_for_heatmap'] = true;\n }\n target = guessRealClickTarget(ev);\n }\n // prioritize text content from \"real\" click target if different from original target\n if (captureTextContent) {\n var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (target) {\n // target may have been recalculated; check allowlists and blocklists again\n if (\n !isElementAllowed(target, ev, allowElementCallback, allowSelectors) ||\n isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n return null;\n }\n\n var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors);\n props['$target'] = targetProps;\n // pull up more props onto main event props\n props['$el_classes'] = targetProps['$classes'];\n _.extend(props, _.strip_empty_properties({\n '$el_id': targetProps['$id'],\n '$el_tag_name': targetProps['$tag_name']\n }));\n }\n }\n }\n\n return props;\n}\n\n\n/**\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {string} the element's direct text content\n */\nfunction getSafeText(el, ev, allowElementCallback, allowSelectors) {\n var elText = '';\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) {\n _.each(el.childNodes, function(child) {\n if (isTextNode(child) && child.textContent) {\n elText += _.trim(child.textContent)\n // scrub potentially sensitive values\n .split(/(\\s+)/).filter(shouldTrackValue).join('')\n // normalize whitespace\n .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ')\n // truncate\n .substring(0, 255);\n }\n });\n }\n\n return _.trim(elText);\n}\n\nfunction guessRealClickTarget(ev) {\n var target = ev.target;\n var composedPath = ev['composedPath']();\n for (var i = 0; i < composedPath.length; i++) {\n var node = composedPath[i];\n if (\n isTag(node, 'a') ||\n isTag(node, 'button') ||\n isTag(node, 'input') ||\n isTag(node, 'select') ||\n (node.getAttribute && node.getAttribute('role') === 'button')\n ) {\n target = node;\n break;\n }\n if (node === target) {\n break;\n }\n }\n return target;\n}\n\nfunction isElementAllowed(el, ev, allowElementCallback, allowSelectors) {\n if (allowElementCallback) {\n try {\n if (!allowElementCallback(el, ev)) {\n return false;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in allowElementCallback', err);\n return false;\n }\n }\n\n if (!allowSelectors.length) {\n // no allowlist; all elements are fair game\n return true;\n }\n\n for (var i = 0; i < allowSelectors.length; i++) {\n var sel = allowSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n return false;\n}\n\nfunction isElementBlocked(el, ev, blockElementCallback, blockSelectors) {\n var i;\n\n if (blockElementCallback) {\n try {\n if (blockElementCallback(el, ev)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in blockElementCallback', err);\n return true;\n }\n }\n\n if (blockSelectors && blockSelectors.length) {\n // programmatically prevent tracking of elements that match CSS selectors\n for (i = 0; i < blockSelectors.length; i++) {\n var sel = blockSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n }\n\n // allow users to programmatically prevent tracking of elements by adding default classes such as 'mp-no-track'\n var classes = getClasses(el);\n for (i = 0; i < OPT_OUT_CLASSES.length; i++) {\n if (classes[OPT_OUT_CLASSES[i]]) {\n return true;\n }\n }\n\n return false;\n}\n\n/*\n * Check whether a DOM node has nodeType Node.ELEMENT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of the correct nodeType\n */\nfunction isElementNode(node) {\n return node && node.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nfunction isTag(el, tag) {\n return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n\n/*\n * Check whether a DOM node is a TEXT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of type Node.TEXT_NODE\n */\nfunction isTextNode(node) {\n return node && node.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n\nfunction minDOMApisSupported() {\n try {\n var testEl = document$1.createElement('div');\n return !!testEl['matches'];\n } catch (err) {\n return false;\n }\n}\n\nfunction weakSetSupported() {\n return typeof WeakSet !== 'undefined';\n}\n\n/*\n * Check whether a DOM event should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} ev - event to check\n * @returns {boolean} whether the event should be tracked\n */\nfunction shouldTrackDomEvent(el, ev) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n var tag = el.tagName.toLowerCase();\n switch (tag) {\n case 'form':\n return ev.type === EV_SUBMIT;\n case 'input':\n if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n return ev.type === EV_CHANGE;\n } else {\n return ev.type === EV_CLICK;\n }\n case 'select':\n case 'textarea':\n return ev.type === EV_CHANGE;\n default:\n return ev.type === EV_CLICK;\n }\n}\n\n/*\n * Check whether a DOM element should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) {\n var i;\n\n if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) {\n return false;\n }\n\n for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n var classes = getClasses(curEl);\n for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) {\n if (classes[SENSITIVE_DATA_CLASSES[i]]) {\n return false;\n }\n }\n }\n\n var elClasses = getClasses(el);\n for (i = 0; i < OPT_IN_CLASSES.length; i++) {\n if (elClasses[OPT_IN_CLASSES[i]]) {\n return true;\n }\n }\n\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n if (\n isTag(el, 'input') ||\n isTag(el, 'select') ||\n isTag(el, 'textarea') ||\n el.getAttribute('contenteditable') === 'true'\n ) {\n return false;\n }\n\n // don't include hidden or password fields\n var type = el.type || '';\n if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch(type.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n // filter out data from fields that look like sensitive fields\n var name = el.name || el.id || '';\n if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n}\n\n\n/*\n * Check whether a string value should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackValue(value) {\n if (value === null || _.isUndefined(value)) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = _.trim(value);\n\n // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n }\n\n // check to see if input value looks like a social security number\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates a cross-browser compatible scroll end function with appropriate event listener.\n * For browsers that support scrollend, returns the original function with scrollend event.\n * For browsers without scrollend support, returns a debounced function that triggers\n * 100ms after the last scroll event to simulate scrollend behavior.\n * @param {Function} originalFunction - The function to call when scrolling ends\n * @returns {Object} Object containing listener function and eventType string\n * @returns {Function} returns.listener - The wrapped function to use as event listener\n * @returns {string} returns.eventType - The event type to listen for ('scrollend' or 'scroll')\n */\nfunction getPolyfillScrollEndFunction(originalFunction) {\n var supportsScrollEnd = 'onscrollend' in win;\n var polyfillFunction = safewrap(originalFunction);\n var polyfillEvent = EV_SCROLLEND;\n if (!supportsScrollEnd) {\n // Polyfill for browsers without scrollend support: wait 100ms after the last scroll event\n // https://developer.chrome.com/blog/scrollend-a-new-javascript-event\n var scrollTimer = null;\n var scrollDelayMs = 100;\n\n polyfillFunction = safewrap(function() {\n clearTimeout(scrollTimer);\n scrollTimer = setTimeout(originalFunction, scrollDelayMs);\n });\n\n polyfillEvent = EV_SCROLL;\n }\n\n return {\n listener: polyfillFunction,\n eventType: polyfillEvent\n };\n}\n\nfunction hasInlineEventHandlers(element) {\n for (var i = 0; i < EVENT_HANDLER_ATTRIBUTES.length; i++) {\n if (element.hasAttribute(EVENT_HANDLER_ATTRIBUTES[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction hasInteractiveAriaRole(element) {\n var role = element.getAttribute('role');\n if (!role) return false;\n\n // Handle invalid markup where multiple roles might be specified\n // Only the first token is recognized per ARIA spec\n var primaryRole = role.trim().split(/\\s+/)[0].toLowerCase();\n\n return INTERACTIVE_ARIA_ROLES[primaryRole];\n}\n\nfunction hasAnyInteractivityIndicators(element) {\n var tagName = element.tagName.toLowerCase();\n\n // Check for interactive HTML elements\n if (tagName === 'button' ||\n tagName === 'input' ||\n tagName === 'select' ||\n tagName === 'textarea' ||\n tagName === 'details' ||\n tagName === 'dialog') {\n return true;\n }\n\n if (element.isContentEditable) {\n return true;\n }\n\n if (element.onclick || element.onmousedown || element.onmouseup || element.ontouchstart || element.ontouchend) {\n return true;\n }\n\n if (hasInlineEventHandlers(element)) {\n return true;\n }\n\n if (hasInteractiveAriaRole(element)) {\n return true;\n }\n\n if (tagName === 'a' && element.hasAttribute('href')) {\n return true;\n }\n\n if (element.hasAttribute('tabindex')) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isDefinitelyNonInteractive(element) {\n if (!element || !element.tagName) {\n return true;\n }\n\n var tagName = element.tagName.toLowerCase();\n\n // These tags are definitely non-interactive\n if (ALWAYS_NON_INTERACTIVE_TAGS[tagName]) {\n return true;\n }\n\n // For all other elements, we can only be certain they're non-interactive if they lack ALL indicators of interactivity\n // Check for any signs of interactivity\n if (hasAnyInteractivityIndicators(element)) {\n return false;\n }\n\n // Check parent chain for interactive context\n var parent = element.parentElement;\n var depth = 0;\n\n while (parent && depth < MAX_DEPTH) {\n if (hasAnyInteractivityIndicators(parent)) {\n return false; // Element is inside an interactive parent\n }\n\n if (parent.getRootNode && parent.getRootNode() !== document$1) {\n var root = parent.getRootNode();\n if (root.host && hasAnyInteractivityIndicators(root.host)) {\n return false; // Inside an interactive shadow host\n }\n }\n\n parent = parent.parentElement;\n depth++;\n }\n\n // Pure text containers without any interactive context\n if (TEXT_CONTAINER_TAGS[tagName]) {\n // These are non-interactive ONLY if they have no interactive indicators (already checked as part of hasAnyInteractivityIndicators)\n return true;\n }\n\n // Default: we can't be certain it's non-interactive\n return false;\n}\n\n/**\n * Get the composed path of a click event for elements embedded in shadow DOM.\n * @param {Event} event - event to get the composed path from\n * @returns {Array} the composed path of the click event\n*/\nfunction getClickEventComposedPath(event) {\n if ('composedPath' in event) {\n return event['composedPath']();\n }\n\n return [];\n}\n\n/**\n * Get the element from a click event, accounting for elements embedded in shadow DOM.\n * @param {Event} event - event to get the target from\n * @returns {Element | null} the element that was the target of the click event\n */\nfunction getClickEventTargetElement(event) {\n var path = getClickEventComposedPath(event);\n\n if (path && path.length > 0) {\n return path[0];\n }\n\n return event['target'] || event['srcElement'];\n}\n\n/** @const */ var DEFAULT_RAGE_CLICK_THRESHOLD_PX = 30;\n/** @const */ var DEFAULT_RAGE_CLICK_TIMEOUT_MS = 1000;\n/** @const */ var DEFAULT_RAGE_CLICK_CLICK_COUNT = 4;\n/** @const */ var DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY = false;\n\nfunction RageClickTracker() {\n this.clicks = [];\n}\n\n/**\n * Determines if a click event is part of a rage click sequence.\n * @param {Event} event - the original click event.\n * @param {import('../index.d.ts').RageClickConfig} options - configuration options for rage click detection.\n * @returns {boolean} - true if the click is considered a rage click, false otherwise.\n */\nRageClickTracker.prototype.isRageClick = function(event, options) {\n options = options || {};\n var thresholdPx = options['threshold_px'] || DEFAULT_RAGE_CLICK_THRESHOLD_PX;\n var timeoutMs = options['timeout_ms'] || DEFAULT_RAGE_CLICK_TIMEOUT_MS;\n var clickCount = options['click_count'] || DEFAULT_RAGE_CLICK_CLICK_COUNT;\n var interactiveElementsOnly = options['interactive_elements_only'] || DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY;\n\n if (interactiveElementsOnly) {\n var target = getClickEventTargetElement(event);\n if (!target || isDefinitelyNonInteractive(target)) {\n return false;\n }\n }\n\n var timestamp = Date.now();\n var x = event['pageX'], y = event['pageY'];\n\n var lastClick = this.clicks[this.clicks.length - 1];\n if (\n lastClick &&\n timestamp - lastClick.timestamp < timeoutMs &&\n Math.sqrt(Math.pow(x - lastClick.x, 2) + Math.pow(y - lastClick.y, 2)) < thresholdPx\n ) {\n this.clicks.push({ x: x, y: y, timestamp: timestamp });\n if (this.clicks.length >= clickCount) {\n this.clicks = [];\n return true;\n }\n } else {\n this.clicks = [{ x: x, y: y, timestamp: timestamp }];\n }\n return false;\n};\n\nfunction ShadowDOMObserver(changeCallback, observerConfig) {\n this.changeCallback = changeCallback || function() {};\n this.observerConfig = observerConfig;\n\n this.observedShadowRoots = null;\n this.shadowObservers = [];\n}\n\nShadowDOMObserver.prototype.getEventTarget = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n return getClickEventTargetElement(event);\n};\n\nShadowDOMObserver.prototype.observeFromEvent = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n var path = getClickEventComposedPath(event);\n\n // Check each element in path for shadow roots\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n\n if (element && element.shadowRoot) {\n this.observeShadowRoot(element.shadowRoot);\n }\n }\n};\n\n\nShadowDOMObserver.prototype.observeShadowRoot = function(shadowRoot) {\n if (!this.observedShadowRoots || this.observedShadowRoots.has(shadowRoot)) {\n return;\n }\n\n var self = this;\n\n try {\n this.observedShadowRoots.add(shadowRoot);\n\n var observer = new window.MutationObserver(function() {\n self.changeCallback();\n });\n\n observer.observe(shadowRoot, this.observerConfig);\n this.shadowObservers.push(observer);\n } catch (e) {\n logger$1.critical('Error while observing shadow root', e);\n }\n};\n\n\nShadowDOMObserver.prototype.start = function() {\n if (this.observedShadowRoots) {\n return;\n }\n\n if (!weakSetSupported()) {\n logger$1.critical('Shadow DOM observation unavailable: WeakSet not supported');\n return;\n }\n\n this.observedShadowRoots = new WeakSet();\n};\n\nShadowDOMObserver.prototype.stop = function() {\n if (!this.observedShadowRoots) {\n return;\n }\n\n for (var i = 0; i < this.shadowObservers.length; i++) {\n try {\n this.shadowObservers[i].disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting shadow DOM observer', e);\n }\n }\n this.shadowObservers = [];\n this.observedShadowRoots = null;\n};\n\n/** @const */ var DEFAULT_DEAD_CLICK_TIMEOUT_MS = 500;\n/** @const */ var INTERACTION_EVENTS = [EV_CHANGE, EV_INPUT, EV_SUBMIT, EV_SELECT, EV_TOGGLE];\n/** @const */ var LAYOUT_EVENTS = [EV_SCROLLEND];\n/** @const */ var NAVIGATION_EVENTS = [EV_HASHCHANGE];\n/** @const */ var MUTATION_OBSERVER_CONFIG = {\n characterData: true,\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class', 'hidden', 'checked', 'selected', 'value', 'display', 'visibility']\n};\n\n\nfunction DeadClickTracker(onDeadClickCallback) {\n this.eventListeners = [];\n this.mutationObserver = null;\n this.shadowDOMObserver = null;\n\n this.isTracking = false;\n this.lastChangeEventTimestamp = 0;\n this.pendingClicks = [];\n this.onDeadClickCallback = onDeadClickCallback;\n this.processingActive = false;\n this.processingTimeout = null;\n}\n\n\nDeadClickTracker.prototype.addClick = function(event) {\n var element = this.shadowDOMObserver && this.shadowDOMObserver.getEventTarget(event);\n\n if (!element) {\n element = event['target'] || event['srcElement'];\n }\n\n if (!element || isDefinitelyNonInteractive(element)) {\n return false;\n }\n\n if (this.shadowDOMObserver) {\n this.shadowDOMObserver.observeFromEvent(event);\n }\n this.pendingClicks.push({\n element: element,\n event: event,\n timestamp: Date.now()\n });\n return true;\n};\n\nDeadClickTracker.prototype.trackClick = function(event, config) {\n if (!this.isTracking) {\n return false;\n }\n\n var added = this.addClick(event);\n if (added) {\n this.triggerProcessing(config);\n }\n return added;\n};\n\nDeadClickTracker.prototype.getDeadClicks = function(config) {\n if (this.pendingClicks.length === 0) {\n return [];\n }\n\n var timeoutMs = config['timeout_ms'];\n var now = Date.now();\n var clicksToEvaluate = this.pendingClicks.slice(); // Copy array\n this.pendingClicks = []; // Clear original\n\n var deadClicks = [];\n\n for (var i = 0; i < clicksToEvaluate.length; i++) {\n var click = clicksToEvaluate[i];\n\n if (now - click.timestamp >= timeoutMs) {\n // Click has exceeded timeout, check if it's dead by looking for changes after this specific click\n if (!this.hasChangesAfter(click.timestamp)) {\n deadClicks.push(click);\n }\n } else {\n // Still pending - add back\n this.pendingClicks.push(click);\n }\n }\n\n return deadClicks;\n};\n\nDeadClickTracker.prototype.hasChangesAfter = function(timestamp) {\n // 100ms tolerance for race condition between when we record the click and the change event\n return this.lastChangeEventTimestamp >= (timestamp - 100);\n};\n\nDeadClickTracker.prototype.recordChangeEvent = function() {\n this.lastChangeEventTimestamp = Date.now();\n};\n\nDeadClickTracker.prototype.triggerProcessing = function(config) {\n // Prevent multiple concurrent processing chains\n if (this.processingActive) {\n return;\n }\n this.processingActive = true;\n this.processRecursively(config);\n};\n\nDeadClickTracker.prototype.processRecursively = function(config) {\n if (!this.isTracking || !this.onDeadClickCallback) {\n this.processingActive = false;\n return;\n }\n\n var timeoutMs = config['timeout_ms'];\n var self = this;\n\n this.processingTimeout = setTimeout(function() {\n if (!self.processingActive) {\n return;\n }\n\n var deadClicks = self.getDeadClicks(config);\n\n for (var i = 0; i < deadClicks.length; i++) {\n self.onDeadClickCallback(deadClicks[i].event);\n }\n\n if (self.pendingClicks.length > 0) {\n self.processRecursively(config);\n } else {\n self.processingActive = false;\n }\n }, timeoutMs);\n};\n\nDeadClickTracker.prototype.startTracking = function() {\n if (this.isTracking) {\n return;\n }\n\n this.isTracking = true;\n\n var self = this;\n\n INTERACTION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener(event, handler, { capture: true, passive: true });\n self.eventListeners.push({ target: document, event: event, handler: handler, options: { capture: true, passive: true } });\n });\n NAVIGATION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler);\n self.eventListeners.push({ target: window, event: event, handler: handler });\n });\n LAYOUT_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler, { passive: true });\n self.eventListeners.push({ target: window, event: event, handler: handler, options: { passive: true } });\n });\n var selectionHandler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener('selectionchange', selectionHandler);\n self.eventListeners.push({ target: document, event: 'selectionchange', handler: selectionHandler });\n\n // Set up MutationObserver\n if (window.MutationObserver) {\n try {\n this.mutationObserver = new window.MutationObserver(function() {\n self.recordChangeEvent();\n });\n\n this.mutationObserver.observe(document.body || document.documentElement, MUTATION_OBSERVER_CONFIG);\n } catch (e) {\n logger$1.critical('Error while setting up mutation observer', e);\n }\n }\n\n // Set up Shadow DOM observer\n if (window.customElements) {\n try {\n this.shadowDOMObserver = new ShadowDOMObserver(\n function() {\n self.recordChangeEvent();\n },\n MUTATION_OBSERVER_CONFIG\n );\n this.shadowDOMObserver.start();\n } catch (e) {\n logger$1.critical('Error while setting up shadow DOM observer', e);\n this.shadowDOMObserver = null;\n }\n }\n};\n\nDeadClickTracker.prototype.stopTracking = function() {\n if (!this.isTracking) {\n return;\n }\n\n this.isTracking = false;\n this.pendingClicks = [];\n this.lastChangeEventTimestamp = 0;\n this.processingActive = false;\n\n if (this.processingTimeout) {\n clearTimeout(this.processingTimeout);\n this.processingTimeout = null;\n }\n\n // Remove all event listeners\n for (var i = 0; i < this.eventListeners.length; i++) {\n var listener = this.eventListeners[i];\n try {\n listener.target.removeEventListener(listener.event, listener.handler, listener.options);\n } catch (e) {\n logger$1.critical('Error while removing event listener', e);\n }\n }\n this.eventListeners = [];\n\n if (this.mutationObserver) {\n try {\n this.mutationObserver.disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting mutation observer', e);\n }\n this.mutationObserver = null;\n }\n\n if (this.shadowDOMObserver) {\n try {\n this.shadowDOMObserver.stop();\n } catch (e) {\n logger$1.critical('Error while stopping shadow DOM observer', e);\n }\n this.shadowDOMObserver = null;\n }\n};\n\nvar AUTOCAPTURE_CONFIG_KEY = 'autocapture';\nvar LEGACY_PAGEVIEW_CONFIG_KEY = 'track_pageview';\n\nvar PAGEVIEW_OPTION_FULL_URL = 'full-url';\nvar PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = 'url-with-path-and-query-string';\nvar PAGEVIEW_OPTION_URL_WITH_PATH = 'url-with-path';\n\nvar CONFIG_ALLOW_ELEMENT_CALLBACK = 'allow_element_callback';\nvar CONFIG_ALLOW_SELECTORS = 'allow_selectors';\nvar CONFIG_ALLOW_URL_REGEXES = 'allow_url_regexes';\nvar CONFIG_BLOCK_ATTRS = 'block_attrs';\nvar CONFIG_BLOCK_ELEMENT_CALLBACK = 'block_element_callback';\nvar CONFIG_BLOCK_SELECTORS = 'block_selectors';\nvar CONFIG_BLOCK_URL_REGEXES = 'block_url_regexes';\nvar CONFIG_CAPTURE_EXTRA_ATTRS = 'capture_extra_attrs';\nvar CONFIG_CAPTURE_TEXT_CONTENT = 'capture_text_content';\nvar CONFIG_SCROLL_CAPTURE_ALL = 'scroll_capture_all';\nvar CONFIG_SCROLL_CHECKPOINTS = 'scroll_depth_percent_checkpoints';\nvar CONFIG_TRACK_CLICK = 'click';\nvar CONFIG_TRACK_DEAD_CLICK = 'dead_click';\nvar CONFIG_TRACK_INPUT = 'input';\nvar CONFIG_TRACK_PAGEVIEW = 'pageview';\nvar CONFIG_TRACK_RAGE_CLICK = 'rage_click';\nvar CONFIG_TRACK_SCROLL = 'scroll';\nvar CONFIG_TRACK_PAGE_LEAVE = 'page_leave';\nvar CONFIG_TRACK_SUBMIT = 'submit';\n\nvar CONFIG_DEFAULTS$1 = {};\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ELEMENT_CALLBACK] = null;\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_EXTRA_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_TEXT_CONTENT] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CAPTURE_ALL] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CHECKPOINTS] = [25, 50, 75, 100];\nCONFIG_DEFAULTS$1[CONFIG_TRACK_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_DEAD_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_INPUT] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_RAGE_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SCROLL] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGE_LEAVE] = false;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SUBMIT] = true;\n\nvar DEFAULT_PROPS = {\n '$mp_autocapture': true\n};\n\nvar MP_EV_CLICK = '$mp_click';\nvar MP_EV_DEAD_CLICK = '$mp_dead_click';\nvar MP_EV_INPUT = '$mp_input_change';\nvar MP_EV_RAGE_CLICK = '$mp_rage_click';\nvar MP_EV_SCROLL = '$mp_scroll';\nvar MP_EV_SUBMIT = '$mp_submit';\nvar MP_EV_PAGE_LEAVE = '$mp_page_leave';\n\n/**\n * Autocapture: manages automatic event tracking\n * @constructor\n */\nvar Autocapture = function(mp) {\n this.mp = mp;\n this.maxScrollViewDepth = 0;\n this.hasTrackedScrollSession = false;\n this.previousScrollHeight = 0;\n};\n\nAutocapture.prototype.init = function() {\n if (!minDOMApisSupported()) {\n logger$1.critical('Autocapture unavailable: missing required DOM APIs');\n return;\n }\n this.initPageListeners();\n this.initPageviewTracking();\n this.initClickTracking();\n this.initDeadClickTracking();\n this.initInputTracking();\n this.initScrollTracking();\n this.initSubmitTracking();\n this.initRageClickTracking();\n this.initPageLeaveTracking();\n};\n\nAutocapture.prototype.getFullConfig = function() {\n var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY);\n if (!autocaptureConfig) {\n // Autocapture is completely off\n return {};\n } else if (_.isObject(autocaptureConfig)) {\n return _.extend({}, CONFIG_DEFAULTS$1, autocaptureConfig);\n } else {\n // Autocapture config is non-object truthy value, return default\n return CONFIG_DEFAULTS$1;\n }\n};\n\nAutocapture.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nAutocapture.prototype.currentUrlBlocked = function() {\n var i;\n var currentUrl = _.info.currentUrl();\n\n var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || [];\n if (allowUrlRegexes.length) {\n // we're using an allowlist, only track if current URL matches\n var allowed = false;\n for (i = 0; i < allowUrlRegexes.length; i++) {\n var allowRegex = allowUrlRegexes[i];\n try {\n if (currentUrl.match(allowRegex)) {\n allowed = true;\n break;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + allowRegex, err);\n return true;\n }\n }\n if (!allowed) {\n // wasn't allowed by any regex\n return true;\n }\n }\n\n var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || [];\n if (!blockUrlRegexes || !blockUrlRegexes.length) {\n return false;\n }\n\n for (i = 0; i < blockUrlRegexes.length; i++) {\n try {\n if (currentUrl.match(blockUrlRegexes[i])) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + blockUrlRegexes[i], err);\n return true;\n }\n }\n return false;\n};\n\nAutocapture.prototype.pageviewTrackingConfig = function() {\n // supports both autocapture config and old track_pageview config\n if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) {\n return this.getConfig(CONFIG_TRACK_PAGEVIEW);\n } else {\n return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY);\n }\n};\n\n// helper for event handlers\nAutocapture.prototype.trackDomEvent = function(ev, mpEventName) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var isCapturedForHeatMap = this.mp.is_recording_heatmap_data() && (\n (mpEventName === MP_EV_CLICK && !this.getConfig(CONFIG_TRACK_CLICK)) ||\n (mpEventName === MP_EV_RAGE_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK)) ||\n (mpEventName === MP_EV_DEAD_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK))\n );\n\n var props = getPropsForDOMEvent(ev, {\n allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK),\n allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS),\n blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS),\n blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK),\n blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS),\n captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS),\n captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT),\n capturedForHeatMap: isCapturedForHeatMap,\n });\n if (props) {\n _.extend(props, DEFAULT_PROPS);\n this.mp.track(mpEventName, props);\n }\n};\n\nAutocapture.prototype.initPageListeners = function() {\n win.removeEventListener(EV_POPSTATE, this.listenerPopstate);\n win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange);\n\n if (!this.pageviewTrackingConfig() && !this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n // These are all the configs that use these listeners\n return;\n }\n\n this.listenerPopstate = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n this.listenerHashchange = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n\n win.addEventListener(EV_POPSTATE, this.listenerPopstate);\n win.addEventListener(EV_HASHCHANGE, this.listenerHashchange);\n var nativePushState = win.history.pushState;\n if (typeof nativePushState === 'function') {\n win.history.pushState = function(state, unused, url) {\n nativePushState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n var nativeReplaceState = win.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n win.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n};\n\nAutocapture.prototype._getClickTrackingConfig = function(configKey) {\n var config = this.getConfig(configKey);\n\n if (!config) {\n return null; // click tracking disabled\n }\n\n if (config === true) {\n return {}; // use defaults\n }\n\n if (typeof config === 'object') {\n return config; // use custom configuration\n }\n\n return {}; // fallback to defaults for any other truthy value\n};\n\nAutocapture.prototype._trackPageLeave = function(ev, currentUrl, currentScrollHeight) {\n if (this.hasTrackedScrollSession) {\n // User has navigated away already ending their impression.\n return;\n }\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n this.hasTrackedScrollSession = true;\n var viewportHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n var scrollPercentage = Math.round(Math.max(this.maxScrollViewDepth - viewportHeight, 0) / (currentScrollHeight - viewportHeight) * 100);\n var foldLinePercentage = Math.round((viewportHeight / currentScrollHeight) * 100);\n if (currentScrollHeight <= viewportHeight) {\n // If the content fits within the viewport, consider it fully scrolled\n scrollPercentage = 100;\n foldLinePercentage = 100;\n }\n\n var props = _.extend({\n '$max_scroll_view_depth': this.maxScrollViewDepth,\n '$max_scroll_percentage': scrollPercentage,\n '$fold_line_percentage': foldLinePercentage,\n '$scroll_height': currentScrollHeight,\n '$event_type': ev.type,\n '$current_url': currentUrl || _.info.currentUrl(),\n '$viewportHeight': viewportHeight, // This is the fold line\n '$viewportWidth': Math.max(document$1.documentElement.clientWidth, win.innerWidth || 0),\n '$captured_for_heatmap': this.mp.is_recording_heatmap_data()\n }, DEFAULT_PROPS);\n\n // Send with beacon transport to ensure event is sent before unload\n this.mp.track(MP_EV_PAGE_LEAVE, props, {transport: 'sendBeacon'});\n};\n\nAutocapture.prototype._initScrollDepthTracking = function() {\n win.removeEventListener(EV_SCROLL, this.listenerScrollDepth);\n win.removeEventListener(EV_SCROLLEND, this.listenerScrollDepth);\n\n if (!this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing scroll depth tracking');\n\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n\n var updateScrollDepth = function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n var scrollViewHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0) + win.scrollY;\n if (scrollViewHeight > this.maxScrollViewDepth) {\n this.maxScrollViewDepth = scrollViewHeight;\n }\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(updateScrollDepth);\n this.listenerScrollDepth = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScrollDepth);\n};\n\nAutocapture.prototype.initClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerClick);\n\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n logger$1.log('Initializing click tracking');\n\n this.listenerClick = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_CLICK);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerClick);\n};\n\nAutocapture.prototype.initDeadClickTracking = function() {\n var deadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n\n if (!deadClickConfig && !this.mp.get_config('record_heatmap_data')) {\n this.stopDeadClickTracking();\n return;\n }\n\n logger$1.log('Initializing dead click tracking');\n if (!this._deadClickTracker) {\n this._deadClickTracker = new DeadClickTracker(function(deadClickEvent) {\n this.trackDomEvent(deadClickEvent, MP_EV_DEAD_CLICK);\n }.bind(this));\n this._deadClickTracker.startTracking();\n }\n\n if (!this.listenerDeadClick) {\n this.listenerDeadClick = function(ev) {\n var currentDeadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n if (!currentDeadClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n // Normalize config to ensure timeout_ms is always set\n var normalizedConfig = currentDeadClickConfig || {};\n if (!normalizedConfig['timeout_ms']) {\n normalizedConfig['timeout_ms'] = DEFAULT_DEAD_CLICK_TIMEOUT_MS;\n }\n this._deadClickTracker.trackClick(ev, normalizedConfig);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerDeadClick);\n }\n};\n\nAutocapture.prototype.initInputTracking = function() {\n win.removeEventListener(EV_CHANGE, this.listenerChange);\n\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n logger$1.log('Initializing input tracking');\n\n this.listenerChange = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_INPUT);\n }.bind(this);\n win.addEventListener(EV_CHANGE, this.listenerChange);\n};\n\nAutocapture.prototype.initPageviewTracking = function() {\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n\n if (!this.pageviewTrackingConfig()) {\n return;\n }\n logger$1.log('Initializing pageview tracking');\n\n var previousTrackedUrl = '';\n var tracked = false;\n if (!this.currentUrlBlocked()) {\n tracked = this.mp.track_pageview(DEFAULT_PROPS);\n }\n if (tracked) {\n previousTrackedUrl = _.info.currentUrl();\n }\n\n this.listenerLocationchange = safewrap(function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n var shouldTrack = false;\n var didPathChange = currentUrl.split('#')[0].split('?')[0] !== previousTrackedUrl.split('#')[0].split('?')[0];\n var trackPageviewOption = this.pageviewTrackingConfig();\n if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) {\n shouldTrack = currentUrl !== previousTrackedUrl;\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) {\n shouldTrack = currentUrl.split('#')[0] !== previousTrackedUrl.split('#')[0];\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) {\n shouldTrack = didPathChange;\n }\n\n if (shouldTrack) {\n var tracked = this.mp.track_pageview(DEFAULT_PROPS);\n if (tracked) {\n previousTrackedUrl = currentUrl;\n }\n if (didPathChange) {\n this.lastScrollCheckpoint = 0;\n logger$1.log('Path change: re-initializing scroll depth checkpoints');\n }\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n};\n\nAutocapture.prototype.initRageClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerRageClick);\n\n var rageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!rageClickConfig && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing rage click tracking');\n if (!this._rageClickTracker) {\n this._rageClickTracker = new RageClickTracker();\n }\n\n this.listenerRageClick = function(ev) {\n var currentRageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!currentRageClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n if (this.currentUrlBlocked()) {\n return;\n }\n\n if (this._rageClickTracker.isRageClick(ev, currentRageClickConfig)) {\n this.trackDomEvent(ev, MP_EV_RAGE_CLICK);\n }\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerRageClick);\n};\n\nAutocapture.prototype.initScrollTracking = function() {\n win.removeEventListener(EV_SCROLLEND, this.listenerScroll);\n win.removeEventListener(EV_SCROLL, this.listenerScroll);\n\n\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n logger$1.log('Initializing scroll tracking');\n this.lastScrollCheckpoint = 0;\n\n var scrollTrackFunction = function() {\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL);\n var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || [])\n .slice()\n .sort(function(a, b) { return a - b; });\n\n var scrollTop = win.scrollY;\n var props = _.extend({'$scroll_top': scrollTop}, DEFAULT_PROPS);\n try {\n var scrollHeight = document$1.body.scrollHeight;\n var scrollPercentage = Math.round((scrollTop / (scrollHeight - win.innerHeight)) * 100);\n props['$scroll_height'] = scrollHeight;\n props['$scroll_percentage'] = scrollPercentage;\n if (scrollPercentage > this.lastScrollCheckpoint) {\n for (var i = 0; i < scrollCheckpoints.length; i++) {\n var checkpoint = scrollCheckpoints[i];\n if (\n scrollPercentage >= checkpoint &&\n this.lastScrollCheckpoint < checkpoint\n ) {\n props['$scroll_checkpoint'] = checkpoint;\n this.lastScrollCheckpoint = checkpoint;\n shouldTrack = true;\n }\n }\n }\n } catch (err) {\n logger$1.critical('Error while calculating scroll percentage', err);\n }\n if (shouldTrack) {\n this.mp.track(MP_EV_SCROLL, props);\n }\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(scrollTrackFunction);\n this.listenerScroll = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScroll);\n};\n\nAutocapture.prototype.initSubmitTracking = function() {\n win.removeEventListener(EV_SUBMIT, this.listenerSubmit);\n\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n logger$1.log('Initializing submit tracking');\n\n this.listenerSubmit = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_SUBMIT);\n }.bind(this);\n win.addEventListener(EV_SUBMIT, this.listenerSubmit);\n};\n\nAutocapture.prototype.initPageLeaveTracking = function() {\n // Capture page_leave both when the user navigates away from the page (visibilitychange) as well\n // as when they navigate to a different page within the SPA (popstate/pushstate/hashchange).\n document$1.removeEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n win.removeEventListener(EV_LOAD, this.listenerPageLoad);\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing page visibility tracking.');\n this._initScrollDepthTracking();\n var previousTrackedUrl = _.info.currentUrl();\n\n // Initialize previousScrollHeight on `load` which handles async loading\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n this.listenerPageLoad = function() {\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n win.addEventListener(EV_LOAD, this.listenerPageLoad);\n\n // Track page navigation events similar to how initPageviewTracking does it\n this.listenerPageLeaveLocationchange = safewrap(function(ev) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n // Track all URL changes including query string or fragment changes as separate scroll sessions\n var shouldTrack = currentUrl !== previousTrackedUrl;\n\n if (shouldTrack) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n previousTrackedUrl = currentUrl;\n // Fragment navigation should call scroll(end) and trigger listener, don't add window.scrollY here.\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n this.previousScrollHeight = document$1.body.scrollHeight;\n this.hasTrackedScrollSession = false;\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n\n this.listenerPageLeaveVisibilitychange = function(ev) {\n if (document$1.hidden) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n }\n }.bind(this);\n document$1.addEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n};\n\nAutocapture.prototype.stopDeadClickTracking = function() {\n if (this.listenerDeadClick) {\n win.removeEventListener(EV_CLICK, this.listenerDeadClick);\n this.listenerDeadClick = null;\n }\n\n if (this._deadClickTracker) {\n this._deadClickTracker.stopTracking();\n this._deadClickTracker = null;\n }\n};\n\n// TODO integrate error_reporter from mixpanel instance\nsafewrapClass(Autocapture);\n\nvar logger = console_with_prefix('flags');\n\nvar FLAGS_CONFIG_KEY = 'flags';\n\nvar CONFIG_CONTEXT = 'context';\nvar CONFIG_DEFAULTS = {};\nCONFIG_DEFAULTS[CONFIG_CONTEXT] = {};\n\n/**\n * FeatureFlagManager: support for Mixpanel's feature flagging product\n * @constructor\n */\nvar FeatureFlagManager = function(initOptions) {\n this.fetch = win['fetch'];\n this.getFullApiRoute = initOptions.getFullApiRoute;\n this.getMpConfig = initOptions.getConfigFunc;\n this.setMpConfig = initOptions.setConfigFunc;\n this.getMpProperty = initOptions.getPropertyFunc;\n this.track = initOptions.trackingFunc;\n};\n\nFeatureFlagManager.prototype.init = function() {\n if (!this.minApisSupported()) {\n logger.critical('Feature Flags unavailable: missing minimum required APIs');\n return;\n }\n\n this.flags = null;\n this.fetchFlags();\n\n this.trackedFeatures = new Set();\n};\n\nFeatureFlagManager.prototype.getFullConfig = function() {\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!ffConfig) {\n // flags are completely off\n return {};\n } else if (_.isObject(ffConfig)) {\n return _.extend({}, CONFIG_DEFAULTS, ffConfig);\n } else {\n // config is non-object truthy value, return default\n return CONFIG_DEFAULTS;\n }\n};\n\nFeatureFlagManager.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nFeatureFlagManager.prototype.isSystemEnabled = function() {\n return !!this.getMpConfig(FLAGS_CONFIG_KEY);\n};\n\nFeatureFlagManager.prototype.updateContext = function(newContext, options) {\n if (!this.isSystemEnabled()) {\n logger.critical('Feature Flags not enabled, cannot update context');\n return Promise.resolve();\n }\n\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!_.isObject(ffConfig)) {\n ffConfig = {};\n }\n var oldContext = (options && options['replace']) ? {} : this.getConfig(CONFIG_CONTEXT);\n ffConfig[CONFIG_CONTEXT] = _.extend({}, oldContext, newContext);\n\n this.setMpConfig(FLAGS_CONFIG_KEY, ffConfig);\n return this.fetchFlags();\n};\n\nFeatureFlagManager.prototype.areFlagsReady = function() {\n if (!this.isSystemEnabled()) {\n logger.error('Feature Flags not enabled');\n }\n return !!this.flags;\n};\n\nFeatureFlagManager.prototype.fetchFlags = function() {\n if (!this.isSystemEnabled()) {\n return Promise.resolve();\n }\n\n var distinctId = this.getMpProperty('distinct_id');\n var deviceId = this.getMpProperty('$device_id');\n var traceparent = generateTraceparent();\n logger.log('Fetching flags for distinct ID: ' + distinctId);\n\n var context = _.extend({'distinct_id': distinctId, 'device_id': deviceId}, this.getConfig(CONFIG_CONTEXT));\n var searchParams = new URLSearchParams();\n searchParams.set('context', JSON.stringify(context));\n searchParams.set('token', this.getMpConfig('token'));\n searchParams.set('mp_lib', 'web');\n searchParams.set('$lib_version', Config.LIB_VERSION);\n var url = this.getFullApiRoute() + '?' + searchParams.toString();\n\n this._fetchInProgressStartTime = Date.now();\n this.fetchPromise = this.fetch.call(win, url, {\n 'method': 'GET',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getMpConfig('token') + ':'),\n 'traceparent': traceparent\n }\n }).then(function(response) {\n this.markFetchComplete();\n return response.json().then(function(responseBody) {\n var responseFlags = responseBody['flags'];\n if (!responseFlags) {\n throw new Error('No flags in API response');\n }\n var flags = new Map();\n _.each(responseFlags, function(data, key) {\n flags.set(key, {\n 'key': data['variant_key'],\n 'value': data['variant_value'],\n 'experiment_id': data['experiment_id'],\n 'is_experiment_active': data['is_experiment_active'],\n 'is_qa_tester': data['is_qa_tester']\n });\n });\n this.flags = flags;\n this._traceparent = traceparent;\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n\n return this.fetchPromise;\n};\n\nFeatureFlagManager.prototype.markFetchComplete = function() {\n if (!this._fetchInProgressStartTime) {\n logger.error('Fetch in progress started time not set, cannot mark fetch complete');\n return;\n }\n this._fetchStartTime = this._fetchInProgressStartTime;\n this._fetchCompleteTime = Date.now();\n this._fetchLatency = this._fetchCompleteTime - this._fetchStartTime;\n this._fetchInProgressStartTime = null;\n};\n\nFeatureFlagManager.prototype.getVariant = function(featureName, fallback) {\n if (!this.fetchPromise) {\n return new Promise(function(resolve) {\n logger.critical('Feature Flags not initialized');\n resolve(fallback);\n });\n }\n\n return this.fetchPromise.then(function() {\n return this.getVariantSync(featureName, fallback);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallback;\n });\n};\n\nFeatureFlagManager.prototype.getVariantSync = function(featureName, fallback) {\n if (!this.areFlagsReady()) {\n logger.log('Flags not loaded yet');\n return fallback;\n }\n var feature = this.flags.get(featureName);\n if (!feature) {\n logger.log('No flag found: \"' + featureName + '\"');\n return fallback;\n }\n this.trackFeatureCheck(featureName, feature);\n return feature;\n};\n\nFeatureFlagManager.prototype.getVariantValue = function(featureName, fallbackValue) {\n return this.getVariant(featureName, {'value': fallbackValue}).then(function(feature) {\n return feature['value'];\n }).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\n// TODO remove deprecated method\nFeatureFlagManager.prototype.getFeatureData = function(featureName, fallbackValue) {\n logger.critical('mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead.');\n return this.getVariantValue(featureName, fallbackValue);\n};\n\nFeatureFlagManager.prototype.getVariantValueSync = function(featureName, fallbackValue) {\n return this.getVariantSync(featureName, {'value': fallbackValue})['value'];\n};\n\nFeatureFlagManager.prototype.isEnabled = function(featureName, fallbackValue) {\n return this.getVariantValue(featureName).then(function() {\n return this.isEnabledSync(featureName, fallbackValue);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\nFeatureFlagManager.prototype.isEnabledSync = function(featureName, fallbackValue) {\n fallbackValue = fallbackValue || false;\n var val = this.getVariantValueSync(featureName, fallbackValue);\n if (val !== true && val !== false) {\n logger.error('Feature flag \"' + featureName + '\" value: ' + val + ' is not a boolean; returning fallback value: ' + fallbackValue);\n val = fallbackValue;\n }\n return val;\n};\n\nFeatureFlagManager.prototype.trackFeatureCheck = function(featureName, feature) {\n if (this.trackedFeatures.has(featureName)) {\n return;\n }\n this.trackedFeatures.add(featureName);\n\n var trackingProperties = {\n 'Experiment name': featureName,\n 'Variant name': feature['key'],\n '$experiment_type': 'feature_flag',\n 'Variant fetch start time': new Date(this._fetchStartTime).toISOString(),\n 'Variant fetch complete time': new Date(this._fetchCompleteTime).toISOString(),\n 'Variant fetch latency (ms)': this._fetchLatency,\n 'Variant fetch traceparent': this._traceparent,\n };\n\n if (feature['experiment_id'] !== 'undefined') {\n trackingProperties['$experiment_id'] = feature['experiment_id'];\n }\n if (feature['is_experiment_active'] !== 'undefined') {\n trackingProperties['$is_experiment_active'] = feature['is_experiment_active'];\n }\n if (feature['is_qa_tester'] !== 'undefined') {\n trackingProperties['$is_qa_tester'] = feature['is_qa_tester'];\n }\n\n this.track('$experiment_started', trackingProperties);\n};\n\nFeatureFlagManager.prototype.minApisSupported = function() {\n return !!this.fetch &&\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined';\n};\n\nsafewrapClass(FeatureFlagManager);\n\nFeatureFlagManager.prototype['are_flags_ready'] = FeatureFlagManager.prototype.areFlagsReady;\nFeatureFlagManager.prototype['get_variant'] = FeatureFlagManager.prototype.getVariant;\nFeatureFlagManager.prototype['get_variant_sync'] = FeatureFlagManager.prototype.getVariantSync;\nFeatureFlagManager.prototype['get_variant_value'] = FeatureFlagManager.prototype.getVariantValue;\nFeatureFlagManager.prototype['get_variant_value_sync'] = FeatureFlagManager.prototype.getVariantValueSync;\nFeatureFlagManager.prototype['is_enabled'] = FeatureFlagManager.prototype.isEnabled;\nFeatureFlagManager.prototype['is_enabled_sync'] = FeatureFlagManager.prototype.isEnabledSync;\nFeatureFlagManager.prototype['update_context'] = FeatureFlagManager.prototype.updateContext;\n\n// Deprecated method\nFeatureFlagManager.prototype['get_feature_data'] = FeatureFlagManager.prototype.getFeatureData;\n\n/* eslint camelcase: \"off\" */\n\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console$1.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n/* eslint camelcase: \"off\" */\n\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('groups') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function() {\n console$1.error('mixpanel.people.track_charge() is deprecated and no longer has any effect.');\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console$1.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('people') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console$1.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade();\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n var old_cookie,\n old_localstorage;\n\n // if transferring from cookie to localStorage or vice-versa, copy existing\n // super properties over to new storage mode\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n } else if (this.storage === _.cookie) {\n old_localstorage = _.localStorage.parse(this.name);\n\n _.localStorage.remove(this.name);\n\n if (old_localstorage) {\n this.register_once(old_localstorage);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n JSONStringify(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // Prevent duplicate values\n _.each(v, function(item) {\n if (!_.include(union_q[k], item)) {\n union_q[k].push(item);\n }\n });\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console$1.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console$1.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\n// allow bundlers to specify how extra code (recorder bundle) should be loaded\n// eslint-disable-next-line no-unused-vars\nvar load_extra_bundle = function(src, _onload) {\n throw new Error(src + ' not available in this build.');\n};\n\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/',\n 'record': 'record/',\n 'flags': 'flags/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_hosts': {},\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_extra_query_params': {},\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'autocapture': false,\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'flags': false,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {},\n 'record_block_class': new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n 'record_block_selector': 'img, video, audio',\n 'record_canvas': false,\n 'record_collect_fonts': false,\n 'record_console': true,\n 'record_heatmap_data': false,\n 'record_idle_timeout_ms': 30 * 60 * 1000, // 30 minutes\n 'record_mask_text_class': new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n 'record_mask_text_selector': '*',\n 'record_max_ms': MAX_RECORDING_MS,\n 'record_min_ms': 0,\n 'record_sessions_percent': 0,\n 'recorder_src': 'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console$1.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console$1.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console$1.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && win.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n win.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n win.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n this.flags = new FeatureFlagManager({\n getFullApiRoute: _.bind(function() {\n return this.get_api_host('flags') + '/' + this.get_config('api_routes')['flags'];\n }, this),\n getConfigFunc: _.bind(this.get_config, this),\n setConfigFunc: _.bind(this.set_config, this),\n getPropertyFunc: _.bind(this.get_property, this),\n trackingFunc: _.bind(this.track, this)\n });\n this.flags.init();\n this['flags'] = this.flags;\n\n this.autocapture = new Autocapture(this);\n this.autocapture.init();\n\n this._init_tab_id();\n this._check_and_start_session_recording();\n};\n\n/**\n * Assigns a unique UUID to this tab / window by leveraging sessionStorage.\n * This is primarily used for session recording, where data must be isolated to the current tab.\n */\nMixpanelLib.prototype._init_tab_id = function() {\n if (this.get_config('disable_persistence')) {\n console$1.log('Tab ID initialization skipped due to disable_persistence config');\n } else if (_.sessionStorage.is_supported()) {\n try {\n var key_suffix = this.get_config('name') + '_' + this.get_config('token');\n var tab_id_key = 'mp_tab_id_' + key_suffix;\n\n // A flag is used to determine if sessionStorage is copied over and we need to generate a new tab ID.\n // This enforces a unique ID in the cases like duplicated tab, window.open(...)\n var should_generate_new_tab_id_key = 'mp_gen_new_tab_id_' + key_suffix;\n if (_.sessionStorage.get(should_generate_new_tab_id_key) || !_.sessionStorage.get(tab_id_key)) {\n _.sessionStorage.set(tab_id_key, '$tab-' + _.UUID());\n }\n\n _.sessionStorage.set(should_generate_new_tab_id_key, '1');\n this.tab_id = _.sessionStorage.get(tab_id_key);\n\n // Remove the flag when the tab is unloaded to indicate the stored tab ID can be reused. This event is not reliable to detect all page unloads,\n // but reliable in cases where the user remains in the tab e.g. a refresh or href navigation.\n // If the flag is absent, this indicates to the next SDK instance that we can reuse the stored tab_id.\n win.addEventListener('beforeunload', function () {\n _.sessionStorage.remove(should_generate_new_tab_id_key);\n });\n } catch(err) {\n this.report_error('Error initializing tab id', err);\n }\n } else {\n this.report_error('Session storage is not supported, cannot keep track of unique tab ID.');\n }\n};\n\nMixpanelLib.prototype.get_tab_id = function () {\n return this.tab_id || null;\n};\n\nMixpanelLib.prototype._should_load_recorder = function () {\n if (this.get_config('disable_persistence')) {\n console$1.log('Load recorder check skipped due to disable_persistence config');\n return Promise.resolve(false);\n }\n\n var recording_registry_idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n var tab_id = this.get_tab_id();\n return recording_registry_idb.init()\n .then(function () {\n return recording_registry_idb.getAll();\n })\n .then(function (recordings) {\n for (var i = 0; i < recordings.length; i++) {\n // if there are expired recordings in the registry, we should load the recorder to flush them\n // if there's a recording for this tab id, we should load the recorder to continue the recording\n if (isRecordingExpired(recordings[i]) || recordings[i]['tabId'] === tab_id) {\n return true;\n }\n }\n return false;\n })\n .catch(_.bind(function (err) {\n this.report_error('Error checking recording registry', err);\n }, this));\n};\n\nMixpanelLib.prototype._check_and_start_session_recording = addOptOutCheckMixpanelLib(function(force_start) {\n if (!win['MutationObserver']) {\n console$1.critical('Browser does not support MutationObserver; skipping session recording');\n return;\n }\n\n var loadRecorder = _.bind(function(startNewIfInactive) {\n var handleLoadedRecorder = _.bind(function() {\n this._recorder = this._recorder || new win['__mp_recorder'](this);\n this._recorder['resumeRecording'](startNewIfInactive);\n }, this);\n\n if (_.isUndefined(win['__mp_recorder'])) {\n load_extra_bundle(this.get_config('recorder_src'), handleLoadedRecorder);\n } else {\n handleLoadedRecorder();\n }\n }, this);\n\n /**\n * If the user is sampled or start_session_recording is called, we always load the recorder since it's guaranteed a recording should start.\n * Otherwise, if the recording registry has any records then it's likely there's a recording in progress or orphaned data that needs to be flushed.\n */\n var is_sampled = this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent');\n if (force_start || is_sampled) {\n loadRecorder(true);\n } else {\n this._should_load_recorder()\n .then(function (shouldLoad) {\n if (shouldLoad) {\n loadRecorder(false);\n }\n });\n }\n});\n\nMixpanelLib.prototype.start_session_recording = function () {\n this._check_and_start_session_recording(true);\n};\n\nMixpanelLib.prototype.stop_session_recording = function () {\n if (this._recorder) {\n return this._recorder['stopRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.pause_session_recording = function () {\n if (this._recorder) {\n return this._recorder['pauseRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.resume_session_recording = function () {\n if (this._recorder) {\n return this._recorder['resumeRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.is_recording_heatmap_data = function () {\n return this._get_session_replay_id() && this.get_config('record_heatmap_data');\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n var props = {};\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n props['$mp_replay_id'] = replay_id;\n }\n return props;\n};\n\nMixpanelLib.prototype.get_session_replay_url = function () {\n var replay_url = null;\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n var query_params = _.HTTPBuildQuery({\n 'replay_id': replay_id,\n 'distinct_id': this.get_distinct_id(),\n 'token': this.get_config('token')\n });\n replay_url = 'https://mixpanel.com/projects/replay-redirect?' + query_params;\n }\n return replay_url;\n};\n\nMixpanelLib.prototype._get_session_replay_id = function () {\n var replay_id = null;\n if (this._recorder) {\n replay_id = this._recorder['replayId'];\n }\n return replay_id || null;\n};\n\n// \"private\" public method to reach into the recorder in test cases\nMixpanelLib.prototype.__get_recorder = function () {\n return this._recorder;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // `store_google` is now deprecated and previously stored UTM parameters are cleared\n // from persistence by default.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n // Registering super properties for UTM persistence by 'store_google' is deprecated.\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n _.extend(data, this.get_config('api_extra_query_params'));\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n var response_headers = req['responseHeaders'] || {};\n callback({status: 0, httpStatusCode: req['status'], error: error, retryAfter: response_headers['Retry-After']});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', api_name: 'track', queue_key: queue_prefix + '_ev'},\n people: {type: 'people', api_name: 'engage', queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', api_name: 'groups', queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n errorReporter: this.get_config('error_reporter'),\n sendRequestFunc: _.bind(function(data, options, cb) {\n var api_routes = this.get_config('api_routes');\n this._send_request(\n this.get_api_host(attrs.api_name) + '/' + api_routes[attrs.api_name],\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this),\n usePersistence: true,\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = JSONStringify(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console$1.log('MIXPANEL REQUEST:');\n console$1.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data).then(function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n this.get_session_recording_properties(),\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_api_host('events') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for mixpanel.init()\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n\n // check feature flags again if distinct id has changed\n if (new_distinct_id !== previous_distinct_id) {\n this.flags.fetchFlags();\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this.stop_session_recording();\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n this._check_and_start_session_recording();\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n\n if (('autocapture' in config || 'record_heatmap_data' in config) && this.autocapture) {\n this.autocapture.init();\n }\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\n/**\n * Get the API host for a specific endpoint type, falling back to the default api_host if not specified\n *\n * @param {String} endpoint_type The type of endpoint (e.g., \"events\", \"people\", \"groups\")\n * @returns {String} The API host to use for this endpoint\n */\nMixpanelLib.prototype.get_api_host = function(endpoint_type) {\n return this.get_config('api_hosts')[endpoint_type] || this.get_config('api_host');\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n this.stop_session_recording();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console$1.error.apply(console$1.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console$1.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_api_host'] = MixpanelLib.prototype.get_api_host;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording'] = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording'] = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['pause_session_recording'] = MixpanelLib.prototype.pause_session_recording;\nMixpanelLib.prototype['resume_session_recording'] = MixpanelLib.prototype.resume_session_recording;\nMixpanelLib.prototype['get_session_recording_properties'] = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['get_session_replay_url'] = MixpanelLib.prototype.get_session_replay_url;\nMixpanelLib.prototype['get_tab_id'] = MixpanelLib.prototype.get_tab_id;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// Exports intended only for testing\nMixpanelLib.prototype['__get_recorder'] = MixpanelLib.prototype.__get_recorder;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = win.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module(bundle_loader) {\n load_extra_bundle = bundle_loader;\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\n// For loading separate bundles asynchronously via script tag\n// so that we don't load them until they are needed at runtime.\n\n// For builds that have everything in one bundle, no extra work.\nfunction loadNoop (_src, onload) {\n onload();\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module(loadNoop);\n\nexport { mixpanel as default };\n","/**\n * Mixpanel Tracking Utility\n *\n * Provides centralized tracking functionality with error handling\n * and support for global and event-specific properties.\n */\n\nimport mixpanel from 'mixpanel-browser';\n\n// Track initialization status\nlet isInitialized = false;\n\n// Initialize Mixpanel if token is provided and data consent is given\nconst initializeMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n // Don't re-initialize if already done\n if (isInitialized) {\n return true;\n }\n\n const config = window.marketplaceConfig || {};\n\n // Check if data consent is given\n const dataConsentStatus = config.data_consent_status;\n if (!dataConsentStatus) {\n return false;\n }\n\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n mixpanel.init(token, {\n debug: mixpanelConfig.debug || false,\n track_pageview: false, // We'll handle page views manually\n persistence: 'localStorage',\n // Disable automatic collection of potentially sensitive properties for privacy\n property_blacklist: [\n '$initial_referrer',\n '$initial_referring_domain',\n '$current_url',\n '$referrer',\n '$referring_domain',\n 'mp_lib',\n '$lib_version',\n '$browser',\n '$browser_version',\n '$device',\n '$screen_height',\n '$screen_width',\n '$os',\n '$search_engine',\n ],\n });\n\n // Set distinct_id if provided\n const distinctId = mixpanelConfig.distinctId;\n if (distinctId && distinctId !== '') {\n mixpanel.identify(distinctId);\n }\n\n isInitialized = true;\n return true;\n } catch (error) {\n return false;\n }\n};\n\n// Export initializeMixpanel for manual initialization from React components\nexport { initializeMixpanel };\n\n// Check if Mixpanel is available\nconst isMixpanelAvailable = () => {\n try {\n return isInitialized && typeof mixpanel !== 'undefined';\n } catch (error) {\n return false;\n }\n};\n\n/**\n * Disable Mixpanel tracking (when consent is revoked)\n * Resets the SDK and clears the initialization flag\n */\nexport const disableMixpanel = () => {\n try {\n if (isInitialized && typeof mixpanel !== 'undefined') {\n // Reset Mixpanel instance to stop tracking\n mixpanel.reset();\n isInitialized = false;\n }\n } catch (error) {\n console.error('[MixpanelTracking] Error disabling Mixpanel:', error);\n }\n};\n\n/**\n * Enable Mixpanel tracking (when consent is granted)\n * Reinitializes Mixpanel with current config from window.marketplaceConfig\n */\nexport const enableMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n // Reset flag to allow re-initialization\n isInitialized = false;\n\n // Initialize Mixpanel\n return initializeMixpanel();\n } catch (error) {\n console.error('[MixpanelTracking] Error enabling Mixpanel:', error);\n return false;\n }\n};\n\n/**\n * Get global tracking properties from window.marketplaceConfig.mixpanel.globalProperties\n * @returns {Object} Global properties object\n */\nexport const getGlobalProperties = () => {\n try {\n if (typeof window === 'undefined') {\n return {};\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const globalProps = mixpanelConfig.globalProperties || {};\n\n // Add hit_type and page/path properties to the global properties from PHP\n // Extract base path from query params for 'page' property\n const urlParams = new URLSearchParams(window.location.search);\n const pageParam = urlParams.get('page') || '';\n\n const enhancedProperties = {\n ...globalProps,\n hit_type: 'event',\n page: pageParam || window.location.pathname,\n path: window.location.pathname + window.location.search,\n referrer: document.referrer.split('/').filter(Boolean).pop() || '',\n };\n\n // Filter out empty values to keep the payload clean\n return Object.fromEntries(\n Object.entries(enhancedProperties).filter(([_, value]) => {\n if (value === '' || value === null || value === undefined) {\n return false;\n }\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n return true;\n })\n );\n } catch (error) {\n return {};\n }\n};\n\n/**\n * Track a Mixpanel event with global and event-specific properties\n * @param {string} eventName - Name of the event to track\n * @param {Object} eventProperties - Event-specific properties\n */\nexport const trackEvent = (eventName, eventProperties = {}) => {\n try {\n if (!isMixpanelAvailable()) {\n // Silently skip tracking if Mixpanel is not available\n // This is expected when data consent is not given or token is missing\n return;\n }\n\n // Merge global properties with event-specific properties\n const properties = {\n ...getGlobalProperties(),\n ...eventProperties,\n };\n\n // Track the event\n mixpanel.track(eventName, properties);\n\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking event:', eventName, error);\n }\n};\n\n/**\n * Track page view event\n * @param {Object} options - Page view options\n * @param {string} options.pluginSlug - Plugin slug (for detail pages)\n * @param {string} options.pluginName - Plugin name (for detail pages)\n * @param {string} options.category - Plugin category\n * @param {string} options.itemName - Custom item_name value (overrides default)\n * @param {boolean} options.isContentRendered - Whether content was successfully rendered (default: true)\n * @param {number} options.contentReceivedAt - Timestamp when API content was received\n * @param {number} options.contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} options.isCached - Whether the response was served from cache (default: false)\n */\nexport const trackPageView = ({ pluginSlug, pluginName, category, itemName, isContentRendered = true, contentReceivedAt = null, contentRenderedAt = null, isCached = false } = {}) => {\n try {\n const timestamp = Date.now();\n\n const eventProperties = {\n content_received_at: contentReceivedAt || timestamp,\n is_content_rendered: isContentRendered,\n is_cached: isCached,\n };\n\n // Only add content_rendered_at if content was successfully rendered\n if (isContentRendered) {\n eventProperties.content_rendered_at = contentRenderedAt || timestamp;\n }\n\n // Use itemName if provided, otherwise use pluginSlug (for backward compatibility)\n if (itemName) {\n eventProperties.item_name = itemName;\n } else if (pluginSlug) {\n eventProperties.item_name = pluginSlug;\n }\n\n if (pluginSlug) {\n eventProperties.product_slug = pluginSlug;\n }\n\n if (pluginName) {\n eventProperties.product_name = pluginName;\n }\n\n if (category) {\n eventProperties.item_category = category;\n }\n\n trackEvent('Page Viewed', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking page view:', error);\n }\n};\n\n/**\n * Track plugin action (install, activate, etc.)\n * @param {Object} options - Action options\n * @param {string} options.action - Action type (e.g., 'install', 'activate')\n * @param {Object} options.plugin - Plugin object\n * @param {string} options.result - Action result (e.g., 'success', 'error')\n */\nexport const trackPluginAction = ({ action, plugin, result = 'initiated' } = {}) => {\n try {\n if (!plugin) {\n return;\n }\n\n const eventName = `Plugin ${action.charAt(0).toUpperCase() + action.slice(1)}`;\n\n const eventProperties = {\n action: action,\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n item_name: plugin.slug || '',\n result: result,\n timestamp: Date.now(),\n };\n\n // Add plugin-specific properties\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n eventProperties.item_category = category;\n }\n\n if (plugin.licenseType) {\n eventProperties.license_type = plugin.licenseType;\n }\n\n if (plugin.priceAmount !== undefined) {\n eventProperties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n eventProperties.price_currency = plugin.priceCurrency;\n }\n\n trackEvent(eventName, eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin action:', error);\n }\n};\n\n/**\n * Extract common properties from a plugin object\n * @param {Object} plugin - Plugin object\n * @returns {Object} Extracted properties\n */\nconst extractPluginProperties = (plugin) => {\n if (!plugin) return {};\n\n const properties = {\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n // Note: item_name is NOT included here by default\n // It should be set contextually by the calling function\n };\n\n // Extract category\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n properties.item_category = category;\n }\n\n // Extract license type\n if (plugin.licenseType) {\n properties.license_type = plugin.licenseType;\n }\n\n // Extract price information\n if (plugin.priceAmount !== undefined) {\n properties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n properties.price_currency = plugin.priceCurrency;\n }\n\n return properties;\n};\n\n/**\n * Track button click event\n * @param {Object} options - Click options\n * @param {string} options.buttonName - Name/label of the button\n * @param {string} options.buttonAction - Action associated with the button\n * @param {Object} options.plugin - Optional plugin object (will auto-extract properties)\n * @param {Object} options.context - Additional context (merged with plugin properties)\n */\nexport const trackButtonClick = ({ buttonName, buttonAction, plugin = null, context = {} } = {}) => {\n try {\n // Start with base properties\n const eventProperties = {\n button_name: buttonName || '',\n button_action: buttonAction || '',\n item_name: buttonName || '', // item_name should be the button name\n timestamp: Date.now(),\n };\n\n // Auto-extract plugin properties if plugin object is provided\n if (plugin) {\n Object.assign(eventProperties, extractPluginProperties(plugin));\n }\n\n // Merge additional context (context takes precedence over auto-extracted properties)\n Object.assign(eventProperties, context);\n\n trackEvent('Button Clicked', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking button click:', error);\n }\n};\n\n/**\n * Track marketplace visit\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackMarketplaceVisit = (contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n trackPageView({\n category: 'marketplace_home',\n itemName: 'Catalog Page', // Set item_name to 'Catalog page' for marketplace listing\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking marketplace visit:', error);\n }\n};\n\n/**\n * Track plugin detail page visit\n * @param {Object} plugin - Plugin object\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackPluginDetailVisit = (plugin, contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n if (!plugin) {\n console.warn('[MixpanelTracking] Plugin object required for tracking detail visit');\n return;\n }\n\n const category = plugin.categories && plugin.categories.length > 0\n ? (typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0])\n : '';\n\n trackPageView({\n pluginSlug: plugin.slug,\n pluginName: plugin.name,\n category: category,\n itemName: 'Product Page', // Set item_name to 'Product page' for plugin detail page\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin detail visit:', error);\n }\n};\n\n// Export default object with all tracking functions\nexport default {\n trackEvent,\n trackPageView,\n trackPluginAction,\n trackButtonClick,\n trackMarketplaceVisit,\n trackPluginDetailVisit,\n getGlobalProperties,\n isMixpanelAvailable,\n};\n","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","import React, { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react';\nimport { trackButtonClick, initializeMixpanel, enableMixpanel, disableMixpanel } from '../utils/mixpanelTracking';\nimport { isWpVersionSupported as isWpVersionSupportedHelper } from '../utils/wpVersionHelper';\n\nconst MarketplaceContext = createContext(null);\n\nexport const MarketplaceProvider = ({\n children,\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl\n}) => {\n const [pluginInAction, setPluginInAction] = useState({});\n const [subscriptionStatus, setSubscriptionStatus] = useState({});\n const [isCheckingSubscription, setIsCheckingSubscription] = useState({});\n const [plugins, setPlugins] = useState([]);\n const [uiI18n, setUiI18n] = useState({});\n const [loadingAction, setLoadingAction] = useState('');\n const [loadingPlugin, setLoadingPlugin] = useState('');\n const [noticeState, setNoticeState] = useState({ visible: false, type: null, pluginSlug: null });\n const [errorState, setErrorState] = useState({ visible: false, type: null, pluginSlug: null });\n const [successState, setSuccessState] = useState({ visible: false, type: null, pluginSlug: null });\n const [allPluginsActivated, setAllPluginsActivated] = useState(false);\n const [catalogError, setCatalogError] = useState(false);\n const [catalogLoading, setCatalogLoading] = useState(true);\n\n // State for tracking consent status\n const [consentStatus, setConsentStatus] = useState(() => {\n const initialConsent = typeof window !== \"undefined\" && window.marketplaceConfig?.data_consent_status;\n // Convert to boolean: handle true, 'true', '1', 1 as true\n return initialConsent === true || initialConsent === 'true' || initialConsent === '1' || initialConsent === 1;\n });\n\n // Use ref to track which subscriptions have been checked to avoid recreation of fetchSubscriptionStatus\n const checkedSubscriptionsRef = useRef({});\n\n // Use ref to track reload timeout so it can be cancelled if user navigates\n const reloadTimeoutRef = useRef(null);\n\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n // Get WP version from WordPress config\n const wpVersion = typeof window !== \"undefined\" && window.marketplaceConfig?.wpVersion\n ? window.marketplaceConfig.wpVersion\n : \"\";\n\n useEffect(() => {\n const persistedNotice = sessionStorage.getItem('mp_success_notice');\n if (persistedNotice) {\n try {\n const noticeData = JSON.parse(persistedNotice);\n setNoticeState({\n visible: noticeData.visible,\n type: noticeData.type,\n pluginSlug: noticeData.pluginSlug\n });\n setSuccessState({\n visible: noticeData.visible,\n type: noticeData.successType,\n pluginSlug: noticeData.pluginSlug\n });\n\n // Schedule clearing from sessionStorage AFTER the notice is set in state\n // and the components have had a chance to mount and check it.\n // We use a small timeout to ensure it stays in sessionStorage long enough\n // for ProductDetail.jsx mount effect to see it.\n setTimeout(() => {\n sessionStorage.removeItem('mp_success_notice');\n }, 100);\n } catch (e) {\n console.error('Error parsing persisted success notice', e);\n }\n }\n }, []);\n\n // Initialize Mixpanel on mount and monitor consent changes\n // Uses useEffect to ensure Mixpanel only initializes when consent is given\n useEffect(() => {\n // Initialize Mixpanel on component mount based on initial consent status\n if (consentStatus === true) {\n initializeMixpanel();\n }\n\n // Set up listener for consent changes from plugin\n const handleConsentChange = (e) => {\n const newConsentStatus = e.detail?.data_consent_status !== undefined ? e.detail.data_consent_status : false;\n\n // Update state\n setConsentStatus(newConsentStatus);\n\n // Handle Mixpanel based on new consent status\n if (newConsentStatus === true) {\n // Consent granted - enable Mixpanel\n // Update window.marketplaceConfig consent status\n // Note: mixpanel config (token, globalProperties, distinctId) is always sent by PHP\n // regardless of consent status, so we can use it directly\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = true;\n }\n\n // Enable Mixpanel - it will read the config from window.marketplaceConfig\n enableMixpanel();\n } else {\n\n // Update window.marketplaceConfig\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = false;\n // Keep mixpanel config available for when consent is granted again\n }\n\n disableMixpanel();\n }\n };\n\n // Listen for custom consent change event from plugin (same page)\n window.addEventListener('onConsentStatusChanged', handleConsentChange);\n\n // Listen for localStorage changes (cross-page communication)\n const handleStorageChange = (e) => {\n // Only handle changes to our consent key\n if (e.key === 'onecom_data_consent_status') {\n const newConsentStatus = e.newValue === '1';\n\n // Trigger the same handler with the new consent status\n handleConsentChange({ detail: { data_consent_status: newConsentStatus } });\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n\n // Cleanup on unmount\n return () => {\n window.removeEventListener('onConsentStatusChanged', handleConsentChange);\n window.removeEventListener('storage', handleStorageChange);\n };\n }, []); // Empty dependency array - only run on mount/unmount\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n const fetchSubscriptionStatus = useCallback(async (pluginSlug) => {\n if (!isOnecomBrand) return;\n\n if (!isSpecialPlugin(pluginSlug)) return;\n\n // Mark as being checked\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: true }));\n\n try {\n const ajaxUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.ajaxUrl;\n if (!ajaxUrl) {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n return;\n }\n\n const formData = new FormData();\n formData.append('action', 'get_addon_purchase_status');\n formData.append('addon_purchase_check', 'true');\n formData.append('addon_slug', pluginSlug);\n\n const res = await fetch(ajaxUrl, {\n method: 'POST',\n body: formData\n });\n\n const json = await res.json();\n\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: json.is_purchased }));\n } catch (e) {\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: false }));\n } finally {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n }\n }, [isOnecomBrand]);\n\n // Function to cancel scheduled reload (called when user clicks \"Get Started\")\n const cancelReload = useCallback(() => {\n if (reloadTimeoutRef.current) {\n clearTimeout(reloadTimeoutRef.current);\n reloadTimeoutRef.current = null;\n }\n sessionStorage.removeItem('mp_success_notice');\n }, []);\n\n const isSpecialPlugin = useCallback((pluginSlug) => {\n return pluginSlug === \"wp-rocket\" || pluginSlug === \"seo-by-rank-math-pro\";\n }, []);\n\n const isWpVersionSupported = useCallback((minVersion) => {\n return isWpVersionSupportedHelper(wpVersion, minVersion);\n }, [wpVersion]);\n\n const shouldShowProvision = useCallback((plugin) => {\n if (!plugin || !isOnecomBrand) return false;\n return isSpecialPlugin(plugin.slug) && !plugin.installed && subscriptionStatus[plugin.slug] === true;\n }, [isOnecomBrand, subscriptionStatus, isSpecialPlugin]);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = useCallback((plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n }, [activePlugins, activeThemeAuthor]);\n\n // Handle plugin actions (install, activate, deactivate)\n const handlePluginAction = useCallback(async (action, plugin, source = '') => {\n // Check if this is Imagify plugin activation (handles 302 redirect case)\n const isImagifyActivation = action === 'activate' && plugin.slug === 'imagify';\n\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Use ref to track if action was successful (to prevent finally block from clearing pluginInAction)\n let actionSuccessful = false;\n\n // Set loading state for overlay using API response keys\n const pluginName = plugin.name || plugin.slug;\n let loadingMessage = '';\n\n if (action === 'activate') {\n const activatingMsg = uiI18n?.notifications?.activating || 'Activating {0}';\n loadingMessage = activatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'deactivate') {\n const deactivatingMsg = uiI18n?.notifications?.deactivating || 'Deactivating {0}';\n loadingMessage = deactivatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'install') {\n const installingMsg = uiI18n?.notifications?.installing || 'Installing {0}';\n loadingMessage = installingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'delete') {\n const deletingMsg = uiI18n?.notifications?.deleting || 'Deleting {0}';\n loadingMessage = deletingMsg.replace('{0}', pluginName) + '...';\n } else {\n // Fallback for other actions\n const actionText = action.charAt(0).toUpperCase() + (action.endsWith('e') ? action.slice(1, -1) : action.slice(1)) + 'ing';\n loadingMessage = `${actionText} ${pluginName}`;\n }\n\n setLoadingAction(loadingMessage);\n setLoadingPlugin('');\n\n // For Imagify, use setTimeout to allow React to render the loading overlay first\n if (isImagifyActivation) {\n // Build URL for activation\n let url = `${apiBaseUrl}${action}/${plugin.slug}`;\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n // Allow React to render loading overlay, then execute Imagify flow\n setTimeout(async () => {\n // Initiate the activation request (don't wait for response due to 302 redirect)\n try {\n await fetch(url, { method: \"POST\" });\n } catch (err) {\n console.log(\"Imagify activation request initiated\");\n }\n\n // Poll for activation status\n let attempts = 0;\n const maxAttempts = 6;\n const checkActivation = async () => {\n try {\n const checkUrl = `${apiBaseUrl}active/${plugin.slug}`;\n const response = await fetch(checkUrl);\n const data = await response.json();\n\n if (data && data.activated) {\n // Track successful Imagify activation\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n special_case: 'imagify_redirect',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n actionSuccessful = true;\n }\n return;\n }\n } catch (e) {\n console.error(\"Error checking activation status\", e);\n }\n\n attempts++;\n if (attempts < maxAttempts) {\n setTimeout(checkActivation, 1000);\n } else {\n // If we reached max attempts and still not activated, show error\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: 'Imagify activation timeout after polling',\n }\n });\n\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n };\n\n // Start checking\n setTimeout(checkActivation, 1000);\n }, 100);\n return;\n }\n\n try {\n let url = `${apiBaseUrl}/${action}/${plugin.slug}`;\n\n // prepare encoded download param (safe if plugin.download is undefined)\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n // original WP-AJAX URL + download_url appended\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n // append download_url to non-WP URL (adds ? or & correctly)\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n const res = await fetch(url, { method: \"POST\" });\n const result = await res.json();\n\n if (result.success) {\n setPlugins(prev =>\n prev.map(p => {\n if (p.slug === plugin.slug) {\n return { ...p, installed: result.data.installed, activated: result.data.activated };\n }\n\n // Handle Rank Math dependency: if Free is deactivated, Pro is also deactivated\n if (action === 'deactivate' && plugin.slug === 'seo-by-rank-math' && p.slug === 'seo-by-rank-math-pro') {\n return { ...p, activated: false };\n }\n\n // Handle Rank Math dependency: if Pro is activated, Free is also activated\n if (action === 'activate' && plugin.slug === 'seo-by-rank-math-pro' && p.slug === 'seo-by-rank-math') {\n return { ...p, activated: true };\n }\n\n return p;\n })\n );\n\n // Show success notice for install, activate and delete actions\n if (action === 'install' && result.data.installed) {\n setNoticeState({ visible: true, type: 'installed', pluginSlug: plugin.slug });\n\n // Track successful install\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'delete' && !result.data.installed) {\n setNoticeState({ visible: true, type: 'deleted', pluginSlug: plugin.slug });\n setSuccessState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track successful delete\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'activate' && result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n\n // Track successful activate\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload almost instantly\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n }\n\n return; // Skip finally block (though finally will still execute, actionSuccessful flag prevents clearing)\n } else if (action === 'deactivate' && !result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n setSuccessState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track successful deactivate\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n // Schedule reload after deactivation to refresh plugin state\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Don't clear pluginInAction for successful deactivation - keep back button disabled until reload\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n return;\n }\n } else {\n // Show error toast for activation and installation errors\n if (action === 'activate') {\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginActivationFailed || 'Activation failed',\n }\n });\n } else if (action === 'deactivate') {\n setErrorState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track deactivation error\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeactivationFailed || 'Deactivation failed',\n }\n });\n } else if (action === 'install') {\n setErrorState({ visible: true, type: 'install', pluginSlug: plugin.slug });\n\n // Track installation error\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || 'Installation failed',\n }\n });\n } else if (action === 'delete') {\n setErrorState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track deletion error\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeletionFailed || 'Deletion failed',\n }\n });\n } else {\n alert(result.data?.message || \"Failed to perform action\");\n }\n }\n } catch (err) {\n console.error(\"Plugin action failed\", err);\n\n // Track network/exception errors for install and activate\n if (action === 'activate' || action === 'install' || action === 'delete') {\n trackButtonClick({\n buttonName: action === 'activate' ? 'Activate' : (action === 'install' ? 'Install' : 'Delete'),\n buttonAction: action === 'activate' ? 'product_activate' : (action === 'install' ? 'product_install' : 'product_delete'),\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: err.message || 'Network error',\n }\n });\n }\n } finally {\n // Only clear pluginInAction if action was not successful\n // For successful actions (activate/deactivate), keep it true until page reload\n if (!actionSuccessful) {\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n }\n }, [apiBaseUrl, useWPHandlers, wpConfig, uiI18n]);\n\n const value = {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n cancelReload,\n loadingAction,\n loadingPlugin,\n noticeState,\n setNoticeState,\n errorState,\n setErrorState,\n successState,\n setSuccessState,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported,\n wpVersion,\n activePlugins,\n activeThemeAuthor\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMarketplace = () => {\n const context = useContext(MarketplaceContext);\n if (!context) {\n throw new Error('useMarketplace must be used within MarketplaceProvider');\n }\n return context;\n};\n","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","import React, { useState, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetailRankMath({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n plugins,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n noticeState,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n // Always get both plugins from context - seo-by-rank-math for first column, rank-math-pro for second\n const freePlugin = plugins.find(p => p.slug === \"seo-by-rank-math\") || null;\n const proPlugin = plugins.find(p => p.slug === \"seo-by-rank-math-pro\") || null;\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n \n\n {/* Header skeleton - single skeleton loader */}\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n {/* Benefits skeleton - keep structure, add skeletons */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton - keep structure, add skeletons */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Refs for slider elements\n const tableSliderRef = useRef(null);\n const sliderNavRef = useRef(null);\n const tableRef = useRef(null);\n const tableHeaderRef = useRef(null);\n const paginationRef = useRef(null);\n const dotsRef = useRef([]);\n\n // State for active slide\n const [activeSlide, setActiveSlide] = useState(0);\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [freePlugin?.slug, proPlugin?.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n // Navigation button click handlers\n const handlePrevClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft - slideWidth,\n behavior: 'smooth'\n });\n };\n\n const handleNextClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft + slideWidth,\n behavior: 'smooth'\n });\n };\n\n // Dot click handler\n const handleDotClick = (slideIndex) => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: slideWidth * slideIndex,\n behavior: 'smooth'\n });\n };\n\n // Slider functionality\n useEffect(() => {\n const tableSlider = tableSliderRef.current;\n const sliderNav = sliderNavRef.current;\n const table = tableRef.current;\n const tableHeader = tableHeaderRef.current;\n const pagination = paginationRef.current;\n\n if (!tableSlider || !sliderNav || !table || !tableHeader || !pagination) return;\n\n const prevButton = sliderNav.querySelector('.gv-previous');\n const nextButton = sliderNav.querySelector('.gv-next');\n\n // State tracking flags to prevent continuous class toggling\n let navIsAtBottom = false;\n let paginationState = 'top'; // 'top', 'overlay', or 'bottom'\n let isPaginationScrolledPast = false;\n let isTableBottomVisible = false;\n let isUpdatingClasses = false; // Flag to prevent observer callbacks during class updates\n\n // Throttle timer for scroll events\n let scrollThrottleTimer = null;\n let isScrollThrottled = false;\n\n // Update active dot and button states based on scroll position\n const updateSliderState = () => {\n const scrollLeft = tableSlider.scrollLeft;\n const slideWidth = tableSlider.offsetWidth;\n const currentSlide = Math.round(scrollLeft / slideWidth);\n\n setActiveSlide(currentSlide);\n\n // Update button disabled states\n if (prevButton) {\n if (currentSlide === 0) {\n prevButton.classList.add('gv-disabled');\n } else {\n prevButton.classList.remove('gv-disabled');\n }\n }\n\n if (nextButton) {\n const maxSlide = Math.round(tableSlider.scrollWidth / slideWidth) - 1;\n if (currentSlide >= maxSlide) {\n nextButton.classList.add('gv-disabled');\n } else {\n nextButton.classList.remove('gv-disabled');\n }\n }\n };\n\n // Calculate and set dynamic positioning for sticky navigation (only when needed)\n const calculateNavPosition = () => {\n const tablePaddingTop = parseFloat(getComputedStyle(table).paddingTop) || 0;\n const headerHeight = tableHeader.offsetHeight;\n const halfHeaderHeight = headerHeight / 2;\n\n // [X] = half of table header height + padding-top of table\n const translateY = halfHeaderHeight + tablePaddingTop;\n\n // [Y] = half viewport height - [X]\n const topValue = (window.innerHeight / 2) - translateY;\n\n // [Z] = half of table header height (excluding padding)\n const bottomValue = 2 * halfHeaderHeight;\n\n sliderNav.style.transform = `translateY(${translateY}px)`;\n sliderNav.style.top = `${topValue}px`;\n sliderNav.style.bottom = `${bottomValue}px`;\n\n return { bottomValue, halfHeaderHeight };\n };\n\n // Check nav boundary and update class only when state changes\n const checkNavBoundary = (bottomValue) => {\n const tableRect = table.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n\n // Calculate the threshold where sticky bottom constraint activates\n const stickyBottomThreshold = viewportHeight - bottomValue;\n\n // Only update class when boundary is crossed (state changes)\n const shouldBeAtBottom = tableRect.bottom <= stickyBottomThreshold;\n\n if (shouldBeAtBottom !== navIsAtBottom) {\n navIsAtBottom = shouldBeAtBottom;\n\n if (navIsAtBottom) {\n sliderNav.classList.add('gv-state-bottom');\n } else {\n sliderNav.classList.remove('gv-state-bottom');\n }\n }\n };\n\n // Update pagination state based on intersection observer flags\n const updatePaginationStateFromObservers = () => {\n // If already updating classes, ignore this call to prevent infinite loop\n if (isUpdatingClasses) {\n return;\n }\n\n // Determine the new state based on observer flags\n let newState;\n if (!isPaginationScrolledPast) {\n newState = 'top';\n } else if (isPaginationScrolledPast && !isTableBottomVisible) {\n newState = 'overlay';\n } else {\n newState = 'bottom';\n }\n\n // Only update classes when state actually changes\n if (newState !== paginationState) {\n // Set flag to prevent observer callbacks during class updates\n isUpdatingClasses = true;\n paginationState = newState;\n\n if (paginationState === 'top') {\n pagination.classList.add('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n } else if (paginationState === 'overlay') {\n pagination.classList.remove('gv-state-top');\n pagination.classList.add('gv-state-overlay');\n } else {\n pagination.classList.remove('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n }\n\n // Use requestAnimationFrame to clear flag after browser completes layout update\n requestAnimationFrame(() => {\n // Add a small delay to ensure layout is fully complete\n setTimeout(() => {\n isUpdatingClasses = false;\n }, 50);\n });\n }\n };\n\n // Initial calculation of nav position\n const { bottomValue } = calculateNavPosition();\n\n // Scroll event listener for slider\n tableSlider.addEventListener('scroll', updateSliderState);\n\n // Set up Intersection Observer for pagination element\n // Observes when pagination scrolls past the top of viewport\n const paginationObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n // When pagination is NOT intersecting and is above viewport, it's scrolled past\n if (!entry.isIntersecting && entry.boundingClientRect.top < 0) {\n isPaginationScrolledPast = true;\n } else if (entry.isIntersecting || entry.boundingClientRect.top >= 0) {\n isPaginationScrolledPast = false;\n }\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0, 1],\n rootMargin: '0px'\n }\n );\n\n // Set up Intersection Observer for table bottom\n // Create a sentinel element at the bottom of the table to observe\n const tableBottomSentinel = document.createElement('div');\n tableBottomSentinel.style.position = 'absolute';\n tableBottomSentinel.style.bottom = '0';\n tableBottomSentinel.style.left = '0';\n tableBottomSentinel.style.width = '1px';\n tableBottomSentinel.style.height = '1px';\n tableBottomSentinel.style.pointerEvents = 'none';\n table.style.position = 'relative';\n table.appendChild(tableBottomSentinel);\n\n const tableBottomObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n isTableBottomVisible = entry.isIntersecting;\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0],\n rootMargin: '-100px 0px 0px 0px'\n }\n );\n\n // Start observing\n paginationObserver.observe(pagination);\n tableBottomObserver.observe(tableBottomSentinel);\n\n // Throttled scroll handler - only executes nav boundary check when not already throttled\n const handleScroll = () => {\n if (isScrollThrottled) return;\n\n isScrollThrottled = true;\n\n // Use requestAnimationFrame for smooth updates\n requestAnimationFrame(() => {\n checkNavBoundary(bottomValue);\n });\n\n // Throttle for 100ms to reduce continuous execution\n scrollThrottleTimer = setTimeout(() => {\n isScrollThrottled = false;\n }, 100);\n };\n\n // Resize handler - recalculate positions and check boundaries\n const handleResize = () => {\n const { bottomValue: newBottomValue } = calculateNavPosition();\n checkNavBoundary(newBottomValue);\n };\n\n window.addEventListener('scroll', handleScroll);\n window.addEventListener('resize', handleResize);\n\n // Initial updates\n updateSliderState();\n checkNavBoundary(bottomValue);\n updatePaginationStateFromObservers();\n\n // Cleanup\n return () => {\n if (scrollThrottleTimer) {\n clearTimeout(scrollThrottleTimer);\n }\n tableSlider.removeEventListener('scroll', updateSliderState);\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('resize', handleResize);\n paginationObserver.disconnect();\n tableBottomObserver.disconnect();\n if (tableBottomSentinel && tableBottomSentinel.parentNode) {\n tableBottomSentinel.parentNode.removeChild(tableBottomSentinel);\n }\n };\n }, []);\n\n // Use the clicked plugin for header/main content, but always use freePlugin for first column\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract data with fallbacks for free version (first column - always seo-by-rank-math)\n const title = freePlugin?.name || plugin.name || 'Product';\n const description = freePlugin?.i18n?.description || freePlugin?.i18n?.subtitle;\n const subtitle = freePlugin?.i18n?.subtitle;\n\n // Extract data for pro version (second column - always rank-math-pro)\n const proTitle = proPlugin?.name || 'Rank Math Pro';\n const proDescription = proPlugin?.i18n?.subtitle || proPlugin?.i18n?.description;\n const proPrice = proPlugin ? formatPluginPrice(proPlugin, uiI18n?.labels?.free || 'Free', uiI18n) : '';\n\n // Check if proPrice is \"Free until renewal\" (rebate amount is 0)\n const isProFreeUntilRenewal = proPrice === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full price for pro plugin using common utility function\n const proFullPriceAmount = getFullPrice(proPlugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (use freePlugin's i18n if available, otherwise plugin's i18n)\n const i18nSource = freePlugin?.i18n || plugin.i18n;\n const benefitsFromI18n = extractNumberedProps(i18nSource, 'keyBenefitContent');\n\n // Extract key features separately for both free and pro plugins\n const freeKeyFeatures = extractNumberedProps(freePlugin?.i18n, 'keyFeatureContent');\n const proKeyFeatures = extractNumberedProps(proPlugin?.i18n, 'keyFeatureContent');\n\n // Determine the maximum number of features to display all from both plugins\n const maxFeatures = Math.max(freeKeyFeatures.length, proKeyFeatures.length);\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (i18nSource && typeof i18nSource === 'object') {\n let i = 1;\n while (i18nSource[`coreFeatureTitle${i}`] || i18nSource[`coreFeatureContent${i}`]) {\n const title = i18nSource[`coreFeatureTitle${i}`];\n const content = i18nSource[`coreFeatureContent${i}`];\n if (title && title.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: title, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n
\n
\n

Rank Math

\n

{description}

\n
\n
\n \n \n \n \n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n

{`${title} free`}

\n

{subtitle}

\n
\n
\n
\n
\n {uiI18n?.labels?.free || 'Free'}\n
\n
\n {useWPHandlers && freePlugin ? (\n \n ) : (\n freePlugin?.download && (\n \n )\n )}\n
\n
\n
\n
Recommended
\n
\n

{proTitle}

\n

{proDescription.substring(0, 120)}{proDescription.length > 120 ? '…' : ''}

\n
\n
\n
\n
\n {proPrice}{proPrice && !isProFreeUntilRenewal && `,-`}\n {proPrice && !isProFreeUntilRenewal && /{uiI18n?.labels?.timeMonth}}\n
\n {proPrice &&\n
\n
{uiI18n.labels.afterThat} [{proFullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
}\n
\n {useWPHandlers && proPlugin ? (\n \n ) : (\n \n )}\n
\n
\n
\n
\n {maxFeatures > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || freePlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n

{uiI18n?.keyFeatureHeading || proPlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n {Array.from({ length: maxFeatures }).map((_, i) => (\n
\n
\n {freeKeyFeatures[i] || ''}\n
\n
\n {proKeyFeatures[i] || ''}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n
\n
\n {[0, 1].map((slideIndex) => (\n handleDotClick(slideIndex)}\n style={{ cursor: 'pointer' }}\n >\n ))}\n
\n
\n
\n
\n\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport MarketplaceApp from \"./MarketplaceApp\";\nimport './i18n'\nimport { isWpVersionSupported } from \"./utils/wpVersionHelper\";\n\n// Inside-WP auto-mount\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const el = document.getElementById(\"marketplace-root\");\n if (el) {\n const config = window.marketplaceConfig || {};\n if (config.locale) {\n import(\"i18next\").then(({ default: i18n }) => {\n i18n.changeLanguage(config.locale);\n });\n }\n\n const isSupported = isWpVersionSupported(config.wpVersion, '6.2');\n\n if (typeof ReactDOM.createRoot === 'function' && isSupported) {\n // React 18+\n const root = ReactDOM.createRoot(el);\n root.render();\n } else {\n // React 17 or unsupported version\n // For unsupported versions, MarketplaceApp will still render and show WpVersionErrorState\n // We just need to use the compatible render method\n ReactDOM.render(, el);\n }\n }\n});\n"],"names":["isWpVersionSupported","version","minVersion","v1","String","split","v2","i","Math","max","length","num1","parseInt","num2","CURRENCY_SYMBOLS","CURRENCIES_WITH_POST_SYMBOL","getCurrencySymbol","currencyCode","formatPriceWithSymbol","amount","symbol","includes","getFullPrice","plugin","prices","Array","isArray","fullPrice","find","p","priceType","currency","formattedAmount","Number","toFixed","getRebatePrice","rebatePrice","undefined","formatPluginPrice","freeLabel","uiI18n","licenseType","price","labels","freeUntilRenewal","priceToUse","isActive","priceCurrency","priceAmount","WpVersionErrorState","useMarketplace","updateText","notifications","updateWPText","replace","createElement","className","updateWPTitle","type","onClick","handleUpdateClick","window","location","href","marketplaceConfig","wpConfig","adminUrl","updateWPButton","PluginActions","assetsBaseUrl","pluginInAction","subscriptionStatus","isCheckingSubscription","isOnecomBrand","handlePluginAction","isSpecialPlugin","pluginSubscriptionStatus","slug","pluginIsCheckingSubscription","assetBase","iconBase","handleClick","action","isNotInstalled","installed","trackButtonClick","buttonName","buttonAction","context","result","event","CustomEvent","detail","bubbles","cancelable","composed","document","dispatchEvent","formatMessage","message","pluginName","name","shouldShowSelectButton","shouldShowSkeleton","handleSelectClick","disabled","activated","handleManage","product_slug","product_name","has_redirect_url","redirectUrl","trim","has_onboarding_url","onboardingUrl","getPluginRedirectUrl","navigateToPluginUrl","manage","src","activating","activateButton","i18n","installing","installButton","I18nContext","createContext","ReportNamespaces","constructor","this","usedNamespaces","addUsedNamespaces","namespaces","forEach","ns","getUsedNamespaces","Object","keys","module","exports","ErrorState","useTranslation","t","handleRefresh","reload","initReactI18next","init","instance","options","react","isString","obj","defer","res","rej","promise","Promise","resolve","reject","makeString","object","lastOfPathSeparatorRegExp","cleanKey","key","indexOf","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","prototype","hasOwnProperty","call","k","setPath","newValue","e","slice","last","getPath","deepExtend","target","source","overwrite","prop","regexEscape","str","_entityMap","escape","data","s","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","Map","regExpQueue","getRegExp","pattern","regExpFromCache","get","regExpNew","RegExp","delete","shift","set","push","deepFind","keySeparator","tokens","current","next","nextPath","j","getCleanedCode","code","consoleLogger","log","args","output","warn","error","console","apply","Logger","concreteLogger","prefix","logger","debug","forward","deprecate","lvl","debugOnly","create","moduleName","clone","baseLogger","EventEmitter","observers","on","events","listener","numListeners","off","emit","from","entries","observer","numTimesAdded","ResourceStore","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","index","splice","getResource","lng","join","addResource","value","silent","concat","addResources","resources","m","addResourceBundle","deep","skipCopy","pack","JSON","parse","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","v","toJSON","postProcessor","processors","addPostProcessor","handle","translator","processor","process","PATH_KEY","Symbol","keysFromSelector","selector","opts","state","handler","proxy","revoke","Proxy","revocable","createProxy","checkedLoadedFor","shouldHandleAsObject","Translator","services","a","copy","changeLanguage","language","exists","o","interpolation","opt","resolved","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","filter","c","r","map","matched","test","ki","substring","looksLikeObjectPath","match","interpolator","nestingRegexp","parts","translate","lastKey","overloadTranslationOptionHandler","arguments","returnDetails","namespace","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","defaultValue","pluralSeparator","resForObjHndl","resType","toString","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","l","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","Intl","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","zero","one","two","few","many","other","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","addRule","rules","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","err","lngPart","needsPlural","getPluralFormsOfKey","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","val","Interpolator","format","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","lastIndexOf","elem","Boolean","reduce","createCachedFormatter","fn","cache","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cf","cacheInBuiltFormats","formats","number","formatter","NumberFormat","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","add","addCached","findIndex","mem","formatName","formatOptions","formatStr","optStr","rest","trimmedKey","isNaN","parseFormatStr","formatted","valOptions","locale","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","loaded","errors","q","pushPath","removePending","done","loadedKeys","n","read","fcName","tried","wait","resolver","setTimeout","bind","then","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","preload","simplifyPluralSuffix","partialBundledLanguages","ret","tDescription","transformOptions","initImmediate","noop","I18n","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","Error","li","lngInLngs","unshift","isLanguageChangingTo","setLngProps","setLng","fl","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","Locale","getTextInfo","ti","direction","createInstance","cloneInstance","forkResourceStore","mergedOptions","clonedData","prev","acc","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","unescape","text","forceOnboarding","isRankMath","hasOnboardingUrl","rankMathRegistrationSkip","redirectPath","cleanPath","startsWith","fullUrl","origin","FeaturedCarousel","loading","plugins","currentIndex","setCurrentIndex","useState","slidesPerView","setSlidesPerView","activePlugins","activeThemeAuthor","useEffect","updateSlidesPerView","innerWidth","addEventListener","removeEventListener","shouldShowPlugin","mustHavePlugins","some","requiredSlug","mustHaveThemesByAuthor","requiredAuthor","rankMathActivated","rankMathProActivated","featuredPlugins","featured","b","displayOrder","Infinity","totalSlides","maxIndex","width","position","overflow","display","gap","_","minWidth","maxWidth","flex","backgroundColor","borderRadius","justifyContent","maxHeight","border","background","marginBottom","marginTop","height","headings","recommendedHeading","transition","transform","title","featuredTitle","description","featuredContent","freeTrialPeriod","free","mainImage","bannerUrl","image","thumbnail","categoryObj","categories","WebkitBoxOrient","WebkitLineClamp","url","URL","searchParams","history","pushState","PopStateEvent","handleReadMore","featuredCta","timeMonth","media","srcSet","alt","goToPrevious","alignItems","cursor","opacity","min","goToSlide","padding","goToNext","LoadingOverlay","loadingAction","loadingPlugin","spinnerSrc","normalizePlugins","rawResponse","catalog","items","normalized","_plugin$installed","_plugin$activated","descriptionFromTextKeys","values","download","download_url","downloadUrl","authorName","author","authorUrl","seen","Set","has","SuccessNotice","noticeState","setNoticeState","cancelReload","visible","pluginSlug","isInstalled","isActivated","pluginInstalled","pluginActivated","activateNow","manageInMyProducts","handleActivate","activatePluginButton","handleClose","sessionStorage","removeItem","ProductDetail","onClose","usePortal","useWPHandlers","setErrorState","skeletonContent","minHeight","role","createPortal","body","scrollTo","handlePopState","onecomWpVars","subtitle","shortDescription","subTitle","isFree","freeTrialText","hasFreeTrialText","hasFreeTrialPeriod","freeTrial","isFreeUntilRenewal","fullPriceAmount","rebatePriceAmount","extractNumberedProps","baseName","results","benefitsFromI18n","keyFeaturesFromI18n","coreFeaturesFromI18n","featureTitle","content","desc","keyFeatures","benefits","coreFeatures","preventDefault","back","pointerEvents","backButton","ErrorToast","Fragment","untilRenewal","afterThat","keyFeatureHeading","benefitHeading","featureOverviewHeading","propPlugin","errorState","isVisible","timer","clearTimeout","isActivateError","isDeactivateError","isInstallError","isDeleteError","pluginActivationFailed","pluginDeactivationFailed","pluginInstallationFailed","pluginDeletionFailed","Marketplace","apiBaseUrl","enableDefaultStyles","setPluginInAction","fetchSubscriptionStatus","setPlugins","setUiI18n","allPluginsActivated","setAllPluginsActivated","catalogError","setCatalogError","catalogLoading","setCatalogLoading","shouldShowProvision","downloadingPlugins","setDownloadingPlugins","selectedPlugin","setSelectedPlugin","hasFetchedPlugins","useRef","hasTrackedMarketplaceVisit","lastTrackedPluginSlug","contentReceivedTimestamp","contentRenderTimestamp","isCachedRef","pluginFromQuery","URLSearchParams","search","currentPluginParam","fetch","json","Date","now","is_cached","success","trackPageView","category","isContentRendered","normalizedPlugins","apiUiI18n","fetchPlugins","visiblePlugins","React","bySlug","allActivated","getItem","trackMarketplaceVisit","trackPluginDetailVisit","shouldUseRankMathDetail","brand","isRankMathPlugin","DetailComponent","ProductDetailRankMath","replaceState","categoryMap","categoryKey","info","catKey","allPluginsOwned","managePlugins","viewProductsButton","iconUrl","listingDescription","en_GB","translation","da_DK","de_DE","es_ES","fi_FI","fr_FR","it_IT","nl_NL","no_NO","nb_NO","pt_PT","sv_SE","fi","MarketplaceContent","isSupportedWpVersion","isDetailPage","setIsDetailPage","checkDetailPage","hasPlugin","originalPushState","originalReplaceState","ProductBanner","MarketplaceApp","MarketplaceProvider","leftBannerUrl","rightBannerUrl","pageTitle","pageContent","__defProp","defineProperty","__publicField","enumerable","configurable","writable","__defNormalProp","promises","fetchWithCache","self","caches","open","response","ok","put","GvFlagElement","HTMLElement","observedAttributes","fetchFlag","svg","innerHTML","connectedCallback","getAttribute","attributeChangedCallback","oldValue","GvIconElement","fetchIcon","GvIllustrationElement","fetchIllustration","GvIndicatorElement","fetchIndicator","GvLoaderElement","fetchLoader","GvLogoElement","fetchLogo","GvPayIconElement","fetchPayIcon","GvTileElement","fetchTile","defineCustomElement","tagName","elementClass","customElements","define","TAG_NAME","win","loc","hostname","crypto","randomUUID","navigator","userAgent","onLine","referrer","screen","_array_like_to_array","arr","len","arr2","asyncGeneratorStep","gen","_next","_throw","arg","_async_to_generator","_construct","Parent","Class","_is_native_reflect_construct","Reflect","construct","Function","_set_prototype_of","_create_class","Constructor","protoProps","staticProps","props","descriptor","_defineProperties","_extends","assign","_get_prototype_of","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","_instanceof","left","right","hasInstance","_object_without_properties_loose","excluded","sourceKeys","_type_of","_wrap_native_super","_cache","Wrapper","valueOf","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","minLen","_unsupported_iterable_to_array","_ts_generator","thisArg","y","g","label","sent","trys","ops","verb","op","step","_ts_values","_a","__defProp$1","__publicField$1","__defNormalProp$1","__defProp$1$1","__publicField$1$1","__defNormalProp$1$1","NodeType$3","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","defaultObj","globalThis","defaultPrototype","accessorNames","isUntaintedAccessors","every","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","method","Zone","iframeEl","appendChild","contentWindow","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","index$1","n2","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","cssRules","sheetHref","ownerNode","ownerDocument","cssText","rule2","stringifyRule","isCSSImportRule","importStringified","styleSheet","statement","layerName","supportsText","mediaText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","Mirror","WeakMap","_proto","getId","id","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","_this","childNodes","childNode","hasNode","node2","meta","oldNode","maskInputValue","param","element","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","baseURL","_ref","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_step","_iterator","part","normalizeCssString","_testNoPxNorm","canvasService","canvasCtx","_id","tagNameRegex","genId","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","getHref","customHref","a2","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","descriptorsStr","inParens","c2","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","needMaskingText","maskTextClass","maskTextSelector","el","closest","contains","matches","e2","serializeNode","mirror2","mirror","blockClass","blockSelector","needsMask","inlineStylesheet","_options_maskInputOptions","maskTextFn","_options_dataURLOptions","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options_newlyAddedElement","newlyAddedElement","_options_cssCaptured","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","i2","attr","stylesheet","styleSheets","rel","_cssText","sheet","cssText1","childNodes2","splits","iterCount","cssTextNorm","normFactor","textContent","textContentNorm","startSubstring","cssNormSplits","splitNorm","jLimit","prevTextContent","prevMinLength","floor","normPart","splitCssText","markCssSplits","checked","selected","rr_open_mode","__context","canvas","ctx","getContext","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","complete","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_n2_getBoundingClientRect","getBoundingClientRect","class","rr_width","rr_height","contentDocument","rr_src","isSVG","ownerSVGElement","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options_skipChild","skipChild","_options_inlineStylesheet","slimDOMOptions","_options_inlineImages","_options_recordCanvas","onSerialize","onIframeLoad","_options_iframeLoadTimeout","iframeLoadTimeout","onStylesheetLoad","_options_stylesheetLoadTimeout","stylesheetLoadTimeout","_options_keepIframeSrcFn","_options_preserveWhiteSpace","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","serializedChildNode","shadowRootEl1","_step1","_iterator1","serializedChildNode1","isShadow","readyState","fired","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","a22","d","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","toStringTag","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","Error1","CssSyntaxError","line","column","file","plugin22","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","mark","aside","lines","start","end","_pico$1_createColors","index2","gutter","spacing","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","Stringifier","builder","atrule","params","rawValue","raws","afterName","nodes","block","between","beforeAfter","raw","buf","depth","child","before","decl","string","important","own","first","root2","root","rawCache","toUpperCase","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","Node2","defaults","addToError","postcssNode","input","insertAfter","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","_this_rangeBy","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","remove","replaceWith","_len","_key","bookmark","foundSelf","result2","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","stringifier2","node","node$1","Declaration$4$1","Node$3$1","Declaration","declaration$1","SourceMapConsumer$2$1","SourceMapConsumer","SourceMapGenerator$2$1","SourceMapGenerator","existsSync$1","existsSync","readFileSync$1","readFileSync","dirname$1$1","dirname","join$1","PreviousMap$2$1","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","decodeURIComponent","substr","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","map1","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath$1","fileURLToPath","pathToFileURL$1$1","pathToFileURL","isAbsolute$1","isAbsolute","resolve$1$1","nanoid$2","size","random","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","Input","hasBOM","mapResolve","offset","fromOffset","col","pos1","pos2","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","_i","_iter","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative$1","relative","resolve$2","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","MapGenerator","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","encodeURIComponent","fileURL","encodeURI","Comment$4$1","Node$2$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","cleanSource$1","markDirtyUp$1","proxyOf","Container$7$1","Node$1$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","_node2","cb","exist","existIndex","reverse","sample","i21","processed","rebuild","removeAll","replaceValues","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Document$3$1","Container$6$1","Document2","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","Warning","warning$1","Warning$1$1","Result$3$1","Result","processor2","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","AtRule","_Container$5$1_prototype_append","_Container$5$1_prototype_prepend","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","Root","ignore","root$1","list$2$1","comma","space","separators","array","func","inQuote","prevQuote","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","Rule","sep2","rule$1","Declaration$2$1","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","Parser$1$1","Parser","spaces","createTokenizer","token","unnamedAtrule","brackets","tokenizer","endOfFile","nextToken","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","founded","_step_value","doubleColon","quote","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","what","ignoreUnclosed","controlChar","fromCharCode","tokenizer2$1","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","type1","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","all","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","syntax","parser","helpers","postcss","processing","runAsync","onRejected","finally","onFinally","getAsyncError","handleError","postcssVersion","prepareVisitors","listeners","hasListener","promise1","_loop","_state","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","_visitors_visit2_visitorIndex","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","NoWorkResult","_processor","_css","_opts","_map","_map_generate","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","Processor","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","_defaults_source","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","x","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","_pico_createColors","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node3","Declaration$4","Node$3","Declaration2","declaration","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","PreviousMap2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","nanoid","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input2","resolve$3","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","MapGenerator2","Comment$4","Node$2","Comment2","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","cleanSource","markDirtyUp","Container$7","Node$1","Container2","container","LazyResult$4","Processor$3","Document$3","Container$6","Document23","document$1$2","Warning$2","Warning2","warning","Warning$1","Result$3","Result2","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","AtRule2","_Container$5_prototype_append","_Container$5_prototype_prepend","LazyResult$3","Processor$2","Container$4","Root$5","Root2","list$2","list_1","Container$3","list$1","Rule$3","Rule2","Declaration$2","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","Parser$1","Parser2","tokenizer22","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","NoWorkResult2","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Processor2","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","stringify$6","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","parentNode","_newChild","_refChild","_node","childIterator","firstChild","nextSibling","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","untaintedMethod","mutationObserverCtor","patch$2","replacement","wrapped","defineProperties","__rrweb_original__","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","timeout","leading","remaining","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","shadowRoot","getTime","StyleSheetMirror","_this_styleIDMap_get","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","inDom","rootShadowHost","getRootShadowHost","shadowHostInDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","addNode","__ln","previousSibling","current1","tail","removeNode","moveKey","parentId","MutationBuffer","mutations","processMutation","frozen","locked","adds","addedIds","addList","getNextId","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","n21","isAncestorInSet","droppedSet","candidate","tailNode","parentId1","unhandledNode","payload","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","attributeName","value1","unattachedDoc","implementation","createHTMLDocument","old","pname","getPropertyValue","newPriority","getPropertyPriority","pname1","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","childN","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","_isAncestorInSet","callbackWrapper","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initScrollObserver","scrollCb","sampling","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","index21","recurse","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","mutationObserver","currentWindow","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","_hooks","mutation","mousemove","mouseInteraction","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","handlers","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","h","initMoveObserver","mouseInteractionHandler","disableMap","currentPointerType","endsWith","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","getHandler","PointerEvent","TouchStart","TouchEnd","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","param1","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","text2","lastInputValue","_handlers","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","argumentsList","_getIdAndStyleId","styleBlock","replaceSync","deleteRule","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","sRoot","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","recordArgs","hookHandler","setter","encodedJs","blob","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","takeFullSnapshot$1","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","_options_sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","_e2_data","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","requestAnimationFrame","matchedCanvas","_this1","bitmap","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","postMessage","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","_handlers1","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","CSSRule","r2","adoptedStyleSheetData","styleIds","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","recording","cleanFrame","t2","record","checkoutEveryNms","checkoutEveryNth","_options_blockClass","_options_blockSelector","_options_ignoreClass","_options_ignoreSelector","_options_maskTextClass","_options_maskTextSelector","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options_recordDOM","_options_recordCrossOriginIframes","_options_recordAfter","recordAfter","_options_userTriggeredOnInput","_options_collectFonts","_options_ignoreCSSAttributes","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","date","email","month","tel","time","week","password","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","tmp","_ref_blockClass","_ref_blockSelector","_ref_maskTextClass","_ref_maskTextSelector","_ref_inlineStylesheet","_ref_inlineImages","_ref_recordCanvas","_ref_maskAllInputs","_ref_slimDOM","slimDOM","_ref_keepIframeSrcFn","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","parseFloat","pathToSelector","outerHTML","parentElement","localName","domSiblings","sibling","isObject","isObjTooDeep","limit","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","_obj","stringLengthLimit","Event","eventResult","eventValue","defaultLogOptions","level","lengthThreshold","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","levelType","_logger","patch","builtInProp","cycle","schedulingQueue","setImmediate","ToString","config","schedule","drain","isThenable","_then","oType","notify","chain","notifyIsolated","failure","msg","triggered","def","defWrapper","MakeDefWrapper","iteratePromises","rejecter","idx","MakeDef","NpoPromise","executor","Item","PromisePolyfill","PromisePrototype","msgs","at","ch","escapee","Config","DEBUG","LIB_VERSION","MAX_RECORDING_MS","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console$1","isUndefined","toArray","critical","log_func_with_prefix","console_with_prefix","safewrap","safewrapClass","klass","proto","bound","isFunction","extend","isArguments","iterable","include","needle","inherit","subclass","superclass","isEmptyObject","isDate","isNumber","encodeDates","formatDate","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","strip_empty_properties","truncate","JSONEncode","mixed_val","escapable","holder","mind","partial","isFinite","JSONDecode","SyntaxError","hex","uffff","base64Encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","c1","UUID","uuid","BLOCKED_UA_STRS","isBlockedUA","ua","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","cookie","nameEQ","ca","set_seconds","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","setTime","toGMTString","days","new_cookie_val","_testStorageSupported","storage","supported","cheap_guid","setItem","_localStorageSupported","localStorageSupported","forceCheck","localStorage","_sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","is_supported","register_event","fixEvent","stopPropagation","returnValue","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","getElementsByTagName","bad_whitespace","hasClass","getElementsBySelector","foundCount","elements","currentContextIndex","currentContext","getElementById","token_match","checkFunction","attrName","attrOperator","attrValue","query","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","browser","user_agent","vendor","browserVersion","os","device","referringDomain","currentUrl","properties","extra_props","people_properties","mpPageViewProperties","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","NOOP_FUNC","JSONStringify","JSONParse","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","OBJECT_STORES","IDBStorageWrapper","storeName","dbPromise","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","win$1","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","get_config","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","track","trackEventName","trackProperties","getConfigValue","_openDb","openRequest","indexedDB","ev","db","createObjectStore","dbOrError","makeTransaction","mode","storeCb","doTransaction","transaction","oncomplete","onabort","onerror","objectStore","req","getAll","logger$6","SharedLock","storageKey","pollIntervalMS","timeoutMS","promiseImpl","withLock","lockedCB","pid","startTime","keyX","keyY","keyZ","delay","waitFor","predicate","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","logger$5","RequestQueue","waitMs","timeoutPromise","throttledItems","usePersistence","queueStorage","sharedLockStorage","sharedLockTimeoutMS","reportError","errorReporter","memQueue","initialized","enqueueThrottleMs","enqueuePersisted","_enqueuePersisted","queueEntry","ensureInit","enqueue","flushInterval","queueEntries","enqueueItem","readFromStorage","storedQueue","saveToStorage","succeeded","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","logger$4","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","stopped","consecutiveRemovalFailures","itemIdsSentSuccessfully","flushOnlyOnInterval","_flushPromise","flush","stop","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","sendRequestPromise","requestInProgress","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","timesSent","removeItemsFromQueue","batchSendCallback","unloading","httpStatusCode","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","isRecordingExpired","serializedRecording","logger$3","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","SessionRecording","_mixpanel","mixpanelInstance","_onIdleTimeout","onIdleTimeout","_onMaxLengthReached","onMaxLengthReached","_onBatchSent","onBatchSent","_rrwebRecord","rrwebRecord","_stopRecording","replayId","batchStartUrl","replayStartUrl","idleExpires","maxExpires","replayStartTime","lastEventTimestamp","seqNo","idleTimeoutId","maxTimeoutId","recordMaxMs","recordMinMs","getConfig","batcherKey","batcher","flushEventsWithOptOut","stopRecording","getUserIdInfo","finalFlushUserIdInfo","userIdInfo","get_distinct_id","deviceId","get_property","userId","unloadPersistedData","getDurationMs","_getRecordMinMs","configVar","startRecording","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","isUserEvent","__enqueuePromise","maxTimeoutMs","skipFlush","isRrwebStopped","flushPromise","onOptOut","_flushEvents","serialize","tabId","get_tab_id","deserialize","_sendRequest","currentReplayId","reqParams","reqBody","onSuccess","responseBody","status","headers","apiHost","get_api_host","numEvents","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","canUseCompressionStream","gzipStream","stream","pipeThrough","Response","compressedBlob","configValue","RecordingRegistry","idb","isPersistenceEnabled","setActiveRecording","getActiveRecording","clearActiveRecording","markActiveRecordingExpired","deleteActiveRecording","flushInactiveRecordings","serializedRecordings","unloadPromises","logger$2","MixpanelRecorder","recordingRegistry","_flushInactivePromise","activeRecording","stopRecordingInProgress","resetRecording","sessionRecordingOptions","activeSerializedRecording","_stopCurrentRecording","pauseRecording","disableActiveRecording","stopRecordingPromise","resumeRecording","startNewIfInactive","getActiveReplayId","EV_CHANGE","EV_CLICK","EV_HASHCHANGE","EV_LOAD","EV_MP_LOCATION_CHANGE","EV_POPSTATE","EV_SCROLLEND","EV_SCROLL","EV_SUBMIT","EV_VISIBILITYCHANGE","CLICK_EVENT_PROPS","OPT_IN_CLASSES","OPT_OUT_CLASSES","SENSITIVE_DATA_CLASSES","TRACKED_ATTRS","INTERACTIVE_ARIA_ROLES","ALWAYS_NON_INTERACTIVE_TAGS","TEXT_CONTAINER_TAGS","EVENT_HANDLER_ATTRIBUTES","logger$1","getClasses","classes","getClassName","cls","baseVal","getPreviousElementSibling","previousElementSibling","isElementNode","getPropertiesFromElement","blockAttrsSet","extraAttrs","allowElementCallback","allowSelectors","elId","shouldTrackElementDetails","attrVal","shouldTrackValue","nthChild","nthOfType","currentElem","getSafeText","elText","isTextNode","isElementAllowed","sel","isElementBlocked","blockElementCallback","blockSelectors","isTag","curEl","elClasses","getPolyfillScrollEndFunction","originalFunction","supportsScrollEnd","polyfillFunction","polyfillEvent","scrollTimer","eventType","hasAnyInteractivityIndicators","isContentEditable","onclick","onmousedown","onmouseup","ontouchstart","ontouchend","hasInlineEventHandlers","primaryRole","hasInteractiveAriaRole","isDefinitelyNonInteractive","getRootNode","host","getClickEventComposedPath","getClickEventTargetElement","RageClickTracker","clicks","ShadowDOMObserver","changeCallback","observerConfig","observedShadowRoots","shadowObservers","isRageClick","thresholdPx","timeoutMs","clickCount","lastClick","sqrt","pow","observeFromEvent","observeShadowRoot","INTERACTION_EVENTS","LAYOUT_EVENTS","NAVIGATION_EVENTS","MUTATION_OBSERVER_CONFIG","attributeFilter","DeadClickTracker","onDeadClickCallback","eventListeners","shadowDOMObserver","isTracking","lastChangeEventTimestamp","pendingClicks","processingActive","processingTimeout","addClick","trackClick","added","triggerProcessing","getDeadClicks","clicksToEvaluate","deadClicks","click","hasChangesAfter","recordChangeEvent","processRecursively","startTracking","selectionHandler","stopTracking","AUTOCAPTURE_CONFIG_KEY","PAGEVIEW_OPTION_FULL_URL","CONFIG_ALLOW_SELECTORS","CONFIG_ALLOW_URL_REGEXES","CONFIG_BLOCK_ATTRS","CONFIG_BLOCK_ELEMENT_CALLBACK","CONFIG_BLOCK_SELECTORS","CONFIG_BLOCK_URL_REGEXES","CONFIG_CAPTURE_EXTRA_ATTRS","CONFIG_CAPTURE_TEXT_CONTENT","CONFIG_SCROLL_CAPTURE_ALL","CONFIG_SCROLL_CHECKPOINTS","CONFIG_TRACK_CLICK","CONFIG_TRACK_DEAD_CLICK","CONFIG_TRACK_INPUT","CONFIG_TRACK_PAGEVIEW","CONFIG_TRACK_RAGE_CLICK","CONFIG_TRACK_SCROLL","CONFIG_TRACK_PAGE_LEAVE","CONFIG_TRACK_SUBMIT","CONFIG_DEFAULTS$1","DEFAULT_PROPS","MP_EV_CLICK","MP_EV_DEAD_CLICK","MP_EV_RAGE_CLICK","Autocapture","mp","maxScrollViewDepth","hasTrackedScrollSession","previousScrollHeight","minDOMApisSupported","initPageListeners","initPageviewTracking","initClickTracking","initDeadClickTracking","initInputTracking","initScrollTracking","initSubmitTracking","initRageClickTracking","initPageLeaveTracking","getFullConfig","autocaptureConfig","currentUrlBlocked","allowUrlRegexes","allowed","allowRegex","blockUrlRegexes","pageviewTrackingConfig","trackDomEvent","mpEventName","isCapturedForHeatMap","is_recording_heatmap_data","_getClickTrackingConfig","blockAttrs","captureTextContent","captureExtraAttrs","capturedForHeatMap","srcElement","shouldTrackDomEvent","targetElementList","elementsJson","explicitNoTrack","shouldTrackDetails","docElement","elementText","guessRealClickTarget","targetProps","getPropsForDOMEvent","listenerPopstate","listenerHashchange","nativePushState","unused","nativeReplaceState","configKey","_trackPageLeave","currentScrollHeight","viewportHeight","scrollPercentage","round","foldLinePercentage","_initScrollDepthTracking","listenerScrollDepth","scrollEndPolyfill","scrollViewHeight","scrollY","scrollHeight","listenerClick","_deadClickTracker","deadClickEvent","listenerDeadClick","currentDeadClickConfig","normalizedConfig","stopDeadClickTracking","listenerChange","listenerLocationchange","previousTrackedUrl","tracked","track_pageview","shouldTrack","didPathChange","trackPageviewOption","lastScrollCheckpoint","listenerRageClick","_rageClickTracker","currentRageClickConfig","listenerScroll","scrollCheckpoints","checkpoint","listenerSubmit","listenerPageLeaveVisibilitychange","listenerPageLeaveLocationchange","listenerPageLoad","FLAGS_CONFIG_KEY","CONFIG_CONTEXT","CONFIG_DEFAULTS","FeatureFlagManager","initOptions","getFullApiRoute","getMpConfig","getConfigFunc","setMpConfig","setConfigFunc","getMpProperty","getPropertyFunc","trackingFunc","minApisSupported","flags","fetchFlags","trackedFeatures","ffConfig","isSystemEnabled","updateContext","newContext","oldContext","areFlagsReady","distinctId","traceparent","_fetchInProgressStartTime","fetchPromise","markFetchComplete","responseFlags","_traceparent","_fetchStartTime","_fetchCompleteTime","_fetchLatency","getVariant","featureName","fallback","getVariantSync","feature","trackFeatureCheck","getVariantValue","getFeatureData","getVariantValueSync","isEnabled","isEnabledSync","trackingProperties","toISOString","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","event_name","user_callback","that","override_event","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","metaKey","ctrlKey","FormTracker","submit","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","request_batchers","groups","conf","MixpanelPeople","update_referrer_info","increment","by","$add","track_charge","clear_charges","delete_user","_identify_called","device_id","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","save","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","entry","old_cookie","old_localstorage","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","get_referrer_info","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","mixpanel_master","load_extra_bundle","_onload","IDENTITY_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","XMLHttpRequest","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","autocapture","_init_tab_id","_check_and_start_session_recording","key_suffix","tab_id_key","should_generate_new_tab_id_key","tab_id","_should_load_recorder","recording_registry_idb","recordings","force_start","loadRecorder","handleLoadedRecorder","_recorder","is_sampled","shouldLoad","start_session_recording","stop_session_recording","pause_session_recording","resume_session_recording","_get_session_replay_id","get_session_recording_properties","replay_id","get_session_replay_url","replay_url","__get_recorder","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","img","headerValue","headerName","setRequestHeader","start_time","withCredentials","onreadystatechange","responseText","statusText","response_headers","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","queue_prefix","_batcher_configs","api_name","batcher_for","attrs","api_routes","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","alias","name_tag","prop_name","hook_name","property_name","endpoint_type","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","mixpanel","_src","onload","dom_loaded_handler","attachEvent","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","initializeMixpanel","data_consent_status","mixpanelConfig","persistence","disableMixpanel","enableMixpanel","getGlobalProperties","globalProps","globalProperties","pageParam","enhancedProperties","hit_type","page","fromEntries","trackEvent","eventProperties","isMixpanelAvailable","itemName","contentReceivedAt","contentRenderedAt","isCached","content_received_at","is_content_rendered","content_rendered_at","item_name","item_category","button_name","button_action","license_type","price_amount","price_currency","extractPluginProperties","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","setDefaults","getDefaults","MarketplaceContext","setSubscriptionStatus","setIsCheckingSubscription","setLoadingAction","setLoadingPlugin","successState","setSuccessState","consentStatus","setConsentStatus","initialConsent","reloadTimeoutRef","wpVersion","persistedNotice","noticeData","successType","handleConsentChange","newConsentStatus","handleStorageChange","useCallback","ajaxUrl","formData","FormData","is_purchased","isWpVersionSupportedHelper","isImagifyActivation","actionSuccessful","loadingMessage","deactivating","deleting","downloadParam","nonce","attempts","checkActivation","checkUrl","special_case","error_message","alert","Provider","useContext","alwaysNewT","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","i18nOptions","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","ref","usePrevious","isMounted","boundReset","i18nInstance","setI18n","getI18n","alreadyWarned","warnOnce","loadedClb","freePlugin","proPlugin","tableSliderRef","sliderNavRef","tableRef","tableHeaderRef","paginationRef","activeSlide","setActiveSlide","tableSlider","sliderNav","table","tableHeader","pagination","prevButton","querySelector","nextButton","navIsAtBottom","paginationState","isPaginationScrolledPast","isTableBottomVisible","isUpdatingClasses","scrollThrottleTimer","isScrollThrottled","updateSliderState","slideWidth","offsetWidth","currentSlide","scrollWidth","calculateNavPosition","tablePaddingTop","getComputedStyle","paddingTop","halfHeaderHeight","offsetHeight","translateY","topValue","bottomValue","bottom","checkNavBoundary","tableRect","stickyBottomThreshold","shouldBeAtBottom","updatePaginationStateFromObservers","newState","paginationObserver","IntersectionObserver","isIntersecting","boundingClientRect","rootMargin","tableBottomSentinel","tableBottomObserver","handleScroll","handleResize","newBottomValue","proTitle","proDescription","proPrice","isProFreeUntilRenewal","proFullPriceAmount","i18nSource","freeKeyFeatures","proKeyFeatures","maxFeatures","handlePrevClick","behavior","handleNextClick","slideIndex","handleDotClick","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","isSupported","ReactDOM","render"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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,OAAO,yBAChB,OAC8C,IAA9CsH,EAAStH,OAAO,0BAChB,QACmD,IAAnDsH,EAAStH,OAAO,+BAChB,aAEA,IAEf,EAEAsrE,WAAY,SAAShkE,GACjB,IAAItH,EAASjL,GAAE8M,KAAKwpE,aAAa/jE,GAC7B4J,EAAmB,SAAVlR,EAAqB,IAAM,IACpCrS,EAAM,CAAC,EAEX,GAAe,OAAXqS,EAAiB,CACjBrS,EAAoB,eAAIqS,EAExB,IAAIurE,EAAUx2E,GAAE4xE,cAAcr/D,EAAU4J,GACpCq6D,EAAQhkG,SACRomB,EAAgB,WAAI49E,EAE5B,CAEA,OAAO59E,CACX,EAOA69E,QAAS,SAASC,EAAYC,EAAQ3J,GAElC,OADA2J,EAASA,GAAU,GACf3J,GAAShtE,GAAE7sB,SAASujG,EAAY,SAC5B12E,GAAE7sB,SAASujG,EAAY,QAChB,aAEJ,QACA,8BAA8BvwF,KAAKuwF,GACnC,aACA12E,GAAE7sB,SAASujG,EAAY,aAAe12E,GAAE7sB,SAASujG,EAAY,aAC7D,2BACA12E,GAAE7sB,SAASujG,EAAY,mBAEvB,mBACA12E,GAAE7sB,SAASujG,EAAY,SAAW12E,GAAE7sB,SAASujG,EAAY,QACzD,iBACA12E,GAAE7sB,SAASujG,EAAY,SACvB,kBACA12E,GAAE7sB,SAASujG,EAAY,UAEvB,gBACA12E,GAAE7sB,SAASujG,EAAY,UACvB,SACA12E,GAAE7sB,SAASujG,EAAY,SACvB,aACA12E,GAAE7sB,SAASujG,EAAY,UAAY12E,GAAE7sB,SAASujG,EAAY,aAC1D,aACA12E,GAAE7sB,SAASujG,EAAY,SACvB,cACA12E,GAAE7sB,SAASwjG,EAAQ,SACtB32E,GAAE7sB,SAASujG,EAAY,UAChB,gBAEJ,SACA12E,GAAE7sB,SAASujG,EAAY,WACvB,iBACA12E,GAAE7sB,SAASujG,EAAY,aACvB,YACA12E,GAAE7sB,SAASujG,EAAY,WACvB,UACA12E,GAAE7sB,SAASujG,EAAY,SAAW12E,GAAE7sB,SAASujG,EAAY,YACzD,oBACA12E,GAAE7sB,SAASujG,EAAY,SACv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","sources":["webpack://MarketPlaceWP/./src/utils/wpVersionHelper.js","webpack://MarketPlaceWP/./src/utils/priceFormatter.js","webpack://MarketPlaceWP/./src/components/WpVersionErrorState.jsx","webpack://MarketPlaceWP/./src/components/PluginActions.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/context.js","webpack://MarketPlaceWP/external window \"React\"","webpack://MarketPlaceWP/./src/components/ErrorState.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://MarketPlaceWP/./node_modules/i18next/dist/esm/i18next.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/unescape.js","webpack://MarketPlaceWP/./src/utils/redirectUrlHelper.js","webpack://MarketPlaceWP/./src/components/FeaturedCarousel.jsx","webpack://MarketPlaceWP/./src/components/LoadingOverlay.jsx","webpack://MarketPlaceWP/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://MarketPlaceWP/./src/components/normalised-plugins.jsx","webpack://MarketPlaceWP/./src/components/SuccessNotice.jsx","webpack://MarketPlaceWP/./src/components/ProductDetail.jsx","webpack://MarketPlaceWP/./src/components/ErrorToast.jsx","webpack://MarketPlaceWP/./src/components/MarketPlace.jsx","webpack://MarketPlaceWP/./node_modules/void-elements/index.js","webpack://MarketPlaceWP/./src/i18n/index.js","webpack://MarketPlaceWP/./src/MarketplaceApp.jsx","webpack://MarketPlaceWP/external window \"ReactDOM\"","webpack://MarketPlaceWP/./src/components/ProductBanner.jsx","webpack://MarketPlaceWP/./node_modules/@group.one/gravity/dist/index.es.js","webpack://MarketPlaceWP/./node_modules/mixpanel-browser/dist/mixpanel.module.js","webpack://MarketPlaceWP/./src/utils/mixpanelTracking.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/defaults.js","webpack://MarketPlaceWP/./src/context/MarketplaceContext.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/utils.js","webpack://MarketPlaceWP/./src/components/ProductDetailRankMath.jsx","webpack://MarketPlaceWP/webpack/bootstrap","webpack://MarketPlaceWP/webpack/runtime/compat get default export","webpack://MarketPlaceWP/webpack/runtime/define property getters","webpack://MarketPlaceWP/webpack/runtime/hasOwnProperty shorthand","webpack://MarketPlaceWP/webpack/runtime/make namespace object","webpack://MarketPlaceWP/./src/index.jsx"],"sourcesContent":["export const isWpVersionSupported = (version, minVersion) => {\n if (!version) return true;\n const v1 = String(version).split('.');\n const v2 = String(minVersion).split('.');\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const num1 = parseInt(v1[i] || 0, 10);\n const num2 = parseInt(v2[i] || 0, 10);\n if (num1 > num2) return true;\n if (num1 < num2) return false;\n }\n return true;\n};\n","/**\n * Currency symbol mapping - scalable for future currencies\n */\nconst CURRENCY_SYMBOLS = {\n 'EUR': '€',\n 'USD': '$',\n 'GBP': '£',\n 'DKK': 'kr',\n 'NOK': 'kr',\n 'SEK': 'kr',\n // Add more currencies here as needed\n // 'JPY': '¥',\n};\n\n/**\n * Currencies that display the symbol AFTER the amount (e.g., \"79.00 kr\")\n * Most European currencies like EUR, USD, GBP display before, but Nordic currencies display after\n */\nconst CURRENCIES_WITH_POST_SYMBOL = ['DKK', 'SEK', 'NOK'];\n\n/**\n * Gets the currency symbol for a given currency code\n * @param {string} currencyCode - The currency code (e.g., 'EUR', 'USD')\n * @returns {string} - The currency symbol or the code itself as fallback\n */\nconst getCurrencySymbol = (currencyCode) => {\n return CURRENCY_SYMBOLS[currencyCode] || currencyCode;\n};\n\n/**\n * Formats price with currency symbol in the correct position\n * @param {string} amount - The formatted amount\n * @param {string} symbol - The currency symbol\n * @param {string} currencyCode - The currency code\n * @returns {string} - Formatted price with symbol in correct position\n */\nconst formatPriceWithSymbol = (amount, symbol, currencyCode) => {\n if (CURRENCIES_WITH_POST_SYMBOL.includes(currencyCode)) {\n return `${amount} ${symbol}`;\n }\n return `${symbol} ${amount}`;\n};\n\n/**\n * Extracts and formats the full price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted full price with currency symbol or null if not found\n */\nexport const getFullPrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const fullPrice = plugin.prices.find(p => p.priceType === 'full');\n if (fullPrice && fullPrice.amount && fullPrice.currency) {\n const symbol = getCurrencySymbol(fullPrice.currency);\n const formattedAmount = Number(fullPrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, fullPrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Extracts and formats the rebate price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted rebate price with currency symbol or null if not found\n */\nexport const getRebatePrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const rebatePrice = plugin.prices.find(p => p.priceType === 'rebate');\n if (rebatePrice && rebatePrice.amount !== undefined && rebatePrice.amount !== null && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Formats the price display for a plugin based on its license type\n * @param {Object} plugin - The plugin object containing price and license information\n * @param {string} freeLabel - Optional label for free plugins (defaults to 'Free')\n * @param {Object} uiI18n - Optional UI internationalization object containing labels\n * @returns {string} - Formatted price string ('Free', 'Symbol Amount', or blank)\n */\nexport const formatPluginPrice = (plugin, freeLabel = 'Free', uiI18n = null) => {\n const isFree = plugin.licenseType === \"free\";\n\n if (isFree) {\n return freeLabel;\n }\n\n // Handle new API format with prices array\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n // Check if there's a rebate price type for premium licenses\n const rebatePrice = plugin.prices.find(price => price.priceType === 'rebate');\n\n if (rebatePrice && plugin.licenseType === 'premium') {\n // If rebate amount is 0, display \"Free until renewal\"\n if (rebatePrice.amount === 0) {\n return uiI18n?.labels?.freeUntilRenewal || 'Free until renewal';\n }\n // If rebate amount is not 0, display \"amount until renewal\"\n if (rebatePrice.amount && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n const priceWithSymbol = formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n return `${priceWithSymbol} `;\n }\n }\n\n // If no rebate, find the full price (first active price, or use first price if isActive is not present)\n let priceToUse = plugin.prices.find(price => price.priceType === 'full' && (price.isActive === true || price.isActive === undefined));\n\n // Fallback: find any active price\n if (!priceToUse) {\n priceToUse = plugin.prices.find(price => price.isActive === true);\n }\n\n // If no price with isActive:true found, use first price (for formats without isActive)\n if (!priceToUse) {\n priceToUse = plugin.prices[0];\n }\n\n if (priceToUse && priceToUse.amount && priceToUse.currency) {\n const symbol = getCurrencySymbol(priceToUse.currency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(priceToUse.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, priceToUse.currency);\n }\n }\n\n // Backward compatibility: Handle old format with priceCurrency and priceAmount\n if (plugin.priceCurrency && plugin.priceAmount) {\n const symbol = getCurrencySymbol(plugin.priceCurrency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(plugin.priceAmount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, plugin.priceCurrency);\n }\n\n // Return blank for premium products without prices\n return '';\n};\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function WpVersionErrorState() {\n const { uiI18n } = useMarketplace();\n\n const handleUpdateClick = () => {\n window.location.href = typeof window !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl\n ? `${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`\n : \"/wp-admin/update-core.php\";\n };\n\n const updateText = (uiI18n?.notifications?.updateWPText)?.replace(\"{0}\", \"6.2\");\n\n return (\n
\n
\n
\n {uiI18n?.notifications?.updateWPTitle}\n
\n

\n {updateText}\n

\n \n {uiI18n?.updateWPButton}\n \n
\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackPluginAction, trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function PluginActions({ plugin }) {\n const {\n assetsBaseUrl,\n pluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n isOnecomBrand,\n handlePluginAction,\n uiI18n,\n isSpecialPlugin\n } = useMarketplace();\n\n // Get subscription status for this plugin from context\n const pluginSubscriptionStatus = subscriptionStatus[plugin.slug];\n const pluginIsCheckingSubscription = isCheckingSubscription[plugin.slug];\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n const handleClick = (action) => {\n // Check if brand is onecom, plugin is not installed, and slug is wp-rocket or rank-math-pro\n const isNotInstalled = !plugin.installed;\n\n if (isOnecomBrand && isSpecialPlugin(plugin.slug) && isNotInstalled && action === \"install\") {\n // Track install event with result: initiated for special plugins\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'initiated',\n }\n });\n\n // Dispatch custom event instead of calling handlePluginAction\n const event = new CustomEvent(\"onecom-plugin-provision\", {\n detail: {\n slug: plugin.slug,\n },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n // Dispatch on document so listeners using document.addEventListener receive it\n document.dispatchEvent(event);\n return;\n }\n\n // Default behavior\n handlePluginAction(action, plugin, 'product_detail');\n };\n\n const handleSelectClick = () => {\n // Track the select button click\n trackButtonClick({\n buttonName: 'Select',\n buttonAction: 'subscribe_addon',\n plugin: plugin,\n });\n\n // Dispatch custom event for provisioning\n const event = new CustomEvent(\"onecom-subscribe-addon\", {\n detail: { slug: plugin.slug },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n document.dispatchEvent(event);\n };\n\n const handleManage = () => {\n // Track the manage button click\n trackButtonClick({\n buttonName: 'Manage',\n buttonAction: 'manage_product',\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n const redirectUrl = getPluginRedirectUrl(plugin, false);\n navigateToPluginUrl(redirectUrl);\n };\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n // Check if we should show \"Select\" button instead of install/activate\n const shouldShowSelectButton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed && pluginSubscriptionStatus === false;\n\n // Check if we should show skeleton loader (while checking subscription for special plugins)\n // Show skeleton if: checking OR status is undefined (not yet fetched)\n const shouldShowSkeleton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed &&\n (pluginIsCheckingSubscription || pluginSubscriptionStatus === undefined);\n\n return (\n
\n {shouldShowSkeleton ? (\n
\n ) : shouldShowSelectButton ? (\n \n Select\n \n ) : plugin.installed ? (\n plugin.activated ? (\n \n {uiI18n?.labels?.manage || 'Manage'}\n \n \n ) : (\n handleClick(\"activate\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.activating || 'Activating {0}', pluginName)\n : (uiI18n?.activateButton || plugin.i18n?.activateButton || 'Activate')}\n \n )\n ) : (\n handleClick(\"install\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.installing || 'Installing {0}', pluginName)\n : (uiI18n?.installButton || plugin.i18n?.installButton || 'Install')}\n \n )}\n
\n );\n}\n","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","module.exports = window[\"React\"];","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ErrorState() {\n const { assetsBaseUrl } = useMarketplace();\n const { t } = useTranslation();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const handleRefresh = () => {\n window.location.reload();\n };\n\n return (\n
\n
\n
{t('ui.notifications.couldNotLoad')}
\n

{t('ui.notifications.refreshPage')}

\n \n {t('ui.button.refreshPage')}\n \n
\n
\n );\n}\n","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n return resolved?.res !== undefined;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n if (usingLegacyFormatFunction) {\n this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n }\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, {\n ...this.options,\n ...opts\n });\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, {\n ...this.options,\n ...opts\n });\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n return new I18n(options, callback);\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","/**\n * Get the redirect URL for a plugin based on its configuration and state.\n *\n * @param {Object} plugin The plugin object from API.\n * @param {boolean} forceOnboarding Whether to prioritize onboardingUrl for all plugins (default: false).\n * @returns {string} The resolved redirect path.\n */\nexport const getPluginRedirectUrl = (plugin, forceOnboarding = false) => {\n let redirectUrl = plugin.redirectUrl;\n\n const isRankMath = plugin.slug === 'seo-by-rank-math' || plugin.slug === 'seo-by-rank-math-pro';\n const hasOnboardingUrl = plugin.onboardingUrl && typeof plugin.onboardingUrl === 'string' && plugin.onboardingUrl.trim() !== '';\n\n if (isRankMath) {\n // Safe access to rankMathRegistrationSkip config\n const wpConfig = window.marketplaceConfig?.wpConfig;\n const rankMathRegistrationSkip = wpConfig ? wpConfig.rankMathRegistrationSkip === true : false;\n\n if (!rankMathRegistrationSkip && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n } else if (forceOnboarding && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n\n return redirectUrl;\n};\n\n/**\n * Navigates to the plugin's page in WordPress admin.\n *\n * @param {string} redirectPath The relative path to redirect to.\n */\nexport const navigateToPluginUrl = (redirectPath) => {\n if (redirectPath && redirectPath.trim() !== '') {\n // Get the admin URL from config (provided by PHP)\n const adminUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl;\n\n if (adminUrl) {\n // Construct full URL using adminUrl from PHP config\n // adminUrl is like \"https://example.com/wp-admin/\"\n // redirectUrl comes as \"wp-admin\\/admin.php?page=termly\" (JSON unescapes \\/ to /)\n // Strip \"wp-admin/\" prefix from redirectUrl if present to avoid duplication\n let cleanPath = redirectPath;\n if (cleanPath.startsWith('wp-admin/')) {\n cleanPath = cleanPath.substring('wp-admin/'.length);\n }\n const fullUrl = `${adminUrl}${cleanPath}`;\n window.location.href = fullUrl;\n } else {\n // Fallback: use window.location.origin if adminUrl not available\n const siteUrl = window.location.origin;\n const fullUrl = `${siteUrl}/${redirectPath}`;\n window.location.href = fullUrl;\n }\n return;\n }\n\n // Fallback to plugins page\n window.location.href = '/wp-admin/plugins.php';\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice } from \"../utils/priceFormatter\";\n\nexport default function FeaturedCarousel({ loading = false }) {\n const { plugins, assetsBaseUrl,uiI18n } = useMarketplace();\n const [currentIndex, setCurrentIndex] = useState(0);\n const [slidesPerView, setSlidesPerView] = useState(2);\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n useEffect(() => {\n const updateSlidesPerView = () => {\n if (window.innerWidth > 1024) {\n setSlidesPerView(2); // Desktop: show 2 slides\n } else if (window.innerWidth >= 600) {\n setSlidesPerView(1); // Tablet: show 2 slides\n } else {\n setSlidesPerView(1); // Mobile: show 1 slide\n }\n };\n\n updateSlidesPerView();\n window.addEventListener('resize', updateSlidesPerView);\n return () => window.removeEventListener('resize', updateSlidesPerView);\n }, []);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = (plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n };\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n // Filter featured plugins that are not active, pass rules check, and handle Rank Math logic\n const featuredPlugins = plugins.filter(plugin => {\n // Skip activated plugins\n if (plugin.activated === true || plugin.featured !== true) {\n return false;\n }\n\n // Handle Rank Math plugin visibility\n if (plugin.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n return !rankMathActivated && !rankMathProActivated && shouldShowPlugin(plugin);\n }\n\n if (plugin.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n return rankMathActivated && shouldShowPlugin(plugin);\n }\n\n // For all other plugins, apply normal filtering\n return shouldShowPlugin(plugin);\n }).sort((a, b) => {\n const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity;\n const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity;\n return orderA - orderB;\n });\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const totalSlides = featuredPlugins.length;\n const maxIndex = Math.max(0, totalSlides - slidesPerView);\n\n const goToPrevious = () => {\n if (currentIndex > 0) {\n setCurrentIndex(prev => prev - 1);\n }\n };\n\n const goToNext = () => {\n if (currentIndex < maxIndex) {\n setCurrentIndex(prev => prev + 1);\n }\n };\n\n // Show skeleton loaders while loading\n if (loading) {\n return (\n
\n
\n
\n
\n\n
\n \n {/* Generate 2 skeleton carousel slides */}\n {[...Array(slidesPerView)].map((_, index) => (\n \n
\n
\n {/* Badge skeleton */}\n
\n\n {/* Title skeleton */}\n
\n\n {/* Description skeletons */}\n
\n
\n
\n\n {/* Footer with button and price skeletons */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n \n \n
\n );\n }\n\n // If no featured plugins, don't render anything\n if (!featuredPlugins || featuredPlugins.length === 0) {\n return null;\n }\n\n const goToSlide = (index) => {\n setCurrentIndex(Math.min(index, maxIndex));\n };\n\n // Navigate to plugin detail page\n const handleReadMore = (plugin) => {\n if (typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, \"\", url.toString());\n\n // Dispatch custom event to notify app of navigation\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n\n return (\n
\n
\n
{uiI18n?.headings?.recommendedHeading}
\n
\n\n
\n \n {featuredPlugins.map((plugin, index) => {\n const title = plugin?.i18n?.featuredTitle;\n const description = plugin?.i18n?.featuredContent;\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract category name from plugin categories array\n const categoryObj = Array.isArray(plugin.categories) && plugin.categories.length\n ? (typeof plugin.categories[0] === 'object' ? plugin.categories[0] : { slug: String(plugin.categories[0]), title: String(plugin.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n const categoryName = categoryObj.title || categoryObj.slug || \"Others\";\n\n return (\n \n
\n \n
{plugin?.name}
\n
\n
\n \n {title}\n \n

\n {description?.trim()}\n

\n
\n\n
\n handleReadMore(plugin)}\n className=\"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0\"\n >\n {uiI18n?.featuredCta}\n \n\n \n {price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n
\n
\n
\n
\n \n \n \n \n
\n \n \n );\n })}\n \n \n\n {/* Navigation Controls: Arrows + Dots */}\n {totalSlides > slidesPerView && (\n \n \n \"Previous\"\n \n\n \n {Array.from({ length: maxIndex + 1 }).map((_, index) => (\n goToSlide(index)}\n className=\"gv-carousel-dot\"\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n border: 'none',\n background: currentIndex === index ? '#0066CC' : '#D0D0D0',\n cursor: 'pointer',\n padding: 0\n }}\n aria-label={`Go to slide ${index + 1}`}\n />\n ))}\n \n\n = maxIndex}\n className=\"gv-carousel-nav gv-carousel-nav-next\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: currentIndex >= maxIndex ? 'not-allowed' : 'pointer',\n opacity: currentIndex >= maxIndex ? 0.5 : 1\n }}\n aria-label=\"Next slide\"\n >\n \"Next\"\n \n \n )}\n
\n );\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function LoadingOverlay() {\n const { loadingAction, loadingPlugin, assetsBaseUrl } = useMarketplace();\n\n // Don't show overlay if no action is in progress\n if (!loadingAction) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const spinnerSrc = `${assetBase}assets/images/spinner.svg`;\n\n return (\n
\n
\n \n

{loadingAction}

\n
\n
\n );\n}\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function normalizePlugins(rawResponse) {\n // Support the new response shape:\n // { error: null, success: true, data: { catalog: [...], locale: \"...\", uiI18n: {...} } }\n\n if (!rawResponse || !rawResponse.data || !Array.isArray(rawResponse.data.catalog)) {\n // Log a clear error when the response is not supported\n // Keeping a minimal, non-crashing fallback of returning an empty object\n console.error(\"Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.\", rawResponse);\n return { plugins: [], uiI18n: {}, locale: null };\n }\n\n const items = rawResponse.data.catalog;\n const uiI18n = rawResponse.data.uiI18n || {};\n const locale = rawResponse.data.locale || null;\n\n if (items.length === 0) return { plugins: [], uiI18n, locale };\n\n // Map to normalized structure\n const normalized = items.map((plugin) => {\n // Prefer description coming from i18n.description, then fallback to description field\n const descriptionFromTextKeys = plugin?.i18n?.description;\n const description =\n (typeof descriptionFromTextKeys === \"string\" && descriptionFromTextKeys)\n ? descriptionFromTextKeys\n : (typeof plugin?.description === \"object\" && plugin.description !== null\n ? (plugin.description[\"en-gb\"] || Object.values(plugin.description)[0] || \"\")\n : (plugin?.description || \"\")\n );\n\n const download = plugin?.download || plugin?.download_url || plugin?.downloadUrl || \"\";\n\n // Author may be a string or an object { name, url }\n const authorName = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.name || \"\")\n : (plugin?.author || \"\");\n const authorUrl = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.url || \"\")\n : \"\";\n\n const priceAmount = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.amount\n : undefined;\n const priceCurrency = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.currency\n : undefined;\n\n return {\n ...plugin,\n name: plugin?.name || \"Unknown\",\n slug: plugin?.slug || \"\",\n thumbnail: plugin?.thumbnail || \"\",\n description,\n download,\n author: authorName,\n authorUrl,\n priceAmount,\n priceCurrency,\n installed: plugin?.installed ?? false,\n activated: plugin?.activated ?? false,\n i18n: plugin?.i18n || {},\n };\n });\n\n // Deduplicate by slug (first occurrence wins)\n const seen = new Set();\n const plugins = normalized.filter((p) => {\n const key = p.slug || p.name || JSON.stringify(p);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n\n return { plugins, uiI18n, locale };\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function SuccessNotice({ plugin }) {\n const {\n assetsBaseUrl,\n noticeState,\n setNoticeState,\n handlePluginAction,\n cancelReload,\n uiI18n\n } = useMarketplace();\n\n if (!noticeState || !noticeState.visible || noticeState.pluginSlug !== plugin?.slug) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n sessionStorage.removeItem('mp_success_notice');\n };\n\n const handleActivate = () => {\n handlePluginAction(\"activate\", plugin, 'product_detail');\n };\n\n const handleManage = () => {\n // Track the Get Started button click\n trackButtonClick({\n buttonName: 'Get started',\n buttonAction: 'manage_product',\n plugin: plugin,\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n // Cancel the scheduled reload since user is navigating manually\n cancelReload();\n\n const redirectUrl = getPluginRedirectUrl(plugin, true);\n navigateToPluginUrl(redirectUrl);\n };\n\n const isInstalled = noticeState.type === 'installed';\n const isActivated = noticeState.type === 'activated';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n \"Success\"\n
\n
\n {isInstalled && formatMessage(uiI18n?.notifications?.pluginInstalled || 'Plugin was installed.', pluginName)}\n {isActivated && formatMessage(uiI18n?.notifications?.pluginActivated || 'Plugin was activated.', pluginName)}\n
\n

\n {isInstalled && (uiI18n?.notifications?.activateNow || 'Activate it now to start using it.')}\n {isActivated && formatMessage(uiI18n?.notifications?.manageInMyProducts || '{0} plugin was activated for this site. You can manage it on the My products page.', pluginName)}\n

\n
\n {isInstalled && (\n \n {uiI18n?.activatePluginButton}\n \n )}\n {isActivated && (\n \n {uiI18n?.featuredCta || 'Get Started'}\n \n \n )}\n \n \n \n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice, getRebatePrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetail({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n {/* Breadcrumbs skeleton */}\n \n\n {/* Header skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Pricing / Action Section skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Key features skeleton */}\n
\n
\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n\n {/* Benefits skeleton */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [plugin.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract data with fallbacks\n const title = plugin.name || 'Product';\n const description = plugin.i18n?.description || plugin.i18n?.subtitle || plugin.description || plugin.shortDescription || 'No description available.';\n const subTitle = plugin.i18n?.subtitle;\n const isFree = plugin.licenseType === \"free\";\n const freeTrialText = plugin.i18n?.freeTrialText || '';\n const hasFreeTrialText = freeTrialText && freeTrialText.trim() !== '';\n const freeTrialPeriod = plugin.i18n?.freeTrialPeriod || '';\n const hasFreeTrialPeriod = freeTrialPeriod && freeTrialPeriod.trim() !== '';\n\n const price = (hasFreeTrialPeriod || hasFreeTrialText)\n ? (uiI18n?.headings?.freeTrial || 'Free trial*')\n : formatPluginPrice(plugin, uiI18n?.labels?.free || 'Free', uiI18n);\n\n // Check if price is \"Free until renewal\" (rebate amount is 0)\n const isFreeUntilRenewal = price === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full and rebate prices using common utility functions\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (keyBenefitContent1, keyBenefitContent2, etc.)\n const benefitsFromI18n = extractNumberedProps(plugin.i18n, 'keyBenefitContent');\n\n // Extract key features from i18n (keyFeatureContent1 through keyFeatureContent6)\n const keyFeaturesFromI18n = extractNumberedProps(plugin.i18n, 'keyFeatureContent');\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (plugin.i18n && typeof plugin.i18n === 'object') {\n let i = 1;\n while (plugin.i18n[`coreFeatureTitle${i}`] || plugin.i18n[`coreFeatureContent${i}`]) {\n const featureTitle = plugin.i18n[`coreFeatureTitle${i}`];\n const content = plugin.i18n[`coreFeatureContent${i}`];\n if (featureTitle && featureTitle.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: featureTitle, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const keyFeatures = keyFeaturesFromI18n;\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n\n
\n
\n

{title}

\n

{description}

\n {/*{plugin.author && (*/}\n {/*

*/}\n {/* Author: {plugin.authorUrl ? {plugin.author} : plugin.author}*/}\n {/*

*/}\n {/*)}*/}\n
\n
\n \n \n \n \n
\n
\n\n {/* Pricing / Action Section */}\n
\n
\n
\n
\n
\n
\n
\n

{title}

\n

{subTitle}

\n
\n
\n
\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n {price}\n ) : (\n <>\n \n {plugin.licenseType === \"premium\" && rebatePriceAmount !== null\n ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount)\n : price}\n \n {!isFree && !isFreeUntilRenewal && price && (\n /{uiI18n?.labels?.timeMonth}\n )}\n \n )}\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n
\n
{freeTrialText}
\n
\n ) : (\n !isFree && price && fullPriceAmount && rebatePriceAmount !== null &&\n
\n
{uiI18n.labels.untilRenewal} [{rebatePriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
{uiI18n.labels.afterThat} [{fullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
\n )}\n
\n {useWPHandlers ? (\n \n ) : (\n plugin.download && (\n \n Download\n \n )\n )}\n
\n
\n
\n
\n\n {keyFeatures.length > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || plugin.i18n?.keyFeatureHeading}

\n
\n
\n {keyFeatures.map((f, i) => (\n
\n
\n {f}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n\n {/* Details / Benefits */}\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {/* Core Features Overview */}\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\n}\n","import React, { useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function ErrorToast({ plugin: propPlugin }) {\n const {\n assetsBaseUrl,\n errorState,\n setErrorState,\n uiI18n,\n plugins\n } = useMarketplace();\n\n const plugin = propPlugin || plugins.find(p => p.slug === errorState.pluginSlug);\n const isVisible = errorState && errorState.visible && errorState.pluginSlug === plugin?.slug;\n\n useEffect(() => {\n if (isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, 5000);\n\n return () => clearTimeout(timer);\n }\n }, [isVisible]);\n\n if (!isVisible) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n const isActivateError = errorState.type === 'activate';\n const isDeactivateError = errorState.type === 'deactivate';\n const isInstallError = errorState.type === 'install';\n const isDeleteError = errorState.type === 'delete';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n
\n \n
\n {isActivateError && formatMessage(uiI18n?.notifications?.pluginActivationFailed || \"Couldn't activate plugin.\", pluginName)}\n {isDeactivateError && formatMessage(uiI18n?.notifications?.pluginDeactivationFailed || \"Couldn't deactivate plugin.\", pluginName)}\n {isInstallError && formatMessage(uiI18n?.notifications?.pluginInstallationFailed || \"Couldn't install plugin.\", pluginName)}\n {isDeleteError && formatMessage(uiI18n?.notifications?.pluginDeletionFailed || \"Couldn't delete plugin.\", pluginName)}\n
\n \n
\n
\n );\n }\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {normalizePlugins} from \"./normalised-plugins\";\nimport \"@group.one/gravity\";\nimport { useTranslation } from \"react-i18next\";\nimport ProductDetail from \"./ProductDetail\";\nimport ProductDetailRankMath from \"./ProductDetailRankMath\";\nimport ErrorState from \"./ErrorState\";\nimport WpVersionErrorState from \"./WpVersionErrorState\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getRebatePrice,getFullPrice } from \"../utils/priceFormatter\";\nimport { trackMarketplaceVisit, trackPluginDetailVisit, trackPageView } from \"../utils/mixpanelTracking\";\n\nexport default function Marketplace() {\n const {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported\n } = useMarketplace();\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n const [downloadingPlugins, setDownloadingPlugins] = useState({});\n const [selectedPlugin, setSelectedPlugin] = useState(null);\n\n // Use ref to track if plugins have already been fetched\n const hasFetchedPlugins = useRef(false);\n\n // Use ref to track if marketplace visit has been tracked (prevent duplicates)\n const hasTrackedMarketplaceVisit = useRef(false);\n\n // Use ref to track last tracked plugin detail to prevent duplicate tracking\n const lastTrackedPluginSlug = useRef(null);\n\n // Use ref to store timestamps for tracking\n const contentReceivedTimestamp = useRef(null);\n const contentRenderTimestamp = useRef(null);\n\n // Use ref to store is_cached flag from API response\n const isCachedRef = useRef(false);\n\n // Construct icon base URL with fallback logic\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Determine if a plugin slug is in the URL\n const pluginFromQuery = typeof window !== \"undefined\"\n ? new URLSearchParams(window.location.search).get(\"plugin\")\n : null;\n\n // Get base page URL (without plugin parameter)\n const getBaseUrl = () => {\n if (typeof window === \"undefined\") return \"\";\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n return url.toString();\n };\n\n\n // After plugins load, select plugin from query if present\n useEffect(() => {\n if (pluginFromQuery && plugins.length) {\n const match = plugins.find(p => p.slug === pluginFromQuery);\n if (match) setSelectedPlugin(match);\n } else if (!pluginFromQuery) {\n // Clear selectedPlugin when no plugin parameter in URL\n setSelectedPlugin(null);\n }\n }, [pluginFromQuery, plugins]);\n\n // Listen for browser back/forward navigation\n useEffect(() => {\n const handlePopState = () => {\n const currentPluginParam = new URLSearchParams(window.location.search).get(\"plugin\");\n if (!currentPluginParam) {\n // URL no longer has plugin parameter, clear selection\n setSelectedPlugin(null);\n } else if (plugins.length) {\n // URL has plugin parameter, update selection\n const match = plugins.find(p => p.slug === currentPluginParam);\n if (match) setSelectedPlugin(match);\n }\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [plugins]);\n\n const {t} = useTranslation();\n\n useEffect(() => {\n // Only fetch once\n if (hasFetchedPlugins.current) {\n return;\n }\n\n async function fetchPlugins() {\n try {\n hasFetchedPlugins.current = true;\n const res = await fetch(`${apiBaseUrl}`);\n const json = await res.json();\n\n // Capture timestamp when API content is received\n contentReceivedTimestamp.current = Date.now();\n\n // Extract is_cached flag from API response\n isCachedRef.current = json.is_cached || false;\n\n // Check for API error response (success: false)\n if (json && json.success === false) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n // Check for blank/empty response\n if (!json || !json.data || !json.data.catalog || (Array.isArray(json.data.catalog) && json.data.catalog.length === 0)) {\n console.error(\"API returned empty or blank response\");\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n const { plugins: normalizedPlugins, uiI18n: apiUiI18n } = normalizePlugins(json);\n setPlugins(normalizedPlugins);\n setUiI18n(apiUiI18n);\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n if (isOnecomBrand) {\n const specialPlugins = normalizedPlugins.filter(p => isSpecialPlugin(p.slug));\n\n // Fetch subscription status for each special plugin\n specialPlugins.forEach(plugin => {\n fetchSubscriptionStatus(plugin.slug);\n });\n }\n } catch (e) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n } finally {\n setCatalogLoading(false);\n }\n }\n\n fetchPlugins();\n }, [apiBaseUrl, isOnecomBrand, fetchSubscriptionStatus, setPlugins]);\n\n // Use useMemo to filter plugins based on rules and activation status\n const visiblePlugins = React.useMemo(() => {\n if (!plugins.length) return [];\n\n const bySlug = new Map();\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n plugins.forEach((p) => {\n // Skip if already in map or activated\n if (bySlug.has(p.slug) || p.activated === true) {\n return;\n }\n\n // Handle Rank Math plugin visibility\n if (p.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n if (!rankMathActivated && !rankMathProActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n if (p.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n if (rankMathActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n // Apply filtering based on rules\n if (shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n });\n\n return Array.from(bySlug.values());\n }, [plugins, shouldShowPlugin]);\n\n // Update allPluginsActivated in context whenever plugins change\n useEffect(() => {\n if (plugins.length > 0) {\n // If there are no plugins that should be visible (not activated and passing rules), then all are activated/hidden\n const allActivated = visiblePlugins.length === 0;\n setAllPluginsActivated(allActivated);\n }\n }, [plugins, visiblePlugins, setAllPluginsActivated]);\n\n // Track marketplace visit when plugins are loaded and no plugin detail is shown\n useEffect(() => {\n if (!catalogLoading && !catalogError && plugins.length > 0 && !pluginFromQuery && !hasTrackedMarketplaceVisit.current) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackMarketplaceVisit(contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n hasTrackedMarketplaceVisit.current = true;\n }\n }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]);\n\n // Track plugin detail page visit when selectedPlugin changes\n useEffect(() => {\n if (selectedPlugin && pluginFromQuery && lastTrackedPluginSlug.current !== selectedPlugin.slug) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackPluginDetailVisit(selectedPlugin, contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n lastTrackedPluginSlug.current = selectedPlugin.slug;\n }\n // Reset when returning to marketplace list\n if (!pluginFromQuery) {\n lastTrackedPluginSlug.current = null;\n }\n }, [selectedPlugin, pluginFromQuery]);\n\n const handleDownloadClick = (e, plugin) => {\n e.stopPropagation();\n\n // Set downloading state\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Reset after a short delay (download is triggered immediately)\n // The browser handles the actual download, so we simulate completion\n setTimeout(() => {\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: false }));\n }, 2000);\n };\n\n const openDetail = (plugin, e) => {\n // Debug to confirm click\n setSelectedPlugin(plugin);\n };\n\n\n\n // Helper function to determine if we should use ProductDetailRankMath\n const shouldUseRankMathDetail = (plugin) => {\n if (!plugin) return false;\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = plugin.slug === \"seo-by-rank-math-pro\" || plugin.slug === \"seo-by-rank-math\";\n return isOnecomBrand && isRankMathPlugin;\n };\n\n\n\n if (catalogLoading) {\n // If there's a plugin parameter in the URL, show appropriate skeleton based on plugin type\n if (pluginFromQuery) {\n // Determine if we should use RankMath detail component based on slug\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = pluginFromQuery === \"seo-by-rank-math-pro\" || pluginFromQuery === \"seo-by-rank-math\";\n const DetailComponent = (isOnecomBrand && isRankMathPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {}}\n usePortal={false}\n loading={true}\n />\n );\n }\n\n // Show catalog skeleton loaders while catalog is loading\n return (\n
\n
\n
\n
\n
\n {/* Generate first 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n\n {/* Additional skeleton loaders after 3 cards */}\n
\n
\n
\n\n\n {/* Generate remaining 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n );\n }\n\n // Show error state if API failed or returned error\n if (catalogError) {\n return ;\n }\n\n // Show WP version error state\n if (!isWpVersionSupported('6.2')) {\n return ;\n }\n\n // Early return: show full page detail instead of list\n if (selectedPlugin && pluginFromQuery) {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {\n // Return to listing (clear selection and URL)\n setSelectedPlugin(null);\n // Check if history.back() will work (has navigable history)\n if (typeof window !== \"undefined\" && window.history && window.history.length > 1) {\n window.history.back();\n } else {\n // In new-tab scenario, manually remove plugin parameter from URL\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n window.history.replaceState({}, '', url.toString());\n }\n }}\n usePortal={false}\n loading={catalogLoading}\n />\n );\n }\n\n // Group plugins by a single, specific category (first category), avoid duplicates across headings\n const categoryMap = new Map();\n\n visiblePlugins.forEach((p) => {\n // Handle new category object structure: { id, slug, title, description }\n const categoryObj = Array.isArray(p.categories) && p.categories.length\n ? (typeof p.categories[0] === 'object' ? p.categories[0] : { slug: String(p.categories[0]), title: String(p.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n\n const categoryKey = categoryObj.slug || categoryObj.title || \"Others\";\n\n if (!categoryMap.has(categoryKey)) {\n categoryMap.set(categoryKey, { info: categoryObj, plugins: [] });\n }\n categoryMap.get(categoryKey).plugins.push(p);\n });\n\n const categories = Array.from(categoryMap.entries()).filter(([catKey, { plugins: list }]) => list.length > 0);\n\n // If all plugins are activated, show the \"You've got all our plugins!\" message\n if (allPluginsActivated) {\n return (\n
\n
\n
{uiI18n?.notifications?.allPluginsOwned}
\n

{uiI18n?.text?.managePlugins}

\n {\n // Navigate to plugins page\n window.location.href = '/wp-admin/plugins.php';\n }}\n >\n {uiI18n.viewProductsButton}\n \n \n
\n
\n );\n }\n\n return (\n
\n {categories.map(([catKey, { info, plugins: list }]) => (\n
\n

{info.title || catKey}

\n {info.description &&

{info.description}

}\n
\n {list.map((plugin) => {\n const isProvisionable = shouldShowProvision(plugin);\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n return (\n {\n setSelectedPlugin(plugin);\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, '', url.toString());\n }}\n >\n
\n {plugin.name}\n
\n
\n
\n

{plugin.name}

\n

{plugin.i18n.listingDescription || plugin.i18n.subtitle}

\n \n <>\n {plugin.licenseType === \"premium\" && (rebatePriceAmount > 0) ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) : price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n \n
\n
\n
\n \n \n
\n\n
\n
\n );\n })}\n \n \n ))}\n {/* Remove overlay render (keep for non-query usage) */}\n {selectedPlugin && !pluginFromQuery && (() => {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n setSelectedPlugin(null)}\n loading={catalogLoading}\n />\n );\n })()}\n \n );\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\n// Import all translations\nimport en_GB from \"./locales/en_GB.json\";\nimport da_DK from \"./locales/da_DK.json\";\nimport de_DE from \"./locales/de_DE.json\";\nimport es_ES from \"./locales/es_ES.json\";\nimport fi_FI from \"./locales/fi_FI.json\";\nimport fr_FR from \"./locales/fr_FR.json\";\nimport it_IT from \"./locales/it_IT.json\";\nimport nl_NL from \"./locales/nl_NL.json\";\nimport no_NO from \"./locales/no_NO.json\";\nimport pt_PT from \"./locales/pt_PT.json\";\nimport sv_SE from \"./locales/sv_SE.json\";\n\nconst resources = {\n\ten_GB: { translation: en_GB },\n\tda_DK: { translation: da_DK },\n\tde_DE: { translation: de_DE },\n\tes_ES: { translation: es_ES },\n\tfi_FI: { translation: fi_FI },\n\tfr_FR: { translation: fr_FR },\n\tit_IT: { translation: it_IT },\n\tnl_NL: { translation: nl_NL },\n\tno_NO: { translation: no_NO },\n\tnb_NO: { translation: no_NO },\n\tpt_PT: { translation: pt_PT },\n\tsv_SE: { translation: sv_SE },\n\tfi: { translation: fi_FI },\n};\n\ni18n.use(initReactI18next).init({\n\tresources,\n\tlng: \"en_GB\", // default fallback\n\tfallbackLng: \"en_GB\",\n\tinterpolation: { escapeValue: false },\n});\n\nexport default i18n;\n","import React, { useState, useEffect } from \"react\";\nimport Marketplace from \"./components/MarketPlace\";\nimport ProductBanner from \"./components/ProductBanner\";\nimport FeaturedCarousel from \"./components/FeaturedCarousel\";\nimport LoadingOverlay from \"./components/LoadingOverlay\";\nimport { MarketplaceProvider, useMarketplace } from \"./context/MarketplaceContext\";\n\n// Inner component that can access the context\nconst MarketplaceContent = () => {\n const { allPluginsActivated, catalogError, catalogLoading, isWpVersionSupported } = useMarketplace();\n\n const isSupportedWpVersion = isWpVersionSupported('6.2');\n\n // Track detail page visibility with state\n const [isDetailPage, setIsDetailPage] = useState(\n typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\")\n );\n\n // Listen for URL changes (both popstate and custom events)\n useEffect(() => {\n const checkDetailPage = () => {\n const hasPlugin = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\");\n setIsDetailPage(!!hasPlugin);\n };\n\n // Listen for browser back/forward\n window.addEventListener('popstate', checkDetailPage);\n\n // Listen for programmatic URL changes (from pushState)\n const originalPushState = window.history.pushState;\n window.history.pushState = function(...args) {\n originalPushState.apply(this, args);\n checkDetailPage();\n };\n\n // Listen for programmatic URL changes (from replaceState)\n const originalReplaceState = window.history.replaceState;\n window.history.replaceState = function(...args) {\n originalReplaceState.apply(this, args);\n checkDetailPage();\n };\n\n return () => {\n window.removeEventListener('popstate', checkDetailPage);\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n };\n }, []);\n\n return (\n <>\n \n
\n
\n\n {!isDetailPage && !catalogError && isSupportedWpVersion && }\n {!isDetailPage && !allPluginsActivated && isSupportedWpVersion && }\n\n \n
\n
\n \n );\n};\n\nconst MarketplaceApp = ({ apiBaseUrl, useWPHandlers, wpConfig, enableDefaultStyles, assetsBaseUrl }) => {\n return (\n \n \n \n );\n};\n\nexport default MarketplaceApp;\n","module.exports = window[\"ReactDOM\"];","import React from 'react';\nimport { useMarketplace } from '../context/MarketplaceContext';\n\nconst ProductBanner = ({ loading = false }) => {\n const { assetsBaseUrl, uiI18n } = useMarketplace();\n const leftBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png';\n const rightBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png';\n\n return (\n
\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Left\n \n
\n )}\n
\n\n
\n {loading ? (\n <>\n
\n
\n
\n
\n \n ) : (\n <>\n

\n {uiI18n?.headings?.pageTitle}\n

\n

\n {uiI18n?.text?.pageContent}\n

\n \n )}\n
\n\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Product\n \n
\n )}\n
\n
\n );\n};\n\nexport default ProductBanner;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst promises = {};\nasync function fetchWithCache(url) {\n if (promises.hasOwnProperty(url)) {\n return promises[url];\n }\n let promise;\n if (url.startsWith(\"data:\") || !(\"caches\" in self)) {\n promise = fetch(url).then((r) => r.text());\n } else {\n promise = caches.open(\"gravity\").then(async (cache) => {\n let response = await cache.match(url);\n if (!response) {\n response = await fetch(url);\n if (response.ok) {\n await cache.put(url, response.clone());\n }\n }\n return response.text();\n });\n }\n promises[url] = promise;\n return promise;\n}\nclass GvFlagElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchFlag(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchFlag(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchFlag(newValue);\n }\n }\n}\n__publicField(GvFlagElement, \"TAG_NAME\", \"gv-flag\");\nclass GvIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIcon(newValue);\n }\n }\n}\n__publicField(GvIconElement, \"TAG_NAME\", \"gv-icon\");\nclass GvIllustrationElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIllustration(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIllustration(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIllustration(newValue);\n }\n }\n}\n__publicField(GvIllustrationElement, \"TAG_NAME\", \"gv-illustration\");\nclass GvIndicatorElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIndicator(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIndicator(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIndicator(newValue);\n }\n }\n}\n__publicField(GvIndicatorElement, \"TAG_NAME\", \"gv-indicator\");\nclass GvLoaderElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLoader(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLoader(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLoader(newValue);\n }\n }\n}\n__publicField(GvLoaderElement, \"TAG_NAME\", \"gv-loader\");\nclass GvLogoElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLogo(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLogo(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLogo(newValue);\n }\n }\n}\n__publicField(GvLogoElement, \"TAG_NAME\", \"gv-logo\");\nclass GvPayIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchPayIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchPayIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchPayIcon(newValue);\n }\n }\n}\n__publicField(GvPayIconElement, \"TAG_NAME\", \"gv-pay-icon\");\nclass GvTileElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchTile(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchTile(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchTile(newValue);\n }\n }\n}\n__publicField(GvTileElement, \"TAG_NAME\", \"gv-tile\");\nfunction defineCustomElement(tagName, elementClass) {\n if (!customElements.get(tagName)) {\n customElements.define(tagName, elementClass);\n }\n}\ndefineCustomElement(GvFlagElement.TAG_NAME, GvFlagElement);\ndefineCustomElement(GvIconElement.TAG_NAME, GvIconElement);\ndefineCustomElement(GvIllustrationElement.TAG_NAME, GvIllustrationElement);\ndefineCustomElement(GvIndicatorElement.TAG_NAME, GvIndicatorElement);\ndefineCustomElement(GvLoaderElement.TAG_NAME, GvLoaderElement);\ndefineCustomElement(GvLogoElement.TAG_NAME, GvLogoElement);\ndefineCustomElement(GvPayIconElement.TAG_NAME, GvPayIconElement);\ndefineCustomElement(GvTileElement.TAG_NAME, GvTileElement);\n","// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n crypto: {randomUUID: function() {throw Error('unsupported');}},\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _set_prototype_of(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function wrapNativeSuper(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class);\n };\n return _wrap_native_super(Class);\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) {\n return {\n done: true\n };\n }\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction _ts_values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = function(obj, key, value) {\n return key in obj ? __defProp$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1 = function(obj, key, value) {\n return __defNormalProp$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar _a;\nvar __defProp$1$1 = Object.defineProperty;\nvar __defNormalProp$1$1 = function(obj, key, value) {\n return key in obj ? __defProp$1$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1$1 = function(obj, key, value) {\n return __defNormalProp$1$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar NodeType$3 = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType$3 || {});\nvar testableAccessors$1 = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods$1 = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype$1 = {};\nvar isAngularZonePresent$1 = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1,\n patch: patch$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n var hostEl = // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null;\n return Boolean(hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2);\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, \" -webkit-background-clip: text; background-clip: text;\");\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n var cssText = rule2.cssText;\n if (cssText.split('\"').length < 3) return cssText;\n var statement = [\n \"@import\",\n \"url(\" + JSON.stringify(rule2.href) + \")\"\n ];\n if (rule2.layerName === \"\") {\n statement.push(\"layer\");\n } else if (rule2.layerName) {\n statement.push(\"layer(\" + rule2.layerName + \")\");\n }\n if (rule2.supportsText) {\n statement.push(\"supports(\" + rule2.supportsText + \")\");\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n var rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n var sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n var stringifiedRules = Array.from(rules2, function(rule2) {\n return stringifyRule(rule2, sheetHref);\n }).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n var importStringified;\n try {\n importStringified = // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n var ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n var regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nvar Mirror = /*#__PURE__*/ function() {\n function Mirror() {\n __publicField$1$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n };\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror;\n}();\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue(param) {\n var element = param.element, maskInputOptions = param.maskInputOptions, tagName = param.tagName, type = param.type, value = param.value, maskInputFn = param.maskInputFn;\n var text = value || \"\";\n var actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nvar ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n var chunkSize = 50;\n for(var x2 = 0; x2 < canvas.width; x2 += chunkSize){\n for(var y = 0; y < canvas.height; y += chunkSize){\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n var pixelBuffer = new Uint32Array(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function(pixel) {\n return pixel !== 0;\n })) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n var type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n var url;\n try {\n url = new URL(path, baseURL != null ? baseURL : window.location.href);\n } catch (err) {\n return null;\n }\n var regex = /\\.([0-9a-z]+)(?:$)/i;\n var match = url.pathname.match(regex);\n var _ref;\n return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null;\n}\nfunction extractOrigin(url) {\n var origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nvar URL_WWW_MATCH = /^www\\..*/i;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (DATA_URI.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (filePath[0] === \"/\") {\n return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n }\n var stack = href.split(\"/\");\n var parts = filePath.split(\"/\");\n stack.pop();\n for(var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;){\n var part = _step.value;\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join(\"/\") + maybeQuote + \")\";\n });\n}\nfunction normalizeCssString(cssText, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n var childNodes2 = Array.from(style.childNodes);\n var splits = [];\n var iterCount = 0;\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n var cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n var normFactor = cssTextNorm.length / cssText.length;\n for(var i2 = 1; i2 < childNodes2.length; i2++){\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n var textContentNorm = normalizeCssString(childNodes2[i2].textContent, _testNoPxNorm);\n var jLimit = 100;\n var j = 3;\n for(; j < textContentNorm.length; j++){\n if (// keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1) {\n continue;\n }\n break;\n }\n for(; j < textContentNorm.length; j++){\n var startSubstring = textContentNorm.substring(0, j);\n var cssNormSplits = cssTextNorm.split(startSubstring);\n var splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i2 - 1].textContent !== \"\") {\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n startSubstring = startSubstring.substring(0, startSubstring.length - 1);\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1;\n } else if (j === textContentNorm.length - 1) {\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n var prevTextContent = childNodes2[i2 - 1].textContent;\n if (prevTextContent && typeof prevTextContent === \"string\") {\n var prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n var k = Math.floor(splitNorm / normFactor);\n for(; k > 0 && k < cssText.length;){\n iterCount += 1;\n if (iterCount > 50 * childNodes2.length) {\n splits.push(cssText);\n return splits;\n }\n var normPart = normalizeCssString(cssText.substring(0, k), _testNoPxNorm);\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(1, Math.floor((splitNorm - normPart.length) / normFactor));\n } else {\n k -= Math.max(1, Math.floor((normPart.length - splitNorm) * normFactor));\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nvar _id = 1;\nvar tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (_instanceof(element, HTMLFormElement)) {\n return \"form\";\n }\n var processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nvar canvasService;\nvar canvasCtx;\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars2;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n var output = [];\n while(true){\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n var descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while(true){\n var c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nvar cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n var a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for(var eIndex = element.classList.length; eIndex--;){\n var className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {}\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for(var eIndex = node2.classList.length; eIndex--;){\n var className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n var el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(\".\" + maskTextClass)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {}\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n var fired = false;\n var styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, needsMask = options.needsMask, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var rootId = getRootId(doc, mirror2);\n switch(n2.nodeType){\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId: rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n rootId: rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc: doc,\n needsMask: needsMask,\n maskTextFn: maskTextFn,\n rootId: rootId,\n cssCaptured: cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId: rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n var docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n var needsMask = options.needsMask, maskTextFn = options.maskTextFn, rootId = options.rootId, cssCaptured = options.cssCaptured;\n var parent = index$1.parentNode(n2);\n var parentTagName = parent && parent.tagName;\n var textContent2 = \"\";\n var isStyle = parentTagName === \"STYLE\" ? true : void 0;\n var isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId: rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, rootId = options.rootId;\n var needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n var tagName = getValidTagName$1(n2);\n var attributes = {};\n var len = n2.attributes.length;\n for(var i2 = 0; i2 < len; i2++){\n var attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function(s2) {\n return s2.href === n2.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n var cssText1 = stringifyStylesheet(n2.sheet);\n if (cssText1) {\n if (n2.childNodes.length > 1) {\n cssText1 = markCssSplits(cssText1, n2);\n }\n attributes._cssText = cssText1;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n var value = n2.value;\n var checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n } else if (!(\"__context\" in n2)) {\n var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n var image = n2;\n var imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n var priorCrossOrigin = image.crossOrigin;\n var recordInlineImage = function() {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\"Cannot inline img src=\" + imageSrc + \"! Error: \" + err);\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n var mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n var _n2_getBoundingClientRect = n2.getBoundingClientRect(), width = _n2_getBoundingClientRect.width, height = _n2_getBoundingClientRect.height;\n attributes = {\n class: attributes.class,\n rr_width: \"\" + width + \"px\",\n rr_height: \"\" + height + \"px\"\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n var isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {}\n return {\n type: NodeType$3.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock: needBlock,\n rootId: rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _options_iframeLoadTimeout = options.iframeLoadTimeout, iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout, onStylesheetLoad = options.onStylesheetLoad, _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var needsMask = options.needsMask;\n var _options_preserveWhiteSpace = options.preserveWhiteSpace, preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace;\n if (!needsMask) {\n var checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, checkAncestors);\n }\n var _serializedNode = serializeNode(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n cssCaptured: cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n var id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, {\n id: id\n });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n var shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl)) serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;){\n var childN = _step.value;\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n var shadowRootEl1 = null;\n if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;){\n var childN1 = _step1.value;\n var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions);\n if (serializedChildNode1) {\n isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode1);\n }\n }\n }\n }\n var parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(n2, function() {\n var iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n2, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(n2, function() {\n if (onStylesheetLoad) {\n var serializedLinkNode = serializeNodeWithId(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n2, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n var _ref = options || {}, tmp = _ref.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp, _ref_blockClass = _ref.blockClass, blockClass = _ref_blockClass === void 0 ? \"rr-block\" : _ref_blockClass, _ref_blockSelector = _ref.blockSelector, blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector, _ref_maskTextClass = _ref.maskTextClass, maskTextClass = _ref_maskTextClass === void 0 ? \"rr-mask\" : _ref_maskTextClass, _ref_maskTextSelector = _ref.maskTextSelector, maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector, _ref_inlineStylesheet = _ref.inlineStylesheet, inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet, _ref_inlineImages = _ref.inlineImages, inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages, _ref_recordCanvas = _ref.recordCanvas, recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas, _ref_maskAllInputs = _ref.maskAllInputs, maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs, maskTextFn = _ref.maskTextFn, maskInputFn = _ref.maskInputFn, _ref_slimDOM = _ref.slimDOM, slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM, dataURLOptions = _ref.dataURLOptions, preserveWhiteSpace = _ref.preserveWhiteSpace, onSerialize = _ref.onSerialize, onIframeLoad = _ref.onIframeLoad, iframeLoadTimeout = _ref.iframeLoadTimeout, onStylesheetLoad = _ref.onStylesheetLoad, stylesheetLoadTimeout = _ref.stylesheetLoadTimeout, _ref_keepIframeSrcFn = _ref.keepIframeSrcFn, keepIframeSrcFn = _ref_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _ref_keepIframeSrcFn;\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n } : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = {\n exports: {}\n};\nvar x$1 = String;\nvar create$1 = function create$1() {\n return {\n isColorSupported: false,\n reset: x$1,\n bold: x$1,\n dim: x$1,\n italic: x$1,\n underline: x$1,\n inverse: x$1,\n hidden: x$1,\n strikethrough: x$1,\n black: x$1,\n red: x$1,\n green: x$1,\n yellow: x$1,\n blue: x$1,\n magenta: x$1,\n cyan: x$1,\n white: x$1,\n gray: x$1,\n bgBlack: x$1,\n bgRed: x$1,\n bgGreen: x$1,\n bgYellow: x$1,\n bgBlue: x$1,\n bgMagenta: x$1,\n bgCyan: x$1,\n bgWhite: x$1\n };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nvar __viteBrowserExternal$2 = {};\nvar __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar pico$1 = picocolors_browserExports$1;\nvar terminalHighlight$1$1 = require$$2$1;\nvar CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError, Error1);\n function CssSyntaxError(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError);\n }\n return _this;\n }\n var _proto = CssSyntaxError.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico$1_createColors = pico$1.createColors(true), bold = _pico$1_createColors.bold, gray = _pico$1_createColors.gray, red = _pico$1_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError;\n}(_wrap_native_super(Error));\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nvar DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2$1 = /*#__PURE__*/ function() {\n function Stringifier(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier;\n}();\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nvar Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n var str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nvar isClean$2$1 = symbols$1.isClean, my$2$1 = symbols$1.my;\nvar CssSyntaxError$2$1 = cssSyntaxError$1;\nvar Stringifier2$1 = stringifier$1;\nvar stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode$1(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4$1 = /*#__PURE__*/ function() {\n function Node2(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node2.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode$1(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2$1(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2$1] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3$1;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node2, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node2;\n}();\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nvar Node$3$1 = node$1;\nvar Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) {\n _inherits(Declaration, Node$3$1);\n function Declaration(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3$1.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration;\n}(Node$3$1);\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nvar urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = {\n nanoid: nanoid$1$1\n};\nvar SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator;\nvar existsSync$1 = require$$2$1.existsSync, readFileSync$1 = require$$2$1.readFileSync;\nvar dirname$1$1 = require$$2$1.dirname, join$1 = require$$2$1.join;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2$1 = /*#__PURE__*/ function() {\n function PreviousMap(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2$1)) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2$1)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join$1(dirname$1$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap;\n}();\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nvar SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator;\nvar fileURLToPath$1 = require$$2$1.fileURLToPath, pathToFileURL$1$1 = require$$2$1.pathToFileURL;\nvar isAbsolute$1 = require$$2$1.isAbsolute, resolve$1$1 = require$$2$1.resolve;\nvar nanoid$2 = nonSecure$1.nanoid;\nvar terminalHighlight$2 = require$$2$1;\nvar CssSyntaxError$1$1 = cssSyntaxError$1;\nvar PreviousMap$1$1 = previousMap$1;\nvar fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nvar pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nvar Input$4$1 = /*#__PURE__*/ function() {\n function Input(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n var map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input;\n}();\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nvar SourceMapConsumer$3 = require$$2$1.SourceMapConsumer, SourceMapGenerator$3 = require$$2$1.SourceMapGenerator;\nvar dirname$2 = require$$2$1.dirname, relative$1 = require$$2$1.relative, resolve$2 = require$$2$1.resolve, sep$1 = require$$2$1.sep;\nvar pathToFileURL$2 = require$$2$1.pathToFileURL;\nvar Input$3$1 = input$1;\nvar sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nvar pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nvar MapGenerator$2$1 = /*#__PURE__*/ function() {\n function MapGenerator(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname$2(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n var path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n var fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator;\n}();\nvar mapGenerator$1 = MapGenerator$2$1;\nvar Node$2$1 = node$1;\nvar Comment$4$1 = /*#__PURE__*/ function(Node$2$1) {\n _inherits(Comment, Node$2$1);\n function Comment(defaults) {\n var _this;\n _this = Node$2$1.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment;\n}(Node$2$1);\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nvar isClean$1$1 = symbols$1.isClean, my$1$1 = symbols$1.my;\nvar Declaration$3$1 = declaration$1;\nvar Comment$3$1 = comment$1;\nvar Node$1$1 = node$1;\nvar parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp$1(i2);\n }\n }\n}\nvar Container$7$1 = /*#__PURE__*/ function(Node$1$1) {\n _inherits(Container, Node$1$1);\n function Container() {\n return Node$1$1.apply(this, arguments) || this;\n }\n var _proto = Container.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3$1(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4$1(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4$1(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3$1(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container;\n}(Node$1$1);\nContainer$7$1.registerParse = function(dependant) {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = function(dependant) {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = function(dependant) {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = function(dependant) {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7$1.rebuild(child);\n });\n }\n};\nvar Container$6$1 = container$1;\nvar LazyResult$4$1, Processor$3$1;\nvar Document$3$1 = /*#__PURE__*/ function(Container$6$1) {\n _inherits(Document2, Container$6$1);\n function Document2(defaults) {\n var _this;\n _this = Container$6$1.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document2.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n };\n return Document2;\n}(Container$6$1);\nDocument$3$1.registerLazyResult = function(dependant) {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = function(dependant) {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nvar printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2$1 = /*#__PURE__*/ function() {\n function Warning(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning;\n}();\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nvar Warning$1$1 = warning$1;\nvar Result$3$1 = /*#__PURE__*/ function() {\n function Result(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result;\n}();\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nvar SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nvar BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nvar SLASH$1 = \"/\".charCodeAt(0);\nvar NEWLINE$1 = \"\\n\".charCodeAt(0);\nvar SPACE$1 = \" \".charCodeAt(0);\nvar FEED$1 = \"\\f\".charCodeAt(0);\nvar TAB$1 = \"\t\".charCodeAt(0);\nvar CR$1 = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nvar OPEN_CURLY$1 = \"{\".charCodeAt(0);\nvar CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nvar SEMICOLON$1 = \";\".charCodeAt(0);\nvar ASTERISK$1 = \"*\".charCodeAt(0);\nvar COLON$1 = \":\".charCodeAt(0);\nvar AT$1 = \"@\".charCodeAt(0);\nvar RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES$1:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1:\n {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT$1:\n {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH$1:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH$1){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE$1.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5$1 = container$1;\nvar AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) {\n _inherits(AtRule, Container$5$1);\n function AtRule(defaults) {\n var _this;\n _this = Container$5$1.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule;\n}(Container$5$1);\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nvar Container$4$1 = container$1;\nvar LazyResult$3$1, Processor$2$1;\nvar Root$5$1 = /*#__PURE__*/ function(Container$4$1) {\n _inherits(Root, Container$4$1);\n function Root(defaults) {\n var _this;\n _this = Container$4$1.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4$1.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4$1.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n };\n return Root;\n}(Container$4$1);\nRoot$5$1.registerLazyResult = function(dependant) {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = function(dependant) {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nvar list$2$1 = {\n comma: function comma(string) {\n return list$2$1.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2$1.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nvar Container$3$1 = container$1;\nvar list$1$1 = list_1$1;\nvar Rule$3$1 = /*#__PURE__*/ function(Container$3$1) {\n _inherits(Rule, Container$3$1);\n function Rule(defaults) {\n var _this;\n _this = Container$3$1.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule;\n}(Container$3$1);\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nvar Declaration$2$1 = declaration$1;\nvar tokenizer2$1 = tokenize$1;\nvar Comment$2$1 = comment$1;\nvar AtRule$2$1 = atRule$1;\nvar Root$4$1 = root$1;\nvar Rule$2$1 = rule$1;\nvar SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1$1 = /*#__PURE__*/ function() {\n function Parser(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser;\n}();\nvar parser$1 = Parser$1$1;\nvar Container$2$1 = container$1;\nvar Parser2$1 = parser$1;\nvar Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n var input2 = new Input$2$1(css, opts);\n var parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nvar isClean$3 = symbols$1.isClean, my$3 = symbols$1.my;\nvar MapGenerator$1$1 = mapGenerator$1;\nvar stringify$2$1 = stringify_1$1;\nvar Container$1$1 = container$1;\nvar Document$2$1 = document$1$1;\nvar warnOnce$1$1 = warnOnce$2$1;\nvar Result$2$1 = result$1;\nvar parse$2$1 = parse_1$1;\nvar Root$3$1 = root$1;\nvar TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN$1,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack$1(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN$1,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN$1,\n \"RootExit\"\n ];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks$1(i2);\n });\n return node2;\n}\nvar postcss$2$1 = {};\nvar LazyResult$2$1 = /*#__PURE__*/ function() {\n function LazyResult(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (_instanceof(css, LazyResult) || _instanceof(css, Result$2$1)) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2$1, {\n postcss: postcss$2$1,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS$1[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise$1(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean$3]) return [\n 3,\n 14\n ];\n root2[isClean$3] = true;\n stack = [\n toStack$1(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise$1(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean$3]){\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean$3] = true;\n var events = getEvents$1(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean$3]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult;\n}();\nLazyResult$2$1.registerPostcss = function(dependant) {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nvar MapGenerator2$1 = mapGenerator$1;\nvar stringify$1$1 = stringify_1$1;\nvar warnOnce2$1 = warnOnce$2$1;\nvar parse$1$1 = parse_1$1;\nvar Result$1$1 = result$1;\nvar NoWorkResult$1$1 = /*#__PURE__*/ function() {\n function NoWorkResult(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult;\n}();\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nvar NoWorkResult2$1 = noWorkResult$1;\nvar LazyResult$1$1 = lazyResult$1;\nvar Document$1$1 = document$1$1;\nvar Root$2$1 = root$1;\nvar Processor$1$1 = /*#__PURE__*/ function() {\n function Processor(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor;\n}();\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nvar Declaration$1$1 = declaration$1;\nvar PreviousMap2$1 = previousMap$1;\nvar Comment$1$1 = comment$1;\nvar AtRule$1$1 = atRule$1;\nvar Input$1$1 = input$1;\nvar Root$1$1 = root$1;\nvar Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap2$1.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nvar CssSyntaxError2$1 = cssSyntaxError$1;\nvar Declaration2$1 = declaration$1;\nvar LazyResult2$1 = lazyResult$1;\nvar Container2$1 = container$1;\nvar Processor2$1 = processor$1;\nvar stringify$5 = stringify_1$1;\nvar fromJSON$2 = fromJSON_1$1;\nvar Document22 = document$1$1;\nvar Warning2$1 = warning$1;\nvar Comment2$1 = comment$1;\nvar AtRule2$1 = atRule$1;\nvar Result2$1 = result$1;\nvar Input2$1 = input$1;\nvar parse$5 = parse_1$1;\nvar list$3 = list_1$1;\nvar Rule2$1 = rule$1;\nvar Root2$1 = root$1;\nvar Node2$1 = node$1;\nfunction postcss$3() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = function(defaults) {\n return new Comment2$1(defaults);\n};\npostcss$3.atRule = function(defaults) {\n return new AtRule2$1(defaults);\n};\npostcss$3.decl = function(defaults) {\n return new Declaration2$1(defaults);\n};\npostcss$3.rule = function(defaults) {\n return new Rule2$1(defaults);\n};\npostcss$3.root = function(defaults) {\n return new Root2$1(defaults);\n};\npostcss$3.document = function(defaults) {\n return new Document22(defaults);\n};\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nvar postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = function(obj, key, value) {\n return key in obj ? __defProp2(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField2 = function(obj, key, value) {\n return __defNormalProp2(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = {\n exports: {}\n};\nvar x = String;\nvar create = function create() {\n return {\n isColorSupported: false,\n reset: x,\n bold: x,\n dim: x,\n italic: x,\n underline: x,\n inverse: x,\n hidden: x,\n strikethrough: x,\n black: x,\n red: x,\n green: x,\n yellow: x,\n blue: x,\n magenta: x,\n cyan: x,\n white: x,\n gray: x,\n bgBlack: x,\n bgRed: x,\n bgGreen: x,\n bgYellow: x,\n bgBlue: x,\n bgMagenta: x,\n bgCyan: x,\n bgWhite: x\n };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nvar __viteBrowserExternal = {};\nvar __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar pico = picocolors_browserExports;\nvar terminalHighlight$1 = require$$2;\nvar CssSyntaxError$3 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError2, Error1);\n function CssSyntaxError2(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError2);\n }\n return _this;\n }\n var _proto = CssSyntaxError2.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico_createColors = pico.createColors(true), bold = _pico_createColors.bold, gray = _pico_createColors.gray, red = _pico_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError2;\n}(_wrap_native_super(Error));\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nvar DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2 = /*#__PURE__*/ function() {\n function Stringifier2(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier2.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier2;\n}();\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nvar Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n var str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nvar isClean$2 = symbols.isClean, my$2 = symbols.my;\nvar CssSyntaxError$2 = cssSyntaxError;\nvar Stringifier22 = stringifier;\nvar stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4 = /*#__PURE__*/ function() {\n function Node3(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node3.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node3, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node3;\n}();\nvar node = Node$4;\nNode$4.default = Node$4;\nvar Node$3 = node;\nvar Declaration$4 = /*#__PURE__*/ function(Node$3) {\n _inherits(Declaration2, Node$3);\n function Declaration2(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration2, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration2;\n}(Node$3);\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = {\n nanoid: nanoid$1\n};\nvar SourceMapConsumer$2 = require$$2.SourceMapConsumer, SourceMapGenerator$2 = require$$2.SourceMapGenerator;\nvar existsSync = require$$2.existsSync, readFileSync = require$$2.readFileSync;\nvar dirname$1 = require$$2.dirname, join = require$$2.join;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2 = /*#__PURE__*/ function() {\n function PreviousMap2(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap2.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2)) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join(dirname$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap2;\n}();\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nvar SourceMapConsumer$1 = require$$2.SourceMapConsumer, SourceMapGenerator$1 = require$$2.SourceMapGenerator;\nvar fileURLToPath = require$$2.fileURLToPath, pathToFileURL$1 = require$$2.pathToFileURL;\nvar isAbsolute = require$$2.isAbsolute, resolve$1 = require$$2.resolve;\nvar nanoid = nonSecure.nanoid;\nvar terminalHighlight = require$$2;\nvar CssSyntaxError$1 = cssSyntaxError;\nvar PreviousMap$1 = previousMap;\nvar fromOffsetCache = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nvar pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nvar Input$4 = /*#__PURE__*/ function() {\n function Input2(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n var map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input2.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input2, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input2;\n}();\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nvar SourceMapConsumer = require$$2.SourceMapConsumer, SourceMapGenerator = require$$2.SourceMapGenerator;\nvar dirname = require$$2.dirname, relative = require$$2.relative, resolve$3 = require$$2.resolve, sep = require$$2.sep;\nvar pathToFileURL = require$$2.pathToFileURL;\nvar Input$3 = input;\nvar sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nvar pathAvailable = Boolean(dirname && resolve$3 && relative && sep);\nvar MapGenerator$2 = /*#__PURE__*/ function() {\n function MapGenerator2(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator2.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve$3(from, this.mapOpts.annotation));\n }\n var path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n var fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator2;\n}();\nvar mapGenerator = MapGenerator$2;\nvar Node$2 = node;\nvar Comment$4 = /*#__PURE__*/ function(Node$2) {\n _inherits(Comment2, Node$2);\n function Comment2(defaults) {\n var _this;\n _this = Node$2.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment2;\n}(Node$2);\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nvar isClean$1 = symbols.isClean, my$1 = symbols.my;\nvar Declaration$3 = declaration;\nvar Comment$3 = comment;\nvar Node$1 = node;\nvar parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp(i2);\n }\n }\n}\nvar Container$7 = /*#__PURE__*/ function(Node$1) {\n _inherits(Container2, Node$1);\n function Container2() {\n return Node$1.apply(this, arguments) || this;\n }\n var _proto = Container2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container2, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container2;\n}(Node$1);\nContainer$7.registerParse = function(dependant) {\n parse$4 = dependant;\n};\nContainer$7.registerRule = function(dependant) {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = function(dependant) {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = function(dependant) {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7.rebuild(child);\n });\n }\n};\nvar Container$6 = container;\nvar LazyResult$4, Processor$3;\nvar Document$3 = /*#__PURE__*/ function(Container$6) {\n _inherits(Document23, Container$6);\n function Document23(defaults) {\n var _this;\n _this = Container$6.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document23.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n };\n return Document23;\n}(Container$6);\nDocument$3.registerLazyResult = function(dependant) {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = function(dependant) {\n Processor$3 = dependant;\n};\nvar document$1$2 = Document$3;\nDocument$3.default = Document$3;\nvar printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2 = /*#__PURE__*/ function() {\n function Warning2(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning2.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning2;\n}();\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nvar Warning$1 = warning;\nvar Result$3 = /*#__PURE__*/ function() {\n function Result2(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result2.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result2, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result2;\n}();\nvar result = Result$3;\nResult$3.default = Result$3;\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = \"\\\\\".charCodeAt(0);\nvar SLASH = \"/\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar SPACE = \" \".charCodeAt(0);\nvar FEED = \"\\f\".charCodeAt(0);\nvar TAB = \"\t\".charCodeAt(0);\nvar CR = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES = \")\".charCodeAt(0);\nvar OPEN_CURLY = \"{\".charCodeAt(0);\nvar CLOSE_CURLY = \"}\".charCodeAt(0);\nvar SEMICOLON = \";\".charCodeAt(0);\nvar ASTERISK = \"*\".charCodeAt(0);\nvar COLON = \":\".charCodeAt(0);\nvar AT = \"@\".charCodeAt(0);\nvar RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT:\n {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5 = container;\nvar AtRule$3 = /*#__PURE__*/ function(Container$5) {\n _inherits(AtRule2, Container$5);\n function AtRule2(defaults) {\n var _this;\n _this = Container$5.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule2;\n}(Container$5);\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nvar Container$4 = container;\nvar LazyResult$3, Processor$2;\nvar Root$5 = /*#__PURE__*/ function(Container$4) {\n _inherits(Root2, Container$4);\n function Root2(defaults) {\n var _this;\n _this = Container$4.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root2.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n };\n return Root2;\n}(Container$4);\nRoot$5.registerLazyResult = function(dependant) {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = function(dependant) {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nvar list$2 = {\n comma: function comma(string) {\n return list$2.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nvar Container$3 = container;\nvar list$1 = list_1;\nvar Rule$3 = /*#__PURE__*/ function(Container$3) {\n _inherits(Rule2, Container$3);\n function Rule2(defaults) {\n var _this;\n _this = Container$3.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule2, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule2;\n}(Container$3);\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nvar Declaration$2 = declaration;\nvar tokenizer22 = tokenize;\nvar Comment$2 = comment;\nvar AtRule$2 = atRule;\nvar Root$4 = root;\nvar Rule$2 = rule;\nvar SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1 = /*#__PURE__*/ function() {\n function Parser2(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser2.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser2;\n}();\nvar parser = Parser$1;\nvar Container$2 = container;\nvar Parser22 = parser;\nvar Input$2 = input;\nfunction parse$3(css, opts) {\n var input2 = new Input$2(css, opts);\n var parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nvar isClean = symbols.isClean, my = symbols.my;\nvar MapGenerator$1 = mapGenerator;\nvar stringify$2 = stringify_1;\nvar Container$1 = container;\nvar Document$2 = document$1$2;\nvar warnOnce$1 = warnOnce$2;\nvar Result$2 = result;\nvar parse$2 = parse_1;\nvar Root$3 = root;\nvar TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN = 0;\nfunction isPromise(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN,\n \"RootExit\"\n ];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks(i2);\n });\n return node2;\n}\nvar postcss$2 = {};\nvar LazyResult$2 = /*#__PURE__*/ function() {\n function LazyResult2(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (_instanceof(css, LazyResult2) || _instanceof(css, Result$2)) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2, {\n postcss: postcss$2,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean]) return [\n 3,\n 14\n ];\n root2[isClean] = true;\n stack = [\n toStack(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean]){\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean] = true;\n var events = getEvents(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult2;\n}();\nLazyResult$2.registerPostcss = function(dependant) {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nvar MapGenerator22 = mapGenerator;\nvar stringify$1 = stringify_1;\nvar warnOnce22 = warnOnce$2;\nvar parse$1 = parse_1;\nvar Result$1 = result;\nvar NoWorkResult$1 = /*#__PURE__*/ function() {\n function NoWorkResult2(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult2;\n}();\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nvar NoWorkResult22 = noWorkResult;\nvar LazyResult$1 = lazyResult;\nvar Document$1 = document$1$2;\nvar Root$2 = root;\nvar Processor$1 = /*#__PURE__*/ function() {\n function Processor2(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor2.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor2;\n}();\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nvar Declaration$1 = declaration;\nvar PreviousMap22 = previousMap;\nvar Comment$1 = comment;\nvar AtRule$1 = atRule;\nvar Input$1 = input;\nvar Root$1 = root;\nvar Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap22.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nvar CssSyntaxError22 = cssSyntaxError;\nvar Declaration22 = declaration;\nvar LazyResult22 = lazyResult;\nvar Container22 = container;\nvar Processor22 = processor;\nvar stringify$6 = stringify_1;\nvar fromJSON = fromJSON_1;\nvar Document222 = document$1$2;\nvar Warning22 = warning;\nvar Comment22 = comment;\nvar AtRule22 = atRule;\nvar Result22 = result;\nvar Input22 = input;\nvar parse = parse_1;\nvar list = list_1;\nvar Rule22 = rule;\nvar Root22 = root;\nvar Node22 = node;\nfunction postcss() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify$6;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = function(defaults) {\n return new Comment22(defaults);\n};\npostcss.atRule = function(defaults) {\n return new AtRule22(defaults);\n};\npostcss.decl = function(defaults) {\n return new Declaration22(defaults);\n};\npostcss.rule = function(defaults) {\n return new Rule22(defaults);\n};\npostcss.root = function(defaults) {\n return new Root22(defaults);\n};\npostcss.document = function(defaults) {\n return new Document222(defaults);\n};\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nvar postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar BaseRRNode = /*#__PURE__*/ function() {\n function BaseRRNode() {\n for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n _args[_key] = arguments[_key];\n }\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n var _proto = BaseRRNode.prototype;\n _proto.contains = function contains(node2) {\n if (!_instanceof(node2, BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while(node2.parentNode){\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.appendChild = function appendChild(_newChild) {\n throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.insertBefore = function insertBefore(_newChild, _refChild) {\n throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.removeChild = function removeChild(_node) {\n throw new Error(\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n _proto.toString = function toString() {\n return \"RRNode\";\n };\n _create_class(BaseRRNode, [\n {\n key: \"childNodes\",\n get: function get() {\n var childNodes2 = [];\n var childIterator = this.firstChild;\n while(childIterator){\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n }\n ]);\n return BaseRRNode;\n}();\nvar testableAccessors = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype = {};\nvar isAngularZonePresent = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key]) return untaintedBasePrototype[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods ? testableMethods[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch$2(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index = {\n childNodes: childNodes,\n parentNode: parentNode,\n parentElement: parentElement,\n textContent: textContent,\n contains: contains,\n getRootNode: getRootNode,\n host: host,\n styleSheets: styleSheets,\n shadowRoot: shadowRoot,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch: patch$2\n};\nfunction on(type, fn, target) {\n if (target === void 0) target = document;\n var options = {\n capture: true,\n passive: true\n };\n target.addEventListener(type, fn, options);\n return function() {\n return target.removeEventListener(type, fn, options);\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nvar _mirror = {\n map: {},\n getId: function getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get: function get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options) {\n if (options === void 0) options = {};\n var timeout = null;\n var previous = 0;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(function() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n if (win === void 0) win = window;\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked ? d : {\n set: function set(value) {\n var _this = this;\n setTimeout(function() {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n });\n return function() {\n return hookSetter(target, key, original || {}, true);\n };\n}\nvar nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = function() {\n return /* @__PURE__ */ new Date().getTime();\n };\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n var doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n var el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n var el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {}\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n var parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win) {\n if (win === void 0) win = window;\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2));\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (_instanceof(n2, BaseRRNode) && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nvar StyleSheetMirror = /*#__PURE__*/ function() {\n function StyleSheetMirror() {\n __publicField$1(this, \"id\", 1);\n __publicField$1(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n var _proto = StyleSheetMirror.prototype;\n _proto.getId = function getId(stylesheet) {\n var _this_styleIDMap_get;\n return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1;\n };\n _proto.has = function has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n };\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */ _proto.add = function add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n var newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n };\n _proto.getStyle = function getStyle(id) {\n return this.idStyleMap.get(id) || null;\n };\n _proto.reset = function reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n };\n _proto.generateId = function generateId() {\n return this.id++;\n };\n return StyleSheetMirror;\n}();\nfunction getShadowHost(n2) {\n var _a2;\n var shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2))) shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n var rootShadowHost = n2;\n var shadowHost;\n while(shadowHost = getShadowHost(rootShadowHost))rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n var shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ function(EventType2) {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n}(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ function(IncrementalSource2) {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n}(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ function(MouseInteractions2) {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n}(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ function(PointerTypes2) {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n}(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ function(CanvasContext2) {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n}(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ function(MediaInteractions2) {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n}(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nvar DoubleLinkedList = /*#__PURE__*/ function() {\n function DoubleLinkedList() {\n __publicField$1(this, \"length\", 0);\n __publicField$1(this, \"head\", null);\n __publicField$1(this, \"tail\", null);\n }\n var _proto = DoubleLinkedList.prototype;\n _proto.get = function get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n var current = this.head;\n for(var index2 = 0; index2 < position; index2++){\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n };\n _proto.addNode = function addNode(n2) {\n var node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n var current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n var current1 = n2.nextSibling.__ln.previous;\n node2.previous = current1;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current1) {\n current1.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n };\n _proto.removeNode = function removeNode(n2) {\n var current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}();\nvar moveKey = function(id, parentId) {\n return id + \"@\" + parentId;\n};\nvar MutationBuffer = /*#__PURE__*/ function() {\n function MutationBuffer() {\n var _this = this;\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"texts\", []);\n __publicField$1(this, \"attributes\", []);\n __publicField$1(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"removes\", []);\n __publicField$1(this, \"mapRemoves\", []);\n __publicField$1(this, \"movedMap\", {});\n /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */ __publicField$1(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"blockClass\");\n __publicField$1(this, \"blockSelector\");\n __publicField$1(this, \"maskTextClass\");\n __publicField$1(this, \"maskTextSelector\");\n __publicField$1(this, \"inlineStylesheet\");\n __publicField$1(this, \"maskInputOptions\");\n __publicField$1(this, \"maskTextFn\");\n __publicField$1(this, \"maskInputFn\");\n __publicField$1(this, \"keepIframeSrcFn\");\n __publicField$1(this, \"recordCanvas\");\n __publicField$1(this, \"inlineImages\");\n __publicField$1(this, \"slimDOMOptions\");\n __publicField$1(this, \"dataURLOptions\");\n __publicField$1(this, \"doc\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"iframeManager\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"shadowDomManager\");\n __publicField$1(this, \"canvasManager\");\n __publicField$1(this, \"processedNodeManager\");\n __publicField$1(this, \"unattachedDoc\");\n __publicField$1(this, \"processMutations\", function(mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n });\n __publicField$1(this, \"emit\", function() {\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addedIds = /* @__PURE__ */ new Set();\n var addList = new DoubleLinkedList();\n var getNextId = function(n2) {\n var ns = n2;\n var nextId = IGNORED_NODE;\n while(nextId === IGNORED_NODE){\n ns = ns && ns.nextSibling;\n nextId = ns && _this.mirror.getId(ns);\n }\n return nextId;\n };\n var pushAdd = function(n2) {\n var parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n var cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n var parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && _this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent);\n var nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n var sn = serializeNodeWithId(n2, {\n doc: _this.doc,\n mirror: _this.mirror,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n dataURLOptions: _this.dataURLOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function(currentN) {\n if (isSerializedIframe(currentN, _this.mirror)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, _this.mirror)) {\n _this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n2)) {\n _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(link, childSn) {\n _this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured: cssCaptured\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while(_this.mapRemoves.length){\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;){\n var n2 = _step.value;\n if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;){\n var n21 = _step1.value;\n if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) {\n pushAdd(n21);\n } else if (isAncestorInSet(_this.movedSet, n21)) {\n pushAdd(n21);\n } else {\n _this.droppedSet.add(n21);\n }\n }\n var candidate = null;\n while(addList.length){\n var node2 = null;\n if (candidate) {\n var parentId = _this.mirror.getId(index.parentNode(candidate.value));\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n var tailNode = addList.tail;\n while(tailNode){\n var _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n var parentId1 = _this.mirror.getId(index.parentNode(_node.value));\n var nextId1 = getNextId(_node.value);\n if (nextId1 === -1) continue;\n else if (parentId1 !== -1) {\n node2 = _node;\n break;\n } else {\n var unhandledNode = _node.value;\n var parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n var shadowHost = index.host(parent);\n var parentId2 = _this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while(addList.head){\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n var payload = {\n texts: _this.texts.map(function(text) {\n var n2 = text.node;\n var parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(parent);\n }\n return {\n id: _this.mirror.getId(n2),\n value: text.value\n };\n }).filter(function(text) {\n return !addedIds.has(text.id);\n }).filter(function(text) {\n return _this.mirror.has(text.id);\n }),\n attributes: _this.attributes.map(function(attribute) {\n var attributes = attribute.attributes;\n if (typeof attributes.style === \"string\") {\n var diffAsStr = JSON.stringify(attribute.styleDiff);\n var unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: _this.mirror.getId(attribute.node),\n attributes: attributes\n };\n }).filter(function(attribute) {\n return !addedIds.has(attribute.id);\n }).filter(function(attribute) {\n return _this.mirror.has(attribute.id);\n }),\n removes: _this.removes,\n adds: adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.attributeMap = /* @__PURE__ */ new WeakMap();\n _this.removes = [];\n _this.addedSet = /* @__PURE__ */ new Set();\n _this.movedSet = /* @__PURE__ */ new Set();\n _this.droppedSet = /* @__PURE__ */ new Set();\n _this.removesSubTreeCache = /* @__PURE__ */ new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n });\n __publicField$1(this, \"genTextAreaValueMutation\", function(textarea) {\n var item = _this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(textarea, item);\n }\n var value = Array.from(index.childNodes(textarea), function(cn) {\n return index.textContent(cn) || \"\";\n }).join(\"\");\n item.attributes.value = maskInputValue({\n element: textarea,\n maskInputOptions: _this.maskInputOptions,\n tagName: textarea.tagName,\n type: getInputType(textarea),\n value: value,\n maskInputFn: _this.maskInputFn\n });\n });\n __publicField$1(this, \"processMutation\", function(m) {\n if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n switch(m.type){\n case \"characterData\":\n {\n var value = index.textContent(m.target);\n if (!isBlocked(m.target, _this.blockClass, _this.blockSelector, false) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector, true) && value ? _this.maskTextFn ? _this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\":\n {\n var target = m.target;\n var attributeName = m.attributeName;\n var value1 = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n var type = getInputType(target);\n value1 = maskInputValue({\n element: target,\n maskInputOptions: _this.maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: value1,\n maskInputFn: _this.maskInputFn\n });\n }\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) {\n return;\n }\n var item = _this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !_this.keepIframeSrcFn(value1)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1);\n if (attributeName === \"style\") {\n if (!_this.unattachedDoc) {\n try {\n _this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n _this.unattachedDoc = _this.doc;\n }\n }\n var old = _this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;){\n var pname = _step.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [\n newValue,\n newPriority\n ];\n }\n } else {\n item._unchangedStyles[pname] = [\n newValue,\n newPriority\n ];\n }\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;){\n var pname1 = _step1.value;\n if (target.style.getPropertyValue(pname1) === \"\") {\n item.styleDiff[pname1] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\":\n {\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return;\n if (m.target.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach(function(n2) {\n return _this.genAdds(n2, m.target);\n });\n m.removedNodes.forEach(function(n2) {\n var nodeId = _this.mirror.getId(n2);\n var parentId = isShadowRoot(m.target) ? _this.mirror.getId(index.host(m.target)) : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || isIgnored(n2, _this.mirror, _this.slimDOMOptions) || !isSerialized(n2, _this.mirror)) {\n return;\n }\n if (_this.addedSet.has(n2)) {\n deepDelete(_this.addedSet, n2);\n _this.droppedSet.add(n2);\n } else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n2) && _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n2);\n } else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, _this.removesSubTreeCache);\n }\n _this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */ __publicField$1(this, \"genAdds\", function(n2, target) {\n if (_this.processedNodeManager.inOtherBuffer(n2, _this)) return;\n if (_this.addedSet.has(n2) || _this.movedSet.has(n2)) return;\n if (_this.mirror.hasNode(n2)) {\n if (isIgnored(n2, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n _this.movedSet.add(n2);\n var targetId = null;\n if (target && _this.mirror.hasNode(target)) {\n targetId = _this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n _this.movedMap[moveKey(_this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n _this.addedSet.add(n2);\n _this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, _this.blockClass, _this.blockSelector, false)) {\n index.childNodes(n2).forEach(function(childN) {\n return _this.genAdds(childN);\n });\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach(function(childN) {\n _this.processedNodeManager.add(childN, _this);\n _this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n var _proto = MutationBuffer.prototype;\n _proto.init = function init(options) {\n var _this = this;\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach(function(key) {\n _this[key] = options[key];\n });\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n _proto.isFrozen = function isFrozen() {\n return this.frozen;\n };\n _proto.lock = function lock() {\n this.locked = true;\n this.canvasManager.lock();\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n _proto.reset = function reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}();\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach(function(childN) {\n return deepDelete(addsSet, childN);\n });\n}\nfunction processRemoves(n2, cache) {\n var queue = [\n n2\n ];\n while(queue.length){\n var next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach(function(n22) {\n return queue.push(n22);\n });\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n var node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n var parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nvar errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nvar callbackWrapper = function(cb) {\n if (!errorHandler) {\n return cb;\n }\n var rrwebWrapped = function() {\n for(var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++){\n rest[_key] = arguments[_key];\n }\n try {\n return cb.apply(void 0, [].concat(rest));\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nvar mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n var path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch (e) {}\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver(param) {\n var mousemoveCb = param.mousemoveCb, sampling = param.sampling, doc = param.doc, mirror2 = param.mirror;\n if (sampling.mousemove === false) {\n return function() {};\n }\n var threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(callbackWrapper(function(source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function(p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt, clientX = _ref.clientX, clientY = _ref.clientY;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(typeof DragEvent !== \"undefined\" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false\n }));\n var handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initMouseInteractionObserver(param) {\n var mouseInteractionCb = param.mouseInteractionCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n if (sampling.mouseInteraction === false) {\n return function() {};\n }\n var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n var handlers = [];\n var currentPointerType = null;\n var getHandler = function(eventKey) {\n return function(event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var pointerType = null;\n var thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch(event.pointerType){\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n var id = mirror2.getId(target);\n var clientX = e2.clientX, clientY = e2.clientY;\n callbackWrapper(mouseInteractionCb)(_extends({\n type: MouseInteractions[thisEventKey],\n id: id,\n x: clientX,\n y: clientY\n }, pointerType !== null && {\n pointerType: pointerType\n }));\n };\n };\n Object.keys(MouseInteractions).filter(function(key) {\n return Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false;\n }).forEach(function(eventKey) {\n var eventName = toLowerCase(eventKey);\n var handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch(MouseInteractions[eventKey]){\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\"mouse\", \"pointer\");\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initScrollObserver(param) {\n var scrollCb = param.scrollCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n var scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id: id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }), sampling.scroll || 100));\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver(param, param1) {\n var viewportResizeCb = param.viewportResizeCb;\n var win = param1.win;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = callbackWrapper(throttle(callbackWrapper(function() {\n var height = getWindowHeight();\n var width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }), 200));\n return on(\"resize\", updateDimension, win);\n}\nvar INPUT_TAGS = [\n \"INPUT\",\n \"TEXTAREA\",\n \"SELECT\"\n];\nvar lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver(param) {\n var inputCb = param.inputCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, ignoreClass = param.ignoreClass, ignoreSelector = param.ignoreSelector, maskInputOptions = param.maskInputOptions, maskInputFn = param.maskInputFn, sampling = param.sampling, userTriggeredOnInput = param.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n var tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n var type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions: maskInputOptions,\n tagName: tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn\n });\n }\n cbWithDedup(target, userTriggeredOnInput ? {\n text: text,\n isChecked: isChecked,\n userTriggered: userTriggered\n } : {\n text: text,\n isChecked: isChecked\n });\n var name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]').forEach(function(el) {\n if (el !== target) {\n var text2 = el.value;\n cbWithDedup(el, userTriggeredOnInput ? {\n text: text2,\n isChecked: !isChecked,\n userTriggered: false\n } : {\n text: text2,\n isChecked: !isChecked\n });\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n var id = mirror2.getId(target);\n callbackWrapper(inputCb)(_extends({}, v2, {\n id: id\n }));\n }\n }\n var events = sampling.input === \"last\" ? [\n \"change\"\n ] : [\n \"input\",\n \"change\"\n ];\n var handlers = events.map(function(eventName) {\n return on(eventName, callbackWrapper(eventHandler), doc);\n });\n var currentWindow = doc.defaultView;\n if (!currentWindow) {\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n }\n var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, \"value\");\n var hookProperties = [\n [\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLInputElement.prototype,\n \"checked\"\n ],\n [\n currentWindow.HTMLSelectElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLTextAreaElement.prototype,\n \"value\"\n ],\n // Some UI library use selectedIndex to set select value\n [\n currentWindow.HTMLSelectElement.prototype,\n \"selectedIndex\"\n ],\n [\n currentWindow.HTMLOptionElement.prototype,\n \"selected\"\n ]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n var _handlers;\n (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) {\n return hookSetter(p[0], p[1], {\n set: function set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n });\n }\n }, false, currentWindow);\n })));\n }\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n var positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule(\"CSSMediaRule\") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule(\"CSSSupportsRule\") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule(\"CSSConditionRule\") && _instanceof(childRule.parentRule, CSSConditionRule)) {\n var rules2 = Array.from(childRule.parentRule.cssRules);\n var index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n var rules21 = Array.from(childRule.parentStyleSheet.cssRules);\n var index21 = rules21.indexOf(childRule);\n pos.unshift(index21);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n var id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId: styleId,\n id: id\n };\n}\nfunction initStyleSheetObserver(param, param1) {\n var styleSheetRuleCb = param.styleSheetRuleCb, mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return function() {};\n }\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) {\n if (index2 === void 0) index2 = this.cssRules.length;\n var rule2 = selector + \" { \" + styleBlock + \" }\";\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [\n rule2,\n index2\n ]);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [\n index2\n ]);\n };\n var replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2 || 0\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n });\n return callbackWrapper(function() {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver(param, host2) {\n var mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var _a2, _b, _c;\n var hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n var patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, \"adoptedStyleSheets\") : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {};\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: function get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set: function set(sheets) {\n var _a3;\n var result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {}\n }\n return result2;\n }\n });\n return callbackWrapper(function() {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver(param, param1) {\n var styleDeclarationCb = param.styleDeclarationCb, mirror2 = param.mirror, ignoreCSSAttributes = param.ignoreCSSAttributes, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0], value = argumentsList[1], priority = argumentsList[2];\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [\n property,\n value,\n priority\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n set: {\n property: property,\n value: value,\n priority: priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0];\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [\n property\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n remove: {\n property: property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n return callbackWrapper(function() {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver(param) {\n var mediaInteractionCb = param.mediaInteractionCb, blockClass = param.blockClass, blockSelector = param.blockSelector, mirror2 = param.mirror, sampling = param.sampling, doc = param.doc;\n var handler = callbackWrapper(function(type) {\n return throttle(callbackWrapper(function(event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var currentTime = target.currentTime, volume = target.volume, muted = target.muted, playbackRate = target.playbackRate, loop = target.loop;\n mediaInteractionCb({\n type: type,\n id: mirror2.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n playbackRate: playbackRate,\n loop: loop\n });\n }), sampling.media || 500);\n });\n var handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initFontObserver(param) {\n var fontCb = param.fontCb, doc = param.doc;\n var win = doc.defaultView;\n if (!win) {\n return function() {};\n }\n var handlers = [];\n var fontMap = /* @__PURE__ */ new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== \"string\",\n descriptors: descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n var restoreHandler = patch$2(doc.fonts, \"add\", function(original) {\n return function(fontFace) {\n setTimeout(callbackWrapper(function() {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [\n fontFace\n ]);\n };\n });\n handlers.push(function() {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initSelectionObserver(param) {\n var doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, selectionCb = param.selectionCb;\n var collapsed = true;\n var updateSelection = callbackWrapper(function() {\n var selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n var ranges = [];\n var count = selection.rangeCount || 0;\n for(var i2 = 0; i2 < count; i2++){\n var range = selection.getRangeAt(i2);\n var startContainer = range.startContainer, startOffset = range.startOffset, endContainer = range.endContainer, endOffset = range.endOffset;\n var blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset: startOffset,\n end: mirror2.getId(endContainer),\n endOffset: endOffset\n });\n }\n selectionCb({\n ranges: ranges\n });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver(param) {\n var doc = param.doc, customElementCb = param.customElementCb;\n var win = doc.defaultView;\n if (!win || !win.customElements) return function() {};\n var restoreHandler = patch$2(win.customElements, \"define\", function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name: name\n }\n });\n } catch (e2) {\n console.warn(\"Custom element callback failed for \" + name);\n }\n return original.apply(this, [\n name,\n constructor,\n options\n ]);\n };\n });\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n var mutationCb = o2.mutationCb, mousemoveCb = o2.mousemoveCb, mouseInteractionCb = o2.mouseInteractionCb, scrollCb = o2.scrollCb, viewportResizeCb = o2.viewportResizeCb, inputCb = o2.inputCb, mediaInteractionCb = o2.mediaInteractionCb, styleSheetRuleCb = o2.styleSheetRuleCb, styleDeclarationCb = o2.styleDeclarationCb, canvasMutationCb = o2.canvasMutationCb, fontCb = o2.fontCb, selectionCb = o2.selectionCb, customElementCb = o2.customElementCb;\n o2.mutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mutation) {\n var _hooks;\n (_hooks = hooks).mutation.apply(_hooks, [].concat(p));\n }\n mutationCb.apply(void 0, [].concat(p));\n };\n o2.mousemoveCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mousemove) {\n var _hooks;\n (_hooks = hooks).mousemove.apply(_hooks, [].concat(p));\n }\n mousemoveCb.apply(void 0, [].concat(p));\n };\n o2.mouseInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mouseInteraction) {\n var _hooks;\n (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p));\n }\n mouseInteractionCb.apply(void 0, [].concat(p));\n };\n o2.scrollCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.scroll) {\n var _hooks;\n (_hooks = hooks).scroll.apply(_hooks, [].concat(p));\n }\n scrollCb.apply(void 0, [].concat(p));\n };\n o2.viewportResizeCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.viewportResize) {\n var _hooks;\n (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p));\n }\n viewportResizeCb.apply(void 0, [].concat(p));\n };\n o2.inputCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.input) {\n var _hooks;\n (_hooks = hooks).input.apply(_hooks, [].concat(p));\n }\n inputCb.apply(void 0, [].concat(p));\n };\n o2.mediaInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mediaInteaction) {\n var _hooks;\n (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p));\n }\n mediaInteractionCb.apply(void 0, [].concat(p));\n };\n o2.styleSheetRuleCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleSheetRule) {\n var _hooks;\n (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p));\n }\n styleSheetRuleCb.apply(void 0, [].concat(p));\n };\n o2.styleDeclarationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleDeclaration) {\n var _hooks;\n (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p));\n }\n styleDeclarationCb.apply(void 0, [].concat(p));\n };\n o2.canvasMutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.canvasMutation) {\n var _hooks;\n (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p));\n }\n canvasMutationCb.apply(void 0, [].concat(p));\n };\n o2.fontCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.font) {\n var _hooks;\n (_hooks = hooks).font.apply(_hooks, [].concat(p));\n }\n fontCb.apply(void 0, [].concat(p));\n };\n o2.selectionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.selection) {\n var _hooks;\n (_hooks = hooks).selection.apply(_hooks, [].concat(p));\n }\n selectionCb.apply(void 0, [].concat(p));\n };\n o2.customElementCb = function() {\n for(var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++){\n c2[_key] = arguments[_key];\n }\n if (hooks.customElement) {\n var _hooks;\n (_hooks = hooks).customElement.apply(_hooks, [].concat(c2));\n }\n customElementCb.apply(void 0, [].concat(c2));\n };\n}\nfunction initObservers(o2, hooks) {\n if (hooks === void 0) hooks = {};\n var currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return function() {};\n }\n mergeHooks(o2, hooks);\n var mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n var mousemoveHandler = initMoveObserver(o2);\n var mouseInteractionHandler = initMouseInteractionObserver(o2);\n var scrollHandler = initScrollObserver(o2);\n var viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n var inputHandler = initInputObserver(o2);\n var mediaInteractionHandler = initMediaInteractionObserver(o2);\n var styleSheetObserver = function() {};\n var adoptedStyleSheetObserver = function() {};\n var styleDeclarationObserver = function() {};\n var fontObserver = function() {};\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, {\n win: currentWindow\n });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n var selectionObserver = initSelectionObserver(o2);\n var customElementObserver = initCustomElementObserver(o2);\n var pluginHandlers = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options));\n }\n return callbackWrapper(function() {\n mutationBuffers.forEach(function(b) {\n return b.reset();\n });\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype);\n}\nvar CrossOriginIframeMirror = /*#__PURE__*/ function() {\n function CrossOriginIframeMirror(generateIdFn) {\n __publicField$1(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n var _proto = CrossOriginIframeMirror.prototype;\n _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n var id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n };\n _proto.getIds = function getIds(iframe, remoteId) {\n var _this = this;\n var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(function(id) {\n return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap);\n });\n };\n _proto.getRemoteId = function getRemoteId(iframe, id, map) {\n var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n var remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n };\n _proto.getRemoteIds = function getRemoteIds(iframe, ids) {\n var _this = this;\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map(function(id) {\n return _this.getRemoteId(iframe, id, remoteIdToIdMap);\n });\n };\n _proto.reset = function reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n };\n _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) {\n var idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n };\n _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) {\n var remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n };\n return CrossOriginIframeMirror;\n}();\nvar IframeManager = /*#__PURE__*/ function() {\n function IframeManager(options) {\n __publicField$1(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField$1(this, \"crossOriginIframeStyleMirror\");\n __publicField$1(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"wrappedEmit\");\n __publicField$1(this, \"loadListener\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n var _proto = IframeManager.prototype;\n _proto.addIframe = function addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n };\n _proto.addLoadListener = function addLoadListener(cb) {\n this.loadListener = cb;\n };\n _proto.attachIframe = function attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes) (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\"message\", this.handleMessage.bind(this));\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n };\n _proto.handleMessage = function handleMessage(message) {\n var crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin) return;\n var iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n var iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n };\n _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) {\n var _this = this;\n var _a2;\n switch(e2.type){\n case EventType.FullSnapshot:\n {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n var rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded:\n {\n return false;\n }\n case EventType.Plugin:\n {\n return e2;\n }\n case EventType.Custom:\n {\n this.replaceIds(e2.data.payload, iframeEl, [\n \"id\",\n \"parentId\",\n \"previousId\",\n \"nextId\"\n ]);\n return e2;\n }\n case EventType.IncrementalSnapshot:\n {\n switch(e2.data.source){\n case IncrementalSource.Mutation:\n {\n e2.data.adds.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n _this.replaceIdOnNode(n2.node, iframeEl);\n var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && _this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"id\"\n ]);\n });\n e2.data.attributes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n e2.data.texts.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n {\n e2.data.positions.forEach(function(p) {\n _this.replaceIds(p, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize:\n {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleId\"\n ]);\n return e2;\n }\n case IncrementalSource.Font:\n {\n return e2;\n }\n case IncrementalSource.Selection:\n {\n e2.data.ranges.forEach(function(range) {\n _this.replaceIds(range, iframeEl, [\n \"start\",\n \"end\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleIds\"\n ]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function(style) {\n _this.replaceStyleIds(style, iframeEl, [\n \"styleId\"\n ]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n };\n _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) {\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n };\n _proto.replaceIds = function replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n };\n _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n };\n _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) {\n var _this = this;\n this.replaceIds(node2, iframeEl, [\n \"id\",\n \"rootId\"\n ]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.replaceIdOnNode(child, iframeEl);\n });\n }\n };\n _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) {\n var _this = this;\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.patchRootIdOnNode(child, rootId);\n });\n }\n };\n return IframeManager;\n}();\nvar ShadowDomManager = /*#__PURE__*/ function() {\n function ShadowDomManager(options) {\n __publicField$1(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"scrollCb\");\n __publicField$1(this, \"bypassOptions\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n var _proto = ShadowDomManager.prototype;\n _proto.init = function init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n };\n _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) {\n var _this = this;\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n var observer = initMutationObserver(_extends({}, this.bypassOptions, {\n doc: doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n }), shadowRoot2);\n this.restoreHandlers.push(function() {\n return observer.disconnect();\n });\n this.restoreHandlers.push(initScrollObserver(_extends({}, this.bypassOptions, {\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })));\n setTimeout(function() {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2)));\n _this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: _this.mirror,\n stylesheetManager: _this.bypassOptions.stylesheetManager\n }, shadowRoot2));\n }, 0);\n };\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n };\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) {\n var manager = this;\n this.restoreHandlers.push(patch$2(element.prototype, \"attachShadow\", function(original) {\n return function(option) {\n var sRoot = original.call(this, option);\n var shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }));\n };\n _proto.reset = function reset() {\n this.restoreHandlers.forEach(function(handler) {\n try {\n handler();\n } catch (e2) {}\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n };\n return ShadowDomManager;\n}();\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor(var i$1 = 0; i$1 < chars.length; i$1++){\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function encode(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for(i2 = 0; i2 < len; i2 += 3){\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nvar canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n var contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nvar saveWebGLVar = function(value, win, ctx) {\n if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\")) return;\n var name = value.constructor.name;\n var list2 = variableListFor$1(ctx, name);\n var index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (_instanceof(value, Array)) {\n return value.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n } else if (value === null) {\n return value;\n } else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) {\n var name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n Object.values(value)\n ]\n };\n } else if (// SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n _instanceof(value, ArrayBuffer)) {\n var name1 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name1,\n base64: base64\n };\n } else if (_instanceof(value, DataView)) {\n var name2 = value.constructor.name;\n return {\n rr_type: name2,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (_instanceof(value, HTMLImageElement)) {\n var name3 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name3,\n src: src\n };\n } else if (_instanceof(value, HTMLCanvasElement)) {\n var name4 = \"HTMLImageElement\";\n var src1 = value.toDataURL();\n return {\n rr_type: name4,\n src: src1\n };\n } else if (_instanceof(value, ImageData)) {\n var name5 = value.constructor.name;\n return {\n rr_type: name5,\n args: [\n serializeArg(value.data, win, ctx),\n value.width,\n value.height\n ]\n };\n } else if (isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\") {\n var name6 = value.constructor.name;\n var index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name6,\n index: index2\n };\n }\n return value;\n}\nvar serializeArgs = function(args, win, ctx) {\n return args.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n};\nvar isInstanceOfWebGLObject = function(value, win) {\n var webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function(name) {\n return typeof win[name] === \"function\";\n });\n return Boolean(supportedWebGLConstructorNames.find(function(name) {\n return _instanceof(value, win[name]);\n }));\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n var _loop = function() {\n var prop = _step.value;\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(win.CanvasRenderingContext2D.prototype, prop, function(original) {\n return function() {\n var _this = this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(function() {\n var recordArgs = serializeArgs(args, win, _this);\n cb(_this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props2D), _step; !(_step = _iterator()).done;)_loop();\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n var handlers = [];\n try {\n var restoreHandler = patch$2(win.HTMLCanvasElement.prototype, \"getContext\", function(original) {\n return function(contextType) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n var ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\n \"webgl\",\n \"webgl2\"\n ].includes(ctxName)) {\n if (args[0] && _type_of(args[0]) === \"object\") {\n var contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [].concat([\n contextType\n ], args));\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n var _loop = function() {\n var prop = _step.value;\n if (//prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)) {\n return \"continue\";\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(prototype, prop, function(original) {\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n var recordArgs = serializeArgs(args, win, this);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props), _step; !(_step = _iterator()).done;)_loop();\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n var _handlers;\n var handlers = [];\n (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win)));\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n var _handlers1;\n (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win)));\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nvar encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nvar decodeBase64 = function(base64) {\n return Uint8Array.from(atob(base64), function(c2) {\n return c2.charCodeAt(0);\n });\n};\nvar blob = typeof window !== \"undefined\" && window.Blob && new Blob([\n decodeBase64(encodedJs)\n], {\n type: \"text/javascript;charset=utf-8\"\n});\nfunction WorkerWrapper(options) {\n var objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n var worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", function() {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\"data:text/javascript;base64,\" + encodedJs, {\n name: options == null ? void 0 : options.name\n });\n } finally{\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nvar CanvasManager = /*#__PURE__*/ function() {\n function CanvasManager(options) {\n var _this = this;\n __publicField$1(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"rafStamps\", {\n latestId: 0,\n invokeId: null\n });\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"resetObservers\");\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"processMutation\", function(target, mutation) {\n var newFrame = _this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId;\n if (newFrame || !_this.rafStamps.invokeId) _this.rafStamps.invokeId = _this.rafStamps.latestId;\n if (!_this.pendingCanvasMutations.has(target)) {\n _this.pendingCanvasMutations.set(target, []);\n }\n _this.pendingCanvasMutations.get(target).push(mutation);\n });\n var _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? \"all\" : _options_sampling, win = options.win, blockClass = options.blockClass, blockSelector = options.blockSelector, recordCanvas = options.recordCanvas, dataURLOptions = options.dataURLOptions;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\") this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions: dataURLOptions\n });\n }\n var _proto = CanvasManager.prototype;\n _proto.reset = function reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n };\n _proto.lock = function lock() {\n this.locked = true;\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n };\n _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n var _this = this;\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\n var snapshotInProgressMap = /* @__PURE__ */ new Map();\n var worker = new WorkerWrapper();\n worker.onmessage = function(e2) {\n var id = e2.data.id;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n var _e2_data = e2.data, base64 = _e2_data.base64, type = _e2_data.type, width = _e2_data.width, height = _e2_data.height;\n _this.mutationCb({\n id: id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [\n 0,\n 0,\n width,\n height\n ]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [\n {\n rr_type: \"ArrayBuffer\",\n base64: base64\n }\n ],\n type: type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n var timeBetweenSnapshots = 1e3 / fps;\n var lastSnapshotTime = 0;\n var rafId;\n var getCanvas = function() {\n var matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach(function(canvas) {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n var takeCanvasSnapshots = function(timestamp) {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n var _this1 = _this;\n getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) {\n var _a2, id, context, bitmap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n id = _this1.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return [\n 2\n ];\n if (canvas.width === 0 || canvas.height === 0) return [\n 2\n ];\n snapshotInProgressMap.set(id, true);\n if ([\n \"webgl\",\n \"webgl2\"\n ].includes(canvas.__context)) {\n context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n return [\n 4,\n createImageBitmap(canvas)\n ];\n case 1:\n bitmap = _state.sent();\n worker.postMessage({\n id: id,\n bitmap: bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n }, [\n bitmap\n ]);\n return [\n 2\n ];\n }\n });\n }));\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = function() {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n };\n _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n this.resetObservers = function() {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() {\n var _this = this;\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.startRAFTimestamping = function startRAFTimestamping() {\n var _this = this;\n var setLatestRAFTimestamp = function(timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() {\n var _this = this;\n this.pendingCanvasMutations.forEach(function(_values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n var values = valuesWithType.map(function(value) {\n value.type; var rest = _object_without_properties_loose(value, [\n \"type\"\n ]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({\n id: id,\n type: type,\n commands: values\n });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}();\nvar StylesheetManager = /*#__PURE__*/ function() {\n function StylesheetManager(options) {\n __publicField$1(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"adoptedStyleSheetCb\");\n __publicField$1(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n var _proto = StylesheetManager.prototype;\n _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes) this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n };\n _proto.trackLinkElement = function trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n };\n _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) {\n var _this, _loop = function() {\n var sheet = _step.value;\n var styleId = void 0;\n if (!_this.styleMirror.has(sheet)) {\n styleId = _this.styleMirror.add(sheet);\n styles.push({\n styleId: styleId,\n rules: Array.from(sheet.rules || CSSRule, function(r2, index2) {\n return {\n rule: stringifyRule(r2, sheet.href),\n index: index2\n };\n })\n });\n } else styleId = _this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n };\n if (sheets.length === 0) return;\n var adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n var styles = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;)_this = this, _loop();\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n };\n _proto.reset = function reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n };\n // TODO: take snapshot on stylesheet reload by applying event listener\n _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {};\n return StylesheetManager;\n}();\nvar ProcessedNodeManager = /*#__PURE__*/ function() {\n function ProcessedNodeManager() {\n __publicField$1(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"active\", false);\n }\n var _proto = ProcessedNodeManager.prototype;\n _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) {\n var buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some(function(buffer) {\n return buffer !== thisBuffer;\n });\n };\n _proto.add = function add(node2, buffer) {\n var _this = this;\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(function() {\n _this.nodeMap = /* @__PURE__ */ new WeakMap();\n _this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n };\n _proto.destroy = function destroy() {};\n return ProcessedNodeManager;\n}();\nvar wrappedEmit;\nvar takeFullSnapshot$1;\nvar canvasManager;\nvar recording = false;\ntry {\n if (Array.from([\n 1\n ], function(x2) {\n return x2 * 2;\n })[0] !== 2) {\n var cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nvar mirror = createMirror$2();\nfunction record(options) {\n if (options === void 0) options = {};\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _options_blockClass = options.blockClass, blockClass = _options_blockClass === void 0 ? \"rr-block\" : _options_blockClass, _options_blockSelector = options.blockSelector, blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector, _options_ignoreClass = options.ignoreClass, ignoreClass = _options_ignoreClass === void 0 ? \"rr-ignore\" : _options_ignoreClass, _options_ignoreSelector = options.ignoreSelector, ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector, _options_maskTextClass = options.maskTextClass, maskTextClass = _options_maskTextClass === void 0 ? \"rr-mask\" : _options_maskTextClass, _options_maskTextSelector = options.maskTextSelector, maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? {} : _options_sampling, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, mousemoveWait = options.mousemoveWait, _options_recordDOM = options.recordDOM, recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, _options_recordCrossOriginIframes = options.recordCrossOriginIframes, recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes, _options_recordAfter = options.recordAfter, recordAfter = _options_recordAfter === void 0 ? options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\" : _options_recordAfter, _options_userTriggeredOnInput = options.userTriggeredOnInput, userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput, _options_collectFonts = options.collectFonts, collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, plugins = options.plugins, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_ignoreCSSAttributes = options.ignoreCSSAttributes, ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes, errorHandler2 = options.errorHandler;\n registerErrorHandler(errorHandler2);\n var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n var passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return function() {};\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : {\n password: true\n };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function(e2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = function(r2, isCheckout) {\n var _a2;\n var e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function(buf) {\n return buf.unfreeze();\n });\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n var message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout: isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n var wrappedMutationEmit = function(m) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Mutation\n }, m)\n });\n };\n var wrappedScrollEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Scroll\n }, p)\n });\n };\n var wrappedCanvasMutationEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CanvasMutation\n }, p)\n });\n };\n var wrappedAdoptedStyleSheetEmit = function(a2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.AdoptedStyleSheet\n }, a2)\n });\n };\n var stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n var iframeManager = new IframeManager({\n mirror: mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes: recordCrossOriginIframes,\n wrappedEmit: wrappedEmit\n });\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.getMirror) plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n var processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n blockSelector: blockSelector,\n mirror: mirror,\n sampling: sampling.canvas,\n dataURLOptions: dataURLOptions\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n dataURLOptions: dataURLOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n canvasManager: canvasManager,\n keepIframeSrcFn: keepIframeSrcFn,\n processedNodeManager: processedNodeManager\n },\n mirror: mirror\n });\n takeFullSnapshot$1 = function(isCheckout) {\n if (isCheckout === void 0) isCheckout = false;\n if (!recordDOM) {\n return;\n }\n wrappedEmit({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n }, isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach(function(buf) {\n return buf.lock();\n });\n var node2 = snapshot(document, {\n mirror: mirror,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function(n2) {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(linkEl, childSn) {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit({\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n }, isCheckout);\n mutationBuffers.forEach(function(buf) {\n return buf.unlock();\n });\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n try {\n var handlers = [];\n var observe = function(doc) {\n var _a2;\n return callbackWrapper(initObservers)({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function(positions, source) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions\n }\n });\n },\n mouseInteractionCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MouseInteraction\n }, d)\n });\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.ViewportResize\n }, d)\n });\n },\n inputCb: function(v2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Input\n }, v2)\n });\n },\n mediaInteractionCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MediaInteraction\n }, p)\n });\n },\n styleSheetRuleCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleSheetRule\n }, r2)\n });\n },\n styleDeclarationCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleDeclaration\n }, r2)\n });\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Font\n }, p)\n });\n },\n selectionCb: function(p) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Selection\n }, p)\n });\n },\n customElementCb: function(c2) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CustomElement\n }, c2)\n });\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n ignoreSelector: ignoreSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordDOM: recordDOM,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n keepIframeSrcFn: keepIframeSrcFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n shadowDomManager: shadowDomManager,\n processedNodeManager: processedNodeManager,\n canvasManager: canvasManager,\n ignoreCSSAttributes: ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) {\n return p.observer;\n })) == null ? void 0 : _a2.map(function(p) {\n return {\n observer: p.observer,\n options: p.options,\n callback: function(payload) {\n return wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload\n }\n });\n }\n };\n })) || []\n }, hooks);\n };\n iframeManager.addLoadListener(function(iframeEl) {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n var init = function() {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(on(\"DOMContentLoaded\", function() {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n }));\n handlers.push(on(\"load\", function() {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n }, window));\n }\n return function() {\n handlers.forEach(function(handler) {\n try {\n handler();\n } catch (error) {\n var msg = String(error).toLowerCase();\n if (!msg.includes(\"cross-origin\")) {\n console.warn(error);\n }\n }\n });\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function(tag, payload) {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload\n }\n });\n};\nrecord.freezePage = function() {\n mutationBuffers.forEach(function(buf) {\n return buf.freeze();\n });\n};\nrecord.takeFullSnapshot = function(isCheckout) {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nrecord.addCustomEvent;\nrecord.freezePage;\nrecord.takeFullSnapshot;\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = function(obj, key, value) {\n return key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField = function(obj, key, value) {\n return __defNormalProp(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar StackFrame = /*#__PURE__*/ function() {\n function StackFrame(obj) {\n __publicField(this, \"fileName\");\n __publicField(this, \"functionName\");\n __publicField(this, \"lineNumber\");\n __publicField(this, \"columnNumber\");\n this.fileName = obj.fileName || \"\";\n this.functionName = obj.functionName || \"\";\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n var _proto = StackFrame.prototype;\n _proto.toString = function toString() {\n var lineNumber = this.lineNumber || \"\";\n var columnNumber = this.columnNumber || \"\";\n if (this.functionName) return this.functionName + \" (\" + this.fileName + \":\" + lineNumber + \":\" + columnNumber + \")\";\n return this.fileName + \":\" + lineNumber + \":\" + columnNumber;\n };\n return StackFrame;\n}();\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n /**\n * Given an Error object, extract the most information from it.\n */ parse: function parse(error) {\n if (!error) {\n return [];\n }\n if (// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error.stacktrace !== \"undefined\" || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error[\"opera#sourceloc\"] !== \"undefined\") {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n console.warn(\"[console-record-plugin]: Failed to parse error object:\", error);\n return [];\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function extractLocation(urlLike) {\n if (urlLike.indexOf(\":\") === -1) {\n return [\n urlLike\n ];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n if (!parts) throw new Error(\"Cannot parse given url: \" + urlLike);\n return [\n parts[1],\n parts[2] || void 0,\n parts[3] || void 0\n ];\n },\n parseV8OrIE: function parseV8OrIE(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\"(eval \") > -1) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(\\),.*$)/g, \"\");\n }\n var sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\");\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(\" \") || void 0;\n var fileName = [\n \"eval\",\n \"\"\n ].indexOf(locationParts[0]) > -1 ? void 0 : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n },\n parseFFOrSafari: function parseFFOrSafari(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\" > eval\") > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n }\n if (line.indexOf(\"@\") === -1 && line.indexOf(\":\") === -1) {\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : void 0;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, \"\"));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }\n }, this);\n },\n parseOpera: function parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf(\"\\n\") > -1 && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split(\"\\n\");\n var result = [];\n for(var i = 2, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n parseOpera10: function parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split(\"\\n\");\n var result = [];\n for(var i = 0, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || void 0,\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function parseOpera11(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function(line) {\n var tokens = line.split(\"@\");\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || \"\";\n var functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n }\n};\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return \"\";\n }\n var path = \"\";\n while(node.parentElement){\n var name = node.localName;\n if (!name) {\n break;\n }\n name = name.toLowerCase();\n var parent = node.parentElement;\n var domSiblings = [];\n if (parent.children && parent.children.length > 0) {\n for(var i = 0; i < parent.children.length; i++){\n var sibling = parent.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name += \":eq(\" + domSiblings.indexOf(node) + \")\";\n }\n path = name + (path ? \">\" + path : \"\");\n node = parent;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isObjTooDeep(obj, limit) {\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = \"[Circular ~]\";\n } else {\n value = \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n }\n }\n } else {\n stack.push(value);\n }\n if (value === null) return value;\n if (value === void 0) return \"undefined\";\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"bigint\") {\n return value.toString() + \"n\";\n }\n if (_instanceof(value, Event)) {\n var eventResult = {};\n for(var eventKey in value){\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n } else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n } else if (_instanceof(value, Node)) {\n if (_instanceof(value, HTMLElement)) {\n return value ? value.outerHTML : \"\";\n }\n return value.nodeName;\n } else if (_instanceof(value, Error)) {\n return value.stack ? value.stack + \"\\nEnd of stack for Error object\" : value.name + \": \" + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === \"function\") {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\" + str.slice(0, options.stringLengthLimit) + \"...\";\n }\n return str;\n }\n}\nvar defaultLogOptions = {\n level: [\n \"assert\",\n \"clear\",\n \"count\",\n \"countReset\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeLog\",\n \"trace\",\n \"warn\"\n ],\n lengthThreshold: 1e3,\n logger: \"console\"\n};\nfunction initLogObserver(cb, win, options) {\n var logOptions = options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function() {};\n }\n var logger;\n if (typeof loggerType === \"string\") {\n logger = win[loggerType];\n } else {\n logger = loggerType;\n }\n var logCount = 0;\n var inStack = false;\n var cancelHandlers = [];\n if (logOptions.level.includes(\"error\")) {\n var errorHandler = function(event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n var payload = [\n stringify(message, logOptions.stringifyOptions)\n ];\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"error\", errorHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"error\", errorHandler);\n });\n var unhandledrejectionHandler = function(event) {\n var error;\n var payload;\n if (_instanceof(event.reason, Error)) {\n error = event.reason;\n payload = [\n stringify(\"Uncaught (in promise) \" + error.name + \": \" + error.message, logOptions.stringifyOptions)\n ];\n } else {\n error = new Error();\n payload = [\n stringify(\"Uncaught (in promise)\", logOptions.stringifyOptions),\n stringify(event.reason, logOptions.stringifyOptions)\n ];\n }\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n });\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(logOptions.level), _step; !(_step = _iterator()).done;){\n var levelType = _step.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n return function() {\n cancelHandlers.forEach(function(h) {\n return h();\n });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function() {};\n }\n return patch(_logger, level, function(original) {\n var _this1 = _this;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n original.apply(_this1, args);\n if (level === \"assert\" && !!args[0]) {\n return;\n }\n if (inStack) {\n return;\n }\n inStack = true;\n try {\n var trace = ErrorStackParser.parse(new Error()).map(function(stackFrame) {\n return stackFrame.toString();\n }).splice(1);\n var argsForPayload = level === \"assert\" ? args.slice(1) : args;\n var payload = argsForPayload.map(function(s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload\n });\n } else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: \"warn\",\n trace: [],\n payload: [\n stringify(\"The number of log records reached the threshold.\")\n ]\n });\n }\n } catch (error) {\n original.apply(void 0, [].concat([\n \"rrweb logger error:\",\n error\n ], args));\n } finally{\n inStack = false;\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = \"rrweb/console@1\";\nvar getRecordConsolePlugin = function(options) {\n return {\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n };\n};\n\nvar setImmediate = win['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function() {\n try {\n // use native Crypto API when available\n return win['crypto']['randomUUID']();\n } catch (err) {\n // fall back to generating our own UUID\n // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n var uuid = new Array(36);\n for (var i = 0; i < 36; i++) {\n uuid[i] = Math.floor(Math.random() * 16);\n }\n uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n uuid[19] = uuid[19] &= -5; // set bit 6 of clock-seq-and-reserved to zero\n uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n return _.map(uuid, function(x) {\n return x.toString(16);\n }).join('');\n }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console$1.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _testStorageSupported = function (storage) {\n var supported = true;\n try {\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n return _localStorageSupported = _testStorageSupported(storage || win.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n if (_sessionStorageSupported !== null && !forceCheck) {\n return _sessionStorageSupported;\n }\n return _sessionStorageSupported = _testStorageSupported(storage || win.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n var log_error = function(msg) {\n console$1.error(name + ' error: ' + msg);\n };\n\n return {\n is_supported: function(forceCheck) {\n var supported = is_supported_fn(storage, forceCheck);\n if (!supported) {\n console$1.error(name + ' unsupported');\n }\n return supported;\n },\n error: log_error,\n get: function(key) {\n try {\n return storage.getItem(key);\n } catch (err) {\n log_error(err);\n }\n return null;\n },\n parse: function(key) {\n try {\n return _.JSONDecode(storage.getItem(key)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n set: function(key, value) {\n try {\n storage.setItem(key, value);\n } catch (err) {\n log_error(err);\n }\n },\n remove: function(key) {\n try {\n storage.removeItem(key);\n } catch (err) {\n log_error(err);\n }\n }\n };\n}\n\n_.localStorage = _storageWrapper(win.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(win.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console$1.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(win.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Whale/')) {\n // https://user-agents.net/browsers/whale-browser\n return 'Whale Browser';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/,\n 'Whale Browser': /Whale\\/(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return win.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': win.location.hostname,\n 'current_url_path': win.location.pathname,\n 'current_url_protocol': win.location.protocol,\n 'current_url_search': win.location.search\n });\n }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n var timeoutPromise = null;\n var throttledItems = [];\n return function (item) {\n var self = this;\n throttledItems.push(item);\n\n if (!timeoutPromise) {\n timeoutPromise = new PromisePolyfill(function (resolve) {\n setTimeout(function () {\n var returnValue = fn.apply(self, [throttledItems]);\n timeoutPromise = null;\n throttledItems = [];\n resolve(returnValue);\n }, waitMs);\n });\n }\n return timeoutPromise;\n };\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n/**\n * Generates a W3C traceparent header for easy interop with distributed tracing systems i.e Open Telemetry\n * https://www.w3.org/TR/trace-context/#traceparent-header\n*/\nvar generateTraceparent = function() {\n var traceID = _.UUID().replace(/-/g, '');\n var parentID = _.UUID().replace(/-/g, '').substring(0, 16);\n\n // Sampled trace\n var traceFlags = '01';\n\n return '00-' + traceID + '-' + parentID + '-' + traceFlags;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = win.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n/**\n * Determines if CompressionStream API should be used.\n * Returns false for Safari 16.4 and 16.5 which have breaking CompressionStream bugs.\n * https://bugs.webkit.org/show_bug.cgi?id=254021\n * fixed in 16.6 https://developer.apple.com/documentation/safari-release-notes/safari-16_6-release-notes\n */\nvar canUseCompressionStream = function(userAgent, vendor, opera) {\n if (!win.CompressionStream) {\n return false;\n }\n\n var browser = _.info.browser(userAgent, vendor, opera);\n var version = _.info.browserVersion(userAgent, vendor, opera);\n if (browser === 'Safari' || browser === 'Mobile Safari') {\n if (version >= 16.4 && version < 16.6) {\n return false;\n }\n }\n\n return true;\n};\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info'] = _.info;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device'] = _.info.device;\n_['info']['properties'] = _.info.properties;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['isObject'] = _.isObject;\n_['JSONDecode'] = _.JSONDecode;\n_['JSONEncode'] = _.JSONEncode;\n_['toArray'] = _.toArray;\n_['NPO'] = NpoPromise;\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n /**\n * @type {Promise|null}\n */\n this.dbPromise = null;\n this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n return new PromisePolyfill(function (resolve, reject) {\n var openRequest = win.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n openRequest['onerror'] = function () {\n reject(openRequest.error);\n };\n\n openRequest['onsuccess'] = function () {\n resolve(openRequest.result);\n };\n\n openRequest['onupgradeneeded'] = function (ev) {\n var db = ev.target.result;\n\n OBJECT_STORES.forEach(function (storeName) {\n db.createObjectStore(storeName);\n });\n };\n });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n if (!win.indexedDB) {\n return PromisePolyfill.reject('indexedDB is not supported in this browser');\n }\n\n if (!this.dbPromise) {\n this.dbPromise = this._openDb();\n }\n\n return this.dbPromise\n .then(function (dbOrError) {\n if (dbOrError instanceof win['IDBDatabase']) {\n return PromisePolyfill.resolve();\n } else {\n return PromisePolyfill.reject(dbOrError);\n }\n });\n};\n\nIDBStorageWrapper.prototype.isInitialized = function () {\n return !!this.dbPromise;\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n var storeName = this.storeName;\n var doTransaction = function (db) {\n return new PromisePolyfill(function (resolve, reject) {\n var transaction = db.transaction(storeName, mode);\n transaction.oncomplete = function () {\n resolve(transaction);\n };\n transaction.onabort = transaction.onerror = function () {\n reject(transaction.error);\n };\n\n storeCb(transaction.objectStore(storeName));\n });\n };\n\n return this.dbPromise\n .then(doTransaction)\n .catch(function (err) {\n if (err && err['name'] === 'InvalidStateError') {\n // try reopening the DB if the connection is closed\n this.dbPromise = this._openDb();\n return this.dbPromise.then(doTransaction);\n } else {\n return PromisePolyfill.reject(err);\n }\n }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.put(value, key);\n });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.get(key);\n }).then(function () {\n return req.result;\n });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.delete(key);\n });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.getAll();\n }).then(function () {\n return req.result;\n });\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console$1.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console$1.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win$1 = (options && options.window) || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win$1['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console$1.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console$1.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\nvar logger$6 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || win.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || PromisePolyfill;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$6.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || win.localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return PromisePolyfill.resolve();\n};\n\nLocalStorageWrapper.prototype.isInitialized = function () {\n return true;\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, JSONStringify(value));\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n var item;\n try {\n item = JSONParse(this.storage.getItem(key));\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nvar logger$5 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, {\n storage: options.sharedLockStorage || win.localStorage,\n timeoutMS: options.sharedLockTimeoutMS,\n });\n }\n this.reportError = options.errorReporter || _.bind(logger$5.error, logger$5);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n\n if (options.enqueueThrottleMs) {\n this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n } else {\n this.enqueuePersisted = _.bind(function (queueEntry) {\n return this._enqueuePersisted([queueEntry]);\n }, this);\n }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized || !this.usePersistence) {\n return PromisePolyfill.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return PromisePolyfill.resolve(true);\n } else {\n return this.enqueuePersisted(queueEntry);\n }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n return this.saveToStorage(storedQueue.concat(queueEntries));\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue = this.memQueue.concat(queueEntries);\n }\n\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing items', err, queueEntries);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return PromisePolyfill.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.lock.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, queue);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger$4 = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n usePersistence: options.usePersistence,\n enqueueThrottleMs: options.enqueueThrottleMs\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this._flushPromise = this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new PromisePolyfill(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger$4.log('Flush: Request already in progress');\n return PromisePolyfill.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return PromisePolyfill.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return PromisePolyfill.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return PromisePolyfill.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return PromisePolyfill.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return PromisePolyfill.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger$4.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger$4.error.apply(logger$4.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger$4.error(err);\n }\n }\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n var now = Date.now();\n return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nvar logger$3 = console_with_prefix('recorder');\nvar CompressionStream = win['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp - the unix timestamp of the last recorded event from rrweb\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} UserIdInfo\n * @property {string} distinct_id\n * @property {string} user_id\n * @property {string} device_id\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n this._rrwebRecord = options.rrwebRecord || null;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n this.replayId = options.replayId;\n\n this.batchStartUrl = options.batchStartUrl || null;\n this.replayStartUrl = options.replayStartUrl || null;\n this.idleExpires = options.idleExpires || null;\n this.maxExpires = options.maxExpires || null;\n this.replayStartTime = options.replayStartTime || null;\n this.lastEventTimestamp = options.lastEventTimestamp || null;\n this.seqNo = options.seqNo || 0;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // disable persistence if localStorage is not supported\n // request-queue will automatically disable persistence if indexedDB fails to initialize\n var usePersistence = localStorageSupported(options.sharedLockStorage, true) && !this.getConfig('disable_persistence');\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n this.batcher = new RequestBatcher(this.batcherKey, {\n errorReporter: this.reportError.bind(this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n queueStorage: this.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: usePersistence,\n stopAllBatchingFunc: this.stopRecording.bind(this),\n\n // increased throttle and shared lock timeout because recording events are very high frequency.\n // this will minimize the amount of lock contention between enqueued events.\n // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n sharedLockTimeoutMS: 10 * 1000,\n });\n};\n\n/**\n * @returns {UserIdInfo}\n */\nSessionRecording.prototype.getUserIdInfo = function () {\n if (this.finalFlushUserIdInfo) {\n return this.finalFlushUserIdInfo;\n }\n\n var userIdInfo = {\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n };\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n userIdInfo['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n userIdInfo['$user_id'] = userId;\n }\n return userIdInfo;\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n this.batcher.stop();\n\n return this.queueStorage.init().catch(function () {\n this.reportError('Error initializing IndexedDB storage for unloading persisted data.');\n }.bind(this)).then(function () {\n // if the recording is too short, just delete any stored events without flushing\n if (this.getDurationMs() < this._getRecordMinMs()) {\n return this.queueStorage.removeItem(this.batcherKey);\n }\n\n return this.batcher.flush()\n .then(function () {\n return this.queueStorage.removeItem(this.batcherKey);\n }.bind(this));\n }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._rrwebRecord === null) {\n this.reportError('rrweb record function not provided. ');\n return;\n }\n\n if (this._stopRecording !== null) {\n logger$3.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger$3.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.maxExpires) {\n this.maxExpires = new Date().getTime() + this.recordMaxMs;\n }\n\n this.recordMinMs = this._getRecordMinMs();\n\n if (!this.replayStartTime) {\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n }\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = function () {\n clearTimeout(this.idleTimeoutId);\n var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n this.idleExpires = new Date().getTime() + idleTimeoutMs;\n }.bind(this);\n resetIdleTimeout();\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n try {\n this._stopRecording = this._rrwebRecord({\n 'emit': function (ev) {\n if (this.idleExpires && this.idleExpires < ev.timestamp) {\n this._onIdleTimeout();\n return;\n }\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n // promise only used to await during tests\n this.__enqueuePromise = this.batcher.enqueue(ev);\n\n // Capture the timestamp of the last event for duration calculation.\n if (this.lastEventTimestamp === null || ev.timestamp > this.lastEventTimestamp) {\n this.lastEventTimestamp = ev.timestamp;\n }\n }.bind(this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n },\n 'plugins': this.getConfig('record_console') ? [\n getRecordConsolePlugin({\n stringifyOptions: {\n stringLengthLimit: 1000,\n numOfKeysLimit: 50,\n depthOfLimit: 2\n }\n })\n ] : []\n });\n } catch (err) {\n this.reportError('Unexpected error when starting rrweb recording.', err);\n }\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n var maxTimeoutMs = this.maxExpires - new Date().getTime();\n this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n // store the user ID info in case this is getting called in mixpanel.reset()\n this.finalFlushUserIdInfo = this.getUserIdInfo();\n\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n var flushPromise;\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n flushPromise = this.batcher.clear();\n } else if (!skipFlush) {\n // flush any remaining events from running batcher\n flushPromise = this.batcher.flush();\n }\n this.batcher.stop();\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n var onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n cb({error: 'Tracking has been opted out, stopping recording.'});\n }\n }.bind(this);\n\n this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n // don't break if mixpanel instance was destroyed at some point\n var tabId;\n try {\n tabId = this._mixpanel.get_tab_id();\n } catch (e) {\n this.reportError('Error getting tab ID for serialization ', e);\n tabId = null;\n }\n\n return {\n 'replayId': this.replayId,\n 'seqNo': this.seqNo,\n 'replayStartTime': this.replayStartTime,\n 'batchStartUrl': this.batchStartUrl,\n 'replayStartUrl': this.replayStartUrl,\n 'lastEventTimestamp': this.lastEventTimestamp,\n 'idleExpires': this.idleExpires,\n 'maxExpires': this.maxExpires,\n 'tabId': tabId,\n };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n var recording = new SessionRecording(_.extend({}, options, {\n replayId: serializedRecording['replayId'],\n batchStartUrl: serializedRecording['batchStartUrl'],\n replayStartUrl: serializedRecording['replayStartUrl'],\n idleExpires: serializedRecording['idleExpires'],\n maxExpires: serializedRecording['maxExpires'],\n replayStartTime: serializedRecording['replayStartTime'],\n lastEventTimestamp: serializedRecording['lastEventTimestamp'],\n seqNo: serializedRecording['seqNo'],\n sharedLockStorage: options.sharedLockStorage,\n }));\n\n return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n\n this._onBatchSent();\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }.bind(this);\n var apiHost = (this._mixpanel.get_api_host && this._mixpanel.get_api_host('record')) || this.getConfig('api_host');\n win['fetch'](apiHost + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n var numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = Infinity;\n var batchEndTime = -Infinity;\n var hasFullSnapshot = false;\n for (var i = 0; i < numEvents; i++) {\n batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n if (data[i].type === EventType.FullSnapshot) {\n hasFullSnapshot = true;\n }\n }\n\n if (this.seqNo === 0) {\n if (!hasFullSnapshot) {\n callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n this.stopRecording(true);\n return;\n }\n this.replayStartTime = batchStartTime;\n } else if (!this.replayStartTime) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n this.replayStartTime = batchStartTime;\n }\n\n var replayLengthMs = batchEndTime - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = JSON.stringify(data);\n Object.assign(reqParams, this.getUserIdInfo());\n\n if (canUseCompressionStream(userAgent, navigator.vendor, windowOpera)) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }.bind(this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger$3.error.apply(logger$3.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger$3.error(err);\n }\n};\n\n/**\n * Calculates the duration of the recording in milliseconds, based on the start time and time of last recorded event.\n * @returns {number} The duration of the recording in milliseconds. Returns 0 if recording hasn't started.\n */\nSessionRecording.prototype.getDurationMs = function() {\n if (this.replayStartTime === null) {\n return 0;\n }\n\n // If the recording has no events, assume it is in progress and use the current time as the end time.\n if (this.lastEventTimestamp === null) {\n return new Date().getTime() - this.replayStartTime;\n }\n\n return this.lastEventTimestamp - this.replayStartTime;\n};\n\n/**\n * Lazily loads the minimum recording length config in milliseconds, respecting the maximum limit.\n * @returns {number} The minimum recording length in milliseconds.\n */\nSessionRecording.prototype._getRecordMinMs = function() {\n var configValue = this.getConfig('record_min_ms');\n\n if (configValue > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n logger$3.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n return MAX_VALUE_FOR_MIN_RECORDING_MS;\n }\n\n return configValue;\n};\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n /** @type {IDBStorageWrapper} */\n this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n this.errorReporter = options.errorReporter;\n this.mixpanelInstance = options.mixpanelInstance;\n this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.isPersistenceEnabled = function() {\n return !this.mixpanelInstance.get_config('disable_persistence');\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve();\n }\n\n var tabId = serializedRecording['tabId'];\n if (!tabId) {\n console.warn('No tab ID is set, cannot persist recording metadata.');\n return PromisePolyfill.resolve();\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.setItem(tabId, serializedRecording);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve(null);\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n }.bind(this))\n .then(function (serializedRecording) {\n return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n if (this.isPersistenceEnabled()) {\n // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n return this.markActiveRecordingExpired();\n } else {\n return this.deleteActiveRecording();\n }\n};\n\nRecordingRegistry.prototype.markActiveRecordingExpired = function () {\n return this.getActiveRecording()\n .then(function (serializedRecording) {\n if (serializedRecording) {\n serializedRecording['maxExpires'] = 0;\n return this.setActiveRecording(serializedRecording);\n }\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.deleteActiveRecording = function () {\n // avoid initializing IDB if this registry instance hasn't already written a recording\n if (this.idb.isInitialized()) {\n return this.idb.removeItem(this.mixpanelInstance.get_tab_id())\n .catch(this.handleError.bind(this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve([]);\n }\n\n return this.idb.init()\n .then(function() {\n return this.idb.getAll();\n }.bind(this))\n .then(function (serializedRecordings) {\n // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n var unloadPromises = serializedRecordings\n .filter(function (serializedRecording) {\n return isRecordingExpired(serializedRecording);\n })\n .map(function (serializedRecording) {\n var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n mixpanelInstance: this.mixpanelInstance,\n sharedLockStorage: this.sharedLockStorage\n });\n return sessionRecording.unloadPersistedData()\n .then(function () {\n // expired recording was successfully flushed, we can clean it up from the registry\n return this.idb.removeItem(serializedRecording['tabId']);\n }.bind(this))\n .catch(this.handleError.bind(this));\n }.bind(this));\n\n return PromisePolyfill.all(unloadPromises);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nvar logger$2 = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n this.mixpanelInstance = mixpanelInstance;\n this.rrwebRecord = rrwebRecord || record;\n this.sharedLockStorage = sharedLockStorage;\n\n /**\n * @member {import('./registry').RecordingRegistry}\n */\n this.recordingRegistry = new RecordingRegistry({\n mixpanelInstance: this.mixpanelInstance,\n errorReporter: logger$2.error,\n sharedLockStorage: sharedLockStorage\n });\n this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n this.activeRecording = null;\n this.stopRecordingInProgress = false;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n options = options || {};\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger$2.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = function () {\n logger$2.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }.bind(this);\n\n var onMaxLengthReached = function () {\n logger$2.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }.bind(this);\n\n var onBatchSent = function () {\n this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n }.bind(this);\n\n /**\n * @type {import('./session-recording').SessionRecordingOptions}\n */\n var sessionRecordingOptions = {\n mixpanelInstance: this.mixpanelInstance,\n onBatchSent: onBatchSent,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: this.rrwebRecord,\n sharedLockStorage: this.sharedLockStorage\n };\n\n if (options.activeSerializedRecording) {\n this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n } else {\n this.activeRecording = new SessionRecording(sessionRecordingOptions);\n }\n\n this.activeRecording.startRecording(options.shouldStopBatcher);\n return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n // Prevents activeSerializedRecording from being reused when stopping the recording.\n this.stopRecordingInProgress = true;\n return this._stopCurrentRecording(false, true).then(function() {\n return this.recordingRegistry.clearActiveRecording();\n }.bind(this)).then(function() {\n this.stopRecordingInProgress = false;\n }.bind(this));\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush, disableActiveRecording) {\n if (this.activeRecording) {\n var stopRecordingPromise = this.activeRecording.stopRecording(skipFlush);\n if (disableActiveRecording) {\n this.activeRecording = null;\n }\n return stopRecordingPromise;\n }\n return PromisePolyfill.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n this.activeRecording.startRecording(false);\n return PromisePolyfill.resolve(null);\n }\n\n return this.recordingRegistry.getActiveRecording()\n .then(function (activeSerializedRecording) {\n if (activeSerializedRecording && !this.stopRecordingInProgress) {\n return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n } else if (startNewIfInactive) {\n return this.startRecording({shouldStopBatcher: false});\n } else {\n logger$2.log('No resumable recording found.');\n return null;\n }\n }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\nwin['__mp_recorder'] = MixpanelRecorder;\n\n// stateless utils\n// mostly from https://github.com/mixpanel/mixpanel-js/blob/989ada50f518edab47b9c4fd9535f9fbd5ec5fc0/src/autotrack-utils.js\n\n\nvar EV_CHANGE = 'change';\nvar EV_CLICK = 'click';\nvar EV_HASHCHANGE = 'hashchange';\nvar EV_INPUT = 'input';\nvar EV_LOAD = 'load';\nvar EV_MP_LOCATION_CHANGE = 'mp_locationchange';\nvar EV_POPSTATE = 'popstate';\n// TODO scrollend isn't available in Safari: document or polyfill?\nvar EV_SCROLLEND = 'scrollend';\nvar EV_SCROLL = 'scroll';\nvar EV_SELECT = 'select';\nvar EV_SUBMIT = 'submit';\nvar EV_TOGGLE = 'toggle';\nvar EV_VISIBILITYCHANGE = 'visibilitychange';\n\nvar CLICK_EVENT_PROPS = [\n 'clientX', 'clientY',\n 'offsetX', 'offsetY',\n 'pageX', 'pageY',\n 'screenX', 'screenY',\n 'x', 'y'\n];\nvar OPT_IN_CLASSES = ['mp-include'];\nvar OPT_OUT_CLASSES = ['mp-no-track'];\nvar SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(['mp-sensitive']);\nvar TRACKED_ATTRS = [\n 'aria-label', 'aria-labelledby', 'aria-describedby',\n 'href', 'name', 'role', 'title', 'type'\n];\n\nvar INTERACTIVE_ARIA_ROLES = {\n 'button': true,\n 'checkbox': true,\n 'combobox': true,\n 'grid': true,\n 'link': true,\n 'listbox': true,\n 'menu': true,\n 'menubar': true,\n 'menuitem': true,\n 'menuitemcheckbox': true,\n 'menuitemradio': true,\n 'navigation': true,\n 'option': true,\n 'radio': true,\n 'radiogroup': true,\n 'searchbox': true,\n 'slider': true,\n 'spinbutton': true,\n 'switch': true,\n 'tab': true,\n 'tablist': true,\n 'textbox': true,\n 'tree': true,\n 'treegrid': true,\n 'treeitem': true\n};\n\nvar ALWAYS_NON_INTERACTIVE_TAGS = {\n // Document metadata\n 'base': true,\n 'head': true,\n 'html': true,\n 'link': true,\n 'meta': true,\n 'script': true,\n 'style': true,\n 'title': true,\n // Text formatting\n 'br': true,\n 'hr': true,\n 'wbr': true,\n // Other\n 'noscript': true,\n 'picture': true,\n 'source': true,\n 'template': true,\n 'track': true\n};\n\n// Common container tags that need additional checks\nvar TEXT_CONTAINER_TAGS = {\n 'article': true,\n 'div': true,\n 'h1': true,\n 'h2': true,\n 'h3': true,\n 'h4': true,\n 'h5': true,\n 'h6': true,\n 'p': true,\n 'section': true,\n 'span': true\n};\n\nvar EVENT_HANDLER_ATTRIBUTES = [\n 'onclick', 'onmousedown', 'onmouseup', 'onpointerdown', 'onpointerup', 'ontouchend', 'ontouchstart'\n];\n\nvar MAX_DEPTH = 5;\n\nvar logger$1 = console_with_prefix('autocapture');\n\n\nfunction getClasses(el) {\n var classes = {};\n var classList = getClassName(el).split(' ');\n for (var i = 0; i < classList.length; i++) {\n var cls = classList[i];\n if (cls) {\n classes[cls] = true;\n }\n }\n return classes;\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n * @param {Element} el - element to get the className of\n * @returns {string} the element's class\n */\nfunction getClassName(el) {\n switch(typeof el.className) {\n case 'string':\n return el.className;\n case 'object': // handle cases where className might be SVGAnimatedString or some other type\n return el.className.baseVal || el.getAttribute('class') || '';\n default: // future proof\n return '';\n }\n}\n\nfunction getPreviousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n } else {\n do {\n el = el.previousSibling;\n } while (el && !isElementNode(el));\n return el;\n }\n}\n\nfunction getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) {\n var props = {\n '$classes': getClassName(el).split(' '),\n '$tag_name': el.tagName.toLowerCase()\n };\n var elId = el.id;\n if (elId) {\n props['$id'] = elId;\n }\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) {\n _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) {\n if (el.hasAttribute(attr) && !blockAttrsSet[attr]) {\n var attrVal = el.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$attr-' + attr] = attrVal;\n }\n }\n });\n }\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = el;\n while (currentElem = getPreviousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign\n nthChild++;\n if (currentElem.tagName === el.tagName) {\n nthOfType++;\n }\n }\n props['$nth_child'] = nthChild;\n props['$nth_of_type'] = nthOfType;\n\n return props;\n}\n\nfunction getPropsForDOMEvent(ev, config) {\n var allowElementCallback = config.allowElementCallback;\n var allowSelectors = config.allowSelectors || [];\n var blockAttrs = config.blockAttrs || [];\n var blockElementCallback = config.blockElementCallback;\n var blockSelectors = config.blockSelectors || [];\n var captureTextContent = config.captureTextContent || false;\n var captureExtraAttrs = config.captureExtraAttrs || [];\n var capturedForHeatMap = config.capturedForHeatMap || false;\n\n // convert array to set every time, as the config may have changed\n var blockAttrsSet = {};\n _.each(blockAttrs, function(attr) {\n blockAttrsSet[attr] = true;\n });\n\n var props = null;\n\n var target = typeof ev.target === 'undefined' ? ev.srcElement : ev.target;\n if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = target.parentNode;\n }\n\n if (\n shouldTrackDomEvent(target, ev) &&\n isElementAllowed(target, ev, allowElementCallback, allowSelectors) &&\n !isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n var targetElementList = [target];\n var curEl = target;\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n targetElementList.push(curEl.parentNode);\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href, explicitNoTrack = false;\n _.each(targetElementList, function(el) {\n var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors);\n\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (!blockAttrsSet['href'] && el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = shouldTrackDetails && shouldTrackValue(href) && href;\n }\n\n if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) {\n explicitNoTrack = true;\n }\n\n elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors));\n }, this);\n\n if (!explicitNoTrack) {\n var docElement = document$1['documentElement'];\n props = {\n '$event_type': ev.type,\n '$host': win.location.host,\n '$pathname': win.location.pathname,\n '$elements': elementsJson,\n '$el_attr__href': href,\n '$viewportHeight': Math.max(docElement['clientHeight'], win['innerHeight'] || 0),\n '$viewportWidth': Math.max(docElement['clientWidth'], win['innerWidth'] || 0),\n '$pageHeight': document$1['body']['offsetHeight'] || 0,\n '$pageWidth': document$1['body']['offsetWidth'] || 0,\n };\n _.each(captureExtraAttrs, function(attr) {\n if (!blockAttrsSet[attr] && target.hasAttribute(attr)) {\n var attrVal = target.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$el_attr__' + attr] = attrVal;\n }\n }\n });\n\n if (captureTextContent) {\n elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (ev.type === EV_CLICK) {\n _.each(CLICK_EVENT_PROPS, function(prop) {\n if (prop in ev) {\n props['$' + prop] = ev[prop];\n }\n });\n if (capturedForHeatMap) {\n props['$captured_for_heatmap'] = true;\n }\n target = guessRealClickTarget(ev);\n }\n // prioritize text content from \"real\" click target if different from original target\n if (captureTextContent) {\n var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (target) {\n // target may have been recalculated; check allowlists and blocklists again\n if (\n !isElementAllowed(target, ev, allowElementCallback, allowSelectors) ||\n isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n return null;\n }\n\n var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors);\n props['$target'] = targetProps;\n // pull up more props onto main event props\n props['$el_classes'] = targetProps['$classes'];\n _.extend(props, _.strip_empty_properties({\n '$el_id': targetProps['$id'],\n '$el_tag_name': targetProps['$tag_name']\n }));\n }\n }\n }\n\n return props;\n}\n\n\n/**\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {string} the element's direct text content\n */\nfunction getSafeText(el, ev, allowElementCallback, allowSelectors) {\n var elText = '';\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) {\n _.each(el.childNodes, function(child) {\n if (isTextNode(child) && child.textContent) {\n elText += _.trim(child.textContent)\n // scrub potentially sensitive values\n .split(/(\\s+)/).filter(shouldTrackValue).join('')\n // normalize whitespace\n .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ')\n // truncate\n .substring(0, 255);\n }\n });\n }\n\n return _.trim(elText);\n}\n\nfunction guessRealClickTarget(ev) {\n var target = ev.target;\n var composedPath = ev['composedPath']();\n for (var i = 0; i < composedPath.length; i++) {\n var node = composedPath[i];\n if (\n isTag(node, 'a') ||\n isTag(node, 'button') ||\n isTag(node, 'input') ||\n isTag(node, 'select') ||\n (node.getAttribute && node.getAttribute('role') === 'button')\n ) {\n target = node;\n break;\n }\n if (node === target) {\n break;\n }\n }\n return target;\n}\n\nfunction isElementAllowed(el, ev, allowElementCallback, allowSelectors) {\n if (allowElementCallback) {\n try {\n if (!allowElementCallback(el, ev)) {\n return false;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in allowElementCallback', err);\n return false;\n }\n }\n\n if (!allowSelectors.length) {\n // no allowlist; all elements are fair game\n return true;\n }\n\n for (var i = 0; i < allowSelectors.length; i++) {\n var sel = allowSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n return false;\n}\n\nfunction isElementBlocked(el, ev, blockElementCallback, blockSelectors) {\n var i;\n\n if (blockElementCallback) {\n try {\n if (blockElementCallback(el, ev)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in blockElementCallback', err);\n return true;\n }\n }\n\n if (blockSelectors && blockSelectors.length) {\n // programmatically prevent tracking of elements that match CSS selectors\n for (i = 0; i < blockSelectors.length; i++) {\n var sel = blockSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n }\n\n // allow users to programmatically prevent tracking of elements by adding default classes such as 'mp-no-track'\n var classes = getClasses(el);\n for (i = 0; i < OPT_OUT_CLASSES.length; i++) {\n if (classes[OPT_OUT_CLASSES[i]]) {\n return true;\n }\n }\n\n return false;\n}\n\n/*\n * Check whether a DOM node has nodeType Node.ELEMENT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of the correct nodeType\n */\nfunction isElementNode(node) {\n return node && node.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nfunction isTag(el, tag) {\n return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n\n/*\n * Check whether a DOM node is a TEXT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of type Node.TEXT_NODE\n */\nfunction isTextNode(node) {\n return node && node.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n\nfunction minDOMApisSupported() {\n try {\n var testEl = document$1.createElement('div');\n return !!testEl['matches'];\n } catch (err) {\n return false;\n }\n}\n\nfunction weakSetSupported() {\n return typeof WeakSet !== 'undefined';\n}\n\n/*\n * Check whether a DOM event should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} ev - event to check\n * @returns {boolean} whether the event should be tracked\n */\nfunction shouldTrackDomEvent(el, ev) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n var tag = el.tagName.toLowerCase();\n switch (tag) {\n case 'form':\n return ev.type === EV_SUBMIT;\n case 'input':\n if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n return ev.type === EV_CHANGE;\n } else {\n return ev.type === EV_CLICK;\n }\n case 'select':\n case 'textarea':\n return ev.type === EV_CHANGE;\n default:\n return ev.type === EV_CLICK;\n }\n}\n\n/*\n * Check whether a DOM element should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) {\n var i;\n\n if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) {\n return false;\n }\n\n for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n var classes = getClasses(curEl);\n for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) {\n if (classes[SENSITIVE_DATA_CLASSES[i]]) {\n return false;\n }\n }\n }\n\n var elClasses = getClasses(el);\n for (i = 0; i < OPT_IN_CLASSES.length; i++) {\n if (elClasses[OPT_IN_CLASSES[i]]) {\n return true;\n }\n }\n\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n if (\n isTag(el, 'input') ||\n isTag(el, 'select') ||\n isTag(el, 'textarea') ||\n el.getAttribute('contenteditable') === 'true'\n ) {\n return false;\n }\n\n // don't include hidden or password fields\n var type = el.type || '';\n if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch(type.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n // filter out data from fields that look like sensitive fields\n var name = el.name || el.id || '';\n if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n}\n\n\n/*\n * Check whether a string value should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackValue(value) {\n if (value === null || _.isUndefined(value)) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = _.trim(value);\n\n // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n }\n\n // check to see if input value looks like a social security number\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates a cross-browser compatible scroll end function with appropriate event listener.\n * For browsers that support scrollend, returns the original function with scrollend event.\n * For browsers without scrollend support, returns a debounced function that triggers\n * 100ms after the last scroll event to simulate scrollend behavior.\n * @param {Function} originalFunction - The function to call when scrolling ends\n * @returns {Object} Object containing listener function and eventType string\n * @returns {Function} returns.listener - The wrapped function to use as event listener\n * @returns {string} returns.eventType - The event type to listen for ('scrollend' or 'scroll')\n */\nfunction getPolyfillScrollEndFunction(originalFunction) {\n var supportsScrollEnd = 'onscrollend' in win;\n var polyfillFunction = safewrap(originalFunction);\n var polyfillEvent = EV_SCROLLEND;\n if (!supportsScrollEnd) {\n // Polyfill for browsers without scrollend support: wait 100ms after the last scroll event\n // https://developer.chrome.com/blog/scrollend-a-new-javascript-event\n var scrollTimer = null;\n var scrollDelayMs = 100;\n\n polyfillFunction = safewrap(function() {\n clearTimeout(scrollTimer);\n scrollTimer = setTimeout(originalFunction, scrollDelayMs);\n });\n\n polyfillEvent = EV_SCROLL;\n }\n\n return {\n listener: polyfillFunction,\n eventType: polyfillEvent\n };\n}\n\nfunction hasInlineEventHandlers(element) {\n for (var i = 0; i < EVENT_HANDLER_ATTRIBUTES.length; i++) {\n if (element.hasAttribute(EVENT_HANDLER_ATTRIBUTES[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction hasInteractiveAriaRole(element) {\n var role = element.getAttribute('role');\n if (!role) return false;\n\n // Handle invalid markup where multiple roles might be specified\n // Only the first token is recognized per ARIA spec\n var primaryRole = role.trim().split(/\\s+/)[0].toLowerCase();\n\n return INTERACTIVE_ARIA_ROLES[primaryRole];\n}\n\nfunction hasAnyInteractivityIndicators(element) {\n var tagName = element.tagName.toLowerCase();\n\n // Check for interactive HTML elements\n if (tagName === 'button' ||\n tagName === 'input' ||\n tagName === 'select' ||\n tagName === 'textarea' ||\n tagName === 'details' ||\n tagName === 'dialog') {\n return true;\n }\n\n if (element.isContentEditable) {\n return true;\n }\n\n if (element.onclick || element.onmousedown || element.onmouseup || element.ontouchstart || element.ontouchend) {\n return true;\n }\n\n if (hasInlineEventHandlers(element)) {\n return true;\n }\n\n if (hasInteractiveAriaRole(element)) {\n return true;\n }\n\n if (tagName === 'a' && element.hasAttribute('href')) {\n return true;\n }\n\n if (element.hasAttribute('tabindex')) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isDefinitelyNonInteractive(element) {\n if (!element || !element.tagName) {\n return true;\n }\n\n var tagName = element.tagName.toLowerCase();\n\n // These tags are definitely non-interactive\n if (ALWAYS_NON_INTERACTIVE_TAGS[tagName]) {\n return true;\n }\n\n // For all other elements, we can only be certain they're non-interactive if they lack ALL indicators of interactivity\n // Check for any signs of interactivity\n if (hasAnyInteractivityIndicators(element)) {\n return false;\n }\n\n // Check parent chain for interactive context\n var parent = element.parentElement;\n var depth = 0;\n\n while (parent && depth < MAX_DEPTH) {\n if (hasAnyInteractivityIndicators(parent)) {\n return false; // Element is inside an interactive parent\n }\n\n if (parent.getRootNode && parent.getRootNode() !== document$1) {\n var root = parent.getRootNode();\n if (root.host && hasAnyInteractivityIndicators(root.host)) {\n return false; // Inside an interactive shadow host\n }\n }\n\n parent = parent.parentElement;\n depth++;\n }\n\n // Pure text containers without any interactive context\n if (TEXT_CONTAINER_TAGS[tagName]) {\n // These are non-interactive ONLY if they have no interactive indicators (already checked as part of hasAnyInteractivityIndicators)\n return true;\n }\n\n // Default: we can't be certain it's non-interactive\n return false;\n}\n\n/**\n * Get the composed path of a click event for elements embedded in shadow DOM.\n * @param {Event} event - event to get the composed path from\n * @returns {Array} the composed path of the click event\n*/\nfunction getClickEventComposedPath(event) {\n if ('composedPath' in event) {\n return event['composedPath']();\n }\n\n return [];\n}\n\n/**\n * Get the element from a click event, accounting for elements embedded in shadow DOM.\n * @param {Event} event - event to get the target from\n * @returns {Element | null} the element that was the target of the click event\n */\nfunction getClickEventTargetElement(event) {\n var path = getClickEventComposedPath(event);\n\n if (path && path.length > 0) {\n return path[0];\n }\n\n return event['target'] || event['srcElement'];\n}\n\n/** @const */ var DEFAULT_RAGE_CLICK_THRESHOLD_PX = 30;\n/** @const */ var DEFAULT_RAGE_CLICK_TIMEOUT_MS = 1000;\n/** @const */ var DEFAULT_RAGE_CLICK_CLICK_COUNT = 4;\n/** @const */ var DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY = false;\n\nfunction RageClickTracker() {\n this.clicks = [];\n}\n\n/**\n * Determines if a click event is part of a rage click sequence.\n * @param {Event} event - the original click event.\n * @param {import('../index.d.ts').RageClickConfig} options - configuration options for rage click detection.\n * @returns {boolean} - true if the click is considered a rage click, false otherwise.\n */\nRageClickTracker.prototype.isRageClick = function(event, options) {\n options = options || {};\n var thresholdPx = options['threshold_px'] || DEFAULT_RAGE_CLICK_THRESHOLD_PX;\n var timeoutMs = options['timeout_ms'] || DEFAULT_RAGE_CLICK_TIMEOUT_MS;\n var clickCount = options['click_count'] || DEFAULT_RAGE_CLICK_CLICK_COUNT;\n var interactiveElementsOnly = options['interactive_elements_only'] || DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY;\n\n if (interactiveElementsOnly) {\n var target = getClickEventTargetElement(event);\n if (!target || isDefinitelyNonInteractive(target)) {\n return false;\n }\n }\n\n var timestamp = Date.now();\n var x = event['pageX'], y = event['pageY'];\n\n var lastClick = this.clicks[this.clicks.length - 1];\n if (\n lastClick &&\n timestamp - lastClick.timestamp < timeoutMs &&\n Math.sqrt(Math.pow(x - lastClick.x, 2) + Math.pow(y - lastClick.y, 2)) < thresholdPx\n ) {\n this.clicks.push({ x: x, y: y, timestamp: timestamp });\n if (this.clicks.length >= clickCount) {\n this.clicks = [];\n return true;\n }\n } else {\n this.clicks = [{ x: x, y: y, timestamp: timestamp }];\n }\n return false;\n};\n\nfunction ShadowDOMObserver(changeCallback, observerConfig) {\n this.changeCallback = changeCallback || function() {};\n this.observerConfig = observerConfig;\n\n this.observedShadowRoots = null;\n this.shadowObservers = [];\n}\n\nShadowDOMObserver.prototype.getEventTarget = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n return getClickEventTargetElement(event);\n};\n\nShadowDOMObserver.prototype.observeFromEvent = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n var path = getClickEventComposedPath(event);\n\n // Check each element in path for shadow roots\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n\n if (element && element.shadowRoot) {\n this.observeShadowRoot(element.shadowRoot);\n }\n }\n};\n\n\nShadowDOMObserver.prototype.observeShadowRoot = function(shadowRoot) {\n if (!this.observedShadowRoots || this.observedShadowRoots.has(shadowRoot)) {\n return;\n }\n\n var self = this;\n\n try {\n this.observedShadowRoots.add(shadowRoot);\n\n var observer = new window.MutationObserver(function() {\n self.changeCallback();\n });\n\n observer.observe(shadowRoot, this.observerConfig);\n this.shadowObservers.push(observer);\n } catch (e) {\n logger$1.critical('Error while observing shadow root', e);\n }\n};\n\n\nShadowDOMObserver.prototype.start = function() {\n if (this.observedShadowRoots) {\n return;\n }\n\n if (!weakSetSupported()) {\n logger$1.critical('Shadow DOM observation unavailable: WeakSet not supported');\n return;\n }\n\n this.observedShadowRoots = new WeakSet();\n};\n\nShadowDOMObserver.prototype.stop = function() {\n if (!this.observedShadowRoots) {\n return;\n }\n\n for (var i = 0; i < this.shadowObservers.length; i++) {\n try {\n this.shadowObservers[i].disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting shadow DOM observer', e);\n }\n }\n this.shadowObservers = [];\n this.observedShadowRoots = null;\n};\n\n/** @const */ var DEFAULT_DEAD_CLICK_TIMEOUT_MS = 500;\n/** @const */ var INTERACTION_EVENTS = [EV_CHANGE, EV_INPUT, EV_SUBMIT, EV_SELECT, EV_TOGGLE];\n/** @const */ var LAYOUT_EVENTS = [EV_SCROLLEND];\n/** @const */ var NAVIGATION_EVENTS = [EV_HASHCHANGE];\n/** @const */ var MUTATION_OBSERVER_CONFIG = {\n characterData: true,\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class', 'hidden', 'checked', 'selected', 'value', 'display', 'visibility']\n};\n\n\nfunction DeadClickTracker(onDeadClickCallback) {\n this.eventListeners = [];\n this.mutationObserver = null;\n this.shadowDOMObserver = null;\n\n this.isTracking = false;\n this.lastChangeEventTimestamp = 0;\n this.pendingClicks = [];\n this.onDeadClickCallback = onDeadClickCallback;\n this.processingActive = false;\n this.processingTimeout = null;\n}\n\n\nDeadClickTracker.prototype.addClick = function(event) {\n var element = this.shadowDOMObserver && this.shadowDOMObserver.getEventTarget(event);\n\n if (!element) {\n element = event['target'] || event['srcElement'];\n }\n\n if (!element || isDefinitelyNonInteractive(element)) {\n return false;\n }\n\n if (this.shadowDOMObserver) {\n this.shadowDOMObserver.observeFromEvent(event);\n }\n this.pendingClicks.push({\n element: element,\n event: event,\n timestamp: Date.now()\n });\n return true;\n};\n\nDeadClickTracker.prototype.trackClick = function(event, config) {\n if (!this.isTracking) {\n return false;\n }\n\n var added = this.addClick(event);\n if (added) {\n this.triggerProcessing(config);\n }\n return added;\n};\n\nDeadClickTracker.prototype.getDeadClicks = function(config) {\n if (this.pendingClicks.length === 0) {\n return [];\n }\n\n var timeoutMs = config['timeout_ms'];\n var now = Date.now();\n var clicksToEvaluate = this.pendingClicks.slice(); // Copy array\n this.pendingClicks = []; // Clear original\n\n var deadClicks = [];\n\n for (var i = 0; i < clicksToEvaluate.length; i++) {\n var click = clicksToEvaluate[i];\n\n if (now - click.timestamp >= timeoutMs) {\n // Click has exceeded timeout, check if it's dead by looking for changes after this specific click\n if (!this.hasChangesAfter(click.timestamp)) {\n deadClicks.push(click);\n }\n } else {\n // Still pending - add back\n this.pendingClicks.push(click);\n }\n }\n\n return deadClicks;\n};\n\nDeadClickTracker.prototype.hasChangesAfter = function(timestamp) {\n // 100ms tolerance for race condition between when we record the click and the change event\n return this.lastChangeEventTimestamp >= (timestamp - 100);\n};\n\nDeadClickTracker.prototype.recordChangeEvent = function() {\n this.lastChangeEventTimestamp = Date.now();\n};\n\nDeadClickTracker.prototype.triggerProcessing = function(config) {\n // Prevent multiple concurrent processing chains\n if (this.processingActive) {\n return;\n }\n this.processingActive = true;\n this.processRecursively(config);\n};\n\nDeadClickTracker.prototype.processRecursively = function(config) {\n if (!this.isTracking || !this.onDeadClickCallback) {\n this.processingActive = false;\n return;\n }\n\n var timeoutMs = config['timeout_ms'];\n var self = this;\n\n this.processingTimeout = setTimeout(function() {\n if (!self.processingActive) {\n return;\n }\n\n var deadClicks = self.getDeadClicks(config);\n\n for (var i = 0; i < deadClicks.length; i++) {\n self.onDeadClickCallback(deadClicks[i].event);\n }\n\n if (self.pendingClicks.length > 0) {\n self.processRecursively(config);\n } else {\n self.processingActive = false;\n }\n }, timeoutMs);\n};\n\nDeadClickTracker.prototype.startTracking = function() {\n if (this.isTracking) {\n return;\n }\n\n this.isTracking = true;\n\n var self = this;\n\n INTERACTION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener(event, handler, { capture: true, passive: true });\n self.eventListeners.push({ target: document, event: event, handler: handler, options: { capture: true, passive: true } });\n });\n NAVIGATION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler);\n self.eventListeners.push({ target: window, event: event, handler: handler });\n });\n LAYOUT_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler, { passive: true });\n self.eventListeners.push({ target: window, event: event, handler: handler, options: { passive: true } });\n });\n var selectionHandler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener('selectionchange', selectionHandler);\n self.eventListeners.push({ target: document, event: 'selectionchange', handler: selectionHandler });\n\n // Set up MutationObserver\n if (window.MutationObserver) {\n try {\n this.mutationObserver = new window.MutationObserver(function() {\n self.recordChangeEvent();\n });\n\n this.mutationObserver.observe(document.body || document.documentElement, MUTATION_OBSERVER_CONFIG);\n } catch (e) {\n logger$1.critical('Error while setting up mutation observer', e);\n }\n }\n\n // Set up Shadow DOM observer\n if (window.customElements) {\n try {\n this.shadowDOMObserver = new ShadowDOMObserver(\n function() {\n self.recordChangeEvent();\n },\n MUTATION_OBSERVER_CONFIG\n );\n this.shadowDOMObserver.start();\n } catch (e) {\n logger$1.critical('Error while setting up shadow DOM observer', e);\n this.shadowDOMObserver = null;\n }\n }\n};\n\nDeadClickTracker.prototype.stopTracking = function() {\n if (!this.isTracking) {\n return;\n }\n\n this.isTracking = false;\n this.pendingClicks = [];\n this.lastChangeEventTimestamp = 0;\n this.processingActive = false;\n\n if (this.processingTimeout) {\n clearTimeout(this.processingTimeout);\n this.processingTimeout = null;\n }\n\n // Remove all event listeners\n for (var i = 0; i < this.eventListeners.length; i++) {\n var listener = this.eventListeners[i];\n try {\n listener.target.removeEventListener(listener.event, listener.handler, listener.options);\n } catch (e) {\n logger$1.critical('Error while removing event listener', e);\n }\n }\n this.eventListeners = [];\n\n if (this.mutationObserver) {\n try {\n this.mutationObserver.disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting mutation observer', e);\n }\n this.mutationObserver = null;\n }\n\n if (this.shadowDOMObserver) {\n try {\n this.shadowDOMObserver.stop();\n } catch (e) {\n logger$1.critical('Error while stopping shadow DOM observer', e);\n }\n this.shadowDOMObserver = null;\n }\n};\n\nvar AUTOCAPTURE_CONFIG_KEY = 'autocapture';\nvar LEGACY_PAGEVIEW_CONFIG_KEY = 'track_pageview';\n\nvar PAGEVIEW_OPTION_FULL_URL = 'full-url';\nvar PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = 'url-with-path-and-query-string';\nvar PAGEVIEW_OPTION_URL_WITH_PATH = 'url-with-path';\n\nvar CONFIG_ALLOW_ELEMENT_CALLBACK = 'allow_element_callback';\nvar CONFIG_ALLOW_SELECTORS = 'allow_selectors';\nvar CONFIG_ALLOW_URL_REGEXES = 'allow_url_regexes';\nvar CONFIG_BLOCK_ATTRS = 'block_attrs';\nvar CONFIG_BLOCK_ELEMENT_CALLBACK = 'block_element_callback';\nvar CONFIG_BLOCK_SELECTORS = 'block_selectors';\nvar CONFIG_BLOCK_URL_REGEXES = 'block_url_regexes';\nvar CONFIG_CAPTURE_EXTRA_ATTRS = 'capture_extra_attrs';\nvar CONFIG_CAPTURE_TEXT_CONTENT = 'capture_text_content';\nvar CONFIG_SCROLL_CAPTURE_ALL = 'scroll_capture_all';\nvar CONFIG_SCROLL_CHECKPOINTS = 'scroll_depth_percent_checkpoints';\nvar CONFIG_TRACK_CLICK = 'click';\nvar CONFIG_TRACK_DEAD_CLICK = 'dead_click';\nvar CONFIG_TRACK_INPUT = 'input';\nvar CONFIG_TRACK_PAGEVIEW = 'pageview';\nvar CONFIG_TRACK_RAGE_CLICK = 'rage_click';\nvar CONFIG_TRACK_SCROLL = 'scroll';\nvar CONFIG_TRACK_PAGE_LEAVE = 'page_leave';\nvar CONFIG_TRACK_SUBMIT = 'submit';\n\nvar CONFIG_DEFAULTS$1 = {};\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ELEMENT_CALLBACK] = null;\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_EXTRA_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_TEXT_CONTENT] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CAPTURE_ALL] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CHECKPOINTS] = [25, 50, 75, 100];\nCONFIG_DEFAULTS$1[CONFIG_TRACK_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_DEAD_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_INPUT] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_RAGE_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SCROLL] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGE_LEAVE] = false;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SUBMIT] = true;\n\nvar DEFAULT_PROPS = {\n '$mp_autocapture': true\n};\n\nvar MP_EV_CLICK = '$mp_click';\nvar MP_EV_DEAD_CLICK = '$mp_dead_click';\nvar MP_EV_INPUT = '$mp_input_change';\nvar MP_EV_RAGE_CLICK = '$mp_rage_click';\nvar MP_EV_SCROLL = '$mp_scroll';\nvar MP_EV_SUBMIT = '$mp_submit';\nvar MP_EV_PAGE_LEAVE = '$mp_page_leave';\n\n/**\n * Autocapture: manages automatic event tracking\n * @constructor\n */\nvar Autocapture = function(mp) {\n this.mp = mp;\n this.maxScrollViewDepth = 0;\n this.hasTrackedScrollSession = false;\n this.previousScrollHeight = 0;\n};\n\nAutocapture.prototype.init = function() {\n if (!minDOMApisSupported()) {\n logger$1.critical('Autocapture unavailable: missing required DOM APIs');\n return;\n }\n this.initPageListeners();\n this.initPageviewTracking();\n this.initClickTracking();\n this.initDeadClickTracking();\n this.initInputTracking();\n this.initScrollTracking();\n this.initSubmitTracking();\n this.initRageClickTracking();\n this.initPageLeaveTracking();\n};\n\nAutocapture.prototype.getFullConfig = function() {\n var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY);\n if (!autocaptureConfig) {\n // Autocapture is completely off\n return {};\n } else if (_.isObject(autocaptureConfig)) {\n return _.extend({}, CONFIG_DEFAULTS$1, autocaptureConfig);\n } else {\n // Autocapture config is non-object truthy value, return default\n return CONFIG_DEFAULTS$1;\n }\n};\n\nAutocapture.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nAutocapture.prototype.currentUrlBlocked = function() {\n var i;\n var currentUrl = _.info.currentUrl();\n\n var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || [];\n if (allowUrlRegexes.length) {\n // we're using an allowlist, only track if current URL matches\n var allowed = false;\n for (i = 0; i < allowUrlRegexes.length; i++) {\n var allowRegex = allowUrlRegexes[i];\n try {\n if (currentUrl.match(allowRegex)) {\n allowed = true;\n break;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + allowRegex, err);\n return true;\n }\n }\n if (!allowed) {\n // wasn't allowed by any regex\n return true;\n }\n }\n\n var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || [];\n if (!blockUrlRegexes || !blockUrlRegexes.length) {\n return false;\n }\n\n for (i = 0; i < blockUrlRegexes.length; i++) {\n try {\n if (currentUrl.match(blockUrlRegexes[i])) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + blockUrlRegexes[i], err);\n return true;\n }\n }\n return false;\n};\n\nAutocapture.prototype.pageviewTrackingConfig = function() {\n // supports both autocapture config and old track_pageview config\n if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) {\n return this.getConfig(CONFIG_TRACK_PAGEVIEW);\n } else {\n return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY);\n }\n};\n\n// helper for event handlers\nAutocapture.prototype.trackDomEvent = function(ev, mpEventName) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var isCapturedForHeatMap = this.mp.is_recording_heatmap_data() && (\n (mpEventName === MP_EV_CLICK && !this.getConfig(CONFIG_TRACK_CLICK)) ||\n (mpEventName === MP_EV_RAGE_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK)) ||\n (mpEventName === MP_EV_DEAD_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK))\n );\n\n var props = getPropsForDOMEvent(ev, {\n allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK),\n allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS),\n blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS),\n blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK),\n blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS),\n captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS),\n captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT),\n capturedForHeatMap: isCapturedForHeatMap,\n });\n if (props) {\n _.extend(props, DEFAULT_PROPS);\n this.mp.track(mpEventName, props);\n }\n};\n\nAutocapture.prototype.initPageListeners = function() {\n win.removeEventListener(EV_POPSTATE, this.listenerPopstate);\n win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange);\n\n if (!this.pageviewTrackingConfig() && !this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n // These are all the configs that use these listeners\n return;\n }\n\n this.listenerPopstate = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n this.listenerHashchange = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n\n win.addEventListener(EV_POPSTATE, this.listenerPopstate);\n win.addEventListener(EV_HASHCHANGE, this.listenerHashchange);\n var nativePushState = win.history.pushState;\n if (typeof nativePushState === 'function') {\n win.history.pushState = function(state, unused, url) {\n nativePushState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n var nativeReplaceState = win.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n win.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n};\n\nAutocapture.prototype._getClickTrackingConfig = function(configKey) {\n var config = this.getConfig(configKey);\n\n if (!config) {\n return null; // click tracking disabled\n }\n\n if (config === true) {\n return {}; // use defaults\n }\n\n if (typeof config === 'object') {\n return config; // use custom configuration\n }\n\n return {}; // fallback to defaults for any other truthy value\n};\n\nAutocapture.prototype._trackPageLeave = function(ev, currentUrl, currentScrollHeight) {\n if (this.hasTrackedScrollSession) {\n // User has navigated away already ending their impression.\n return;\n }\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n this.hasTrackedScrollSession = true;\n var viewportHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n var scrollPercentage = Math.round(Math.max(this.maxScrollViewDepth - viewportHeight, 0) / (currentScrollHeight - viewportHeight) * 100);\n var foldLinePercentage = Math.round((viewportHeight / currentScrollHeight) * 100);\n if (currentScrollHeight <= viewportHeight) {\n // If the content fits within the viewport, consider it fully scrolled\n scrollPercentage = 100;\n foldLinePercentage = 100;\n }\n\n var props = _.extend({\n '$max_scroll_view_depth': this.maxScrollViewDepth,\n '$max_scroll_percentage': scrollPercentage,\n '$fold_line_percentage': foldLinePercentage,\n '$scroll_height': currentScrollHeight,\n '$event_type': ev.type,\n '$current_url': currentUrl || _.info.currentUrl(),\n '$viewportHeight': viewportHeight, // This is the fold line\n '$viewportWidth': Math.max(document$1.documentElement.clientWidth, win.innerWidth || 0),\n '$captured_for_heatmap': this.mp.is_recording_heatmap_data()\n }, DEFAULT_PROPS);\n\n // Send with beacon transport to ensure event is sent before unload\n this.mp.track(MP_EV_PAGE_LEAVE, props, {transport: 'sendBeacon'});\n};\n\nAutocapture.prototype._initScrollDepthTracking = function() {\n win.removeEventListener(EV_SCROLL, this.listenerScrollDepth);\n win.removeEventListener(EV_SCROLLEND, this.listenerScrollDepth);\n\n if (!this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing scroll depth tracking');\n\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n\n var updateScrollDepth = function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n var scrollViewHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0) + win.scrollY;\n if (scrollViewHeight > this.maxScrollViewDepth) {\n this.maxScrollViewDepth = scrollViewHeight;\n }\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(updateScrollDepth);\n this.listenerScrollDepth = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScrollDepth);\n};\n\nAutocapture.prototype.initClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerClick);\n\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n logger$1.log('Initializing click tracking');\n\n this.listenerClick = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_CLICK);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerClick);\n};\n\nAutocapture.prototype.initDeadClickTracking = function() {\n var deadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n\n if (!deadClickConfig && !this.mp.get_config('record_heatmap_data')) {\n this.stopDeadClickTracking();\n return;\n }\n\n logger$1.log('Initializing dead click tracking');\n if (!this._deadClickTracker) {\n this._deadClickTracker = new DeadClickTracker(function(deadClickEvent) {\n this.trackDomEvent(deadClickEvent, MP_EV_DEAD_CLICK);\n }.bind(this));\n this._deadClickTracker.startTracking();\n }\n\n if (!this.listenerDeadClick) {\n this.listenerDeadClick = function(ev) {\n var currentDeadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n if (!currentDeadClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n // Normalize config to ensure timeout_ms is always set\n var normalizedConfig = currentDeadClickConfig || {};\n if (!normalizedConfig['timeout_ms']) {\n normalizedConfig['timeout_ms'] = DEFAULT_DEAD_CLICK_TIMEOUT_MS;\n }\n this._deadClickTracker.trackClick(ev, normalizedConfig);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerDeadClick);\n }\n};\n\nAutocapture.prototype.initInputTracking = function() {\n win.removeEventListener(EV_CHANGE, this.listenerChange);\n\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n logger$1.log('Initializing input tracking');\n\n this.listenerChange = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_INPUT);\n }.bind(this);\n win.addEventListener(EV_CHANGE, this.listenerChange);\n};\n\nAutocapture.prototype.initPageviewTracking = function() {\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n\n if (!this.pageviewTrackingConfig()) {\n return;\n }\n logger$1.log('Initializing pageview tracking');\n\n var previousTrackedUrl = '';\n var tracked = false;\n if (!this.currentUrlBlocked()) {\n tracked = this.mp.track_pageview(DEFAULT_PROPS);\n }\n if (tracked) {\n previousTrackedUrl = _.info.currentUrl();\n }\n\n this.listenerLocationchange = safewrap(function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n var shouldTrack = false;\n var didPathChange = currentUrl.split('#')[0].split('?')[0] !== previousTrackedUrl.split('#')[0].split('?')[0];\n var trackPageviewOption = this.pageviewTrackingConfig();\n if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) {\n shouldTrack = currentUrl !== previousTrackedUrl;\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) {\n shouldTrack = currentUrl.split('#')[0] !== previousTrackedUrl.split('#')[0];\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) {\n shouldTrack = didPathChange;\n }\n\n if (shouldTrack) {\n var tracked = this.mp.track_pageview(DEFAULT_PROPS);\n if (tracked) {\n previousTrackedUrl = currentUrl;\n }\n if (didPathChange) {\n this.lastScrollCheckpoint = 0;\n logger$1.log('Path change: re-initializing scroll depth checkpoints');\n }\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n};\n\nAutocapture.prototype.initRageClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerRageClick);\n\n var rageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!rageClickConfig && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing rage click tracking');\n if (!this._rageClickTracker) {\n this._rageClickTracker = new RageClickTracker();\n }\n\n this.listenerRageClick = function(ev) {\n var currentRageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!currentRageClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n if (this.currentUrlBlocked()) {\n return;\n }\n\n if (this._rageClickTracker.isRageClick(ev, currentRageClickConfig)) {\n this.trackDomEvent(ev, MP_EV_RAGE_CLICK);\n }\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerRageClick);\n};\n\nAutocapture.prototype.initScrollTracking = function() {\n win.removeEventListener(EV_SCROLLEND, this.listenerScroll);\n win.removeEventListener(EV_SCROLL, this.listenerScroll);\n\n\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n logger$1.log('Initializing scroll tracking');\n this.lastScrollCheckpoint = 0;\n\n var scrollTrackFunction = function() {\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL);\n var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || [])\n .slice()\n .sort(function(a, b) { return a - b; });\n\n var scrollTop = win.scrollY;\n var props = _.extend({'$scroll_top': scrollTop}, DEFAULT_PROPS);\n try {\n var scrollHeight = document$1.body.scrollHeight;\n var scrollPercentage = Math.round((scrollTop / (scrollHeight - win.innerHeight)) * 100);\n props['$scroll_height'] = scrollHeight;\n props['$scroll_percentage'] = scrollPercentage;\n if (scrollPercentage > this.lastScrollCheckpoint) {\n for (var i = 0; i < scrollCheckpoints.length; i++) {\n var checkpoint = scrollCheckpoints[i];\n if (\n scrollPercentage >= checkpoint &&\n this.lastScrollCheckpoint < checkpoint\n ) {\n props['$scroll_checkpoint'] = checkpoint;\n this.lastScrollCheckpoint = checkpoint;\n shouldTrack = true;\n }\n }\n }\n } catch (err) {\n logger$1.critical('Error while calculating scroll percentage', err);\n }\n if (shouldTrack) {\n this.mp.track(MP_EV_SCROLL, props);\n }\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(scrollTrackFunction);\n this.listenerScroll = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScroll);\n};\n\nAutocapture.prototype.initSubmitTracking = function() {\n win.removeEventListener(EV_SUBMIT, this.listenerSubmit);\n\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n logger$1.log('Initializing submit tracking');\n\n this.listenerSubmit = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_SUBMIT);\n }.bind(this);\n win.addEventListener(EV_SUBMIT, this.listenerSubmit);\n};\n\nAutocapture.prototype.initPageLeaveTracking = function() {\n // Capture page_leave both when the user navigates away from the page (visibilitychange) as well\n // as when they navigate to a different page within the SPA (popstate/pushstate/hashchange).\n document$1.removeEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n win.removeEventListener(EV_LOAD, this.listenerPageLoad);\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing page visibility tracking.');\n this._initScrollDepthTracking();\n var previousTrackedUrl = _.info.currentUrl();\n\n // Initialize previousScrollHeight on `load` which handles async loading\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n this.listenerPageLoad = function() {\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n win.addEventListener(EV_LOAD, this.listenerPageLoad);\n\n // Track page navigation events similar to how initPageviewTracking does it\n this.listenerPageLeaveLocationchange = safewrap(function(ev) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n // Track all URL changes including query string or fragment changes as separate scroll sessions\n var shouldTrack = currentUrl !== previousTrackedUrl;\n\n if (shouldTrack) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n previousTrackedUrl = currentUrl;\n // Fragment navigation should call scroll(end) and trigger listener, don't add window.scrollY here.\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n this.previousScrollHeight = document$1.body.scrollHeight;\n this.hasTrackedScrollSession = false;\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n\n this.listenerPageLeaveVisibilitychange = function(ev) {\n if (document$1.hidden) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n }\n }.bind(this);\n document$1.addEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n};\n\nAutocapture.prototype.stopDeadClickTracking = function() {\n if (this.listenerDeadClick) {\n win.removeEventListener(EV_CLICK, this.listenerDeadClick);\n this.listenerDeadClick = null;\n }\n\n if (this._deadClickTracker) {\n this._deadClickTracker.stopTracking();\n this._deadClickTracker = null;\n }\n};\n\n// TODO integrate error_reporter from mixpanel instance\nsafewrapClass(Autocapture);\n\nvar logger = console_with_prefix('flags');\n\nvar FLAGS_CONFIG_KEY = 'flags';\n\nvar CONFIG_CONTEXT = 'context';\nvar CONFIG_DEFAULTS = {};\nCONFIG_DEFAULTS[CONFIG_CONTEXT] = {};\n\n/**\n * FeatureFlagManager: support for Mixpanel's feature flagging product\n * @constructor\n */\nvar FeatureFlagManager = function(initOptions) {\n this.fetch = win['fetch'];\n this.getFullApiRoute = initOptions.getFullApiRoute;\n this.getMpConfig = initOptions.getConfigFunc;\n this.setMpConfig = initOptions.setConfigFunc;\n this.getMpProperty = initOptions.getPropertyFunc;\n this.track = initOptions.trackingFunc;\n};\n\nFeatureFlagManager.prototype.init = function() {\n if (!this.minApisSupported()) {\n logger.critical('Feature Flags unavailable: missing minimum required APIs');\n return;\n }\n\n this.flags = null;\n this.fetchFlags();\n\n this.trackedFeatures = new Set();\n};\n\nFeatureFlagManager.prototype.getFullConfig = function() {\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!ffConfig) {\n // flags are completely off\n return {};\n } else if (_.isObject(ffConfig)) {\n return _.extend({}, CONFIG_DEFAULTS, ffConfig);\n } else {\n // config is non-object truthy value, return default\n return CONFIG_DEFAULTS;\n }\n};\n\nFeatureFlagManager.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nFeatureFlagManager.prototype.isSystemEnabled = function() {\n return !!this.getMpConfig(FLAGS_CONFIG_KEY);\n};\n\nFeatureFlagManager.prototype.updateContext = function(newContext, options) {\n if (!this.isSystemEnabled()) {\n logger.critical('Feature Flags not enabled, cannot update context');\n return Promise.resolve();\n }\n\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!_.isObject(ffConfig)) {\n ffConfig = {};\n }\n var oldContext = (options && options['replace']) ? {} : this.getConfig(CONFIG_CONTEXT);\n ffConfig[CONFIG_CONTEXT] = _.extend({}, oldContext, newContext);\n\n this.setMpConfig(FLAGS_CONFIG_KEY, ffConfig);\n return this.fetchFlags();\n};\n\nFeatureFlagManager.prototype.areFlagsReady = function() {\n if (!this.isSystemEnabled()) {\n logger.error('Feature Flags not enabled');\n }\n return !!this.flags;\n};\n\nFeatureFlagManager.prototype.fetchFlags = function() {\n if (!this.isSystemEnabled()) {\n return Promise.resolve();\n }\n\n var distinctId = this.getMpProperty('distinct_id');\n var deviceId = this.getMpProperty('$device_id');\n var traceparent = generateTraceparent();\n logger.log('Fetching flags for distinct ID: ' + distinctId);\n\n var context = _.extend({'distinct_id': distinctId, 'device_id': deviceId}, this.getConfig(CONFIG_CONTEXT));\n var searchParams = new URLSearchParams();\n searchParams.set('context', JSON.stringify(context));\n searchParams.set('token', this.getMpConfig('token'));\n searchParams.set('mp_lib', 'web');\n searchParams.set('$lib_version', Config.LIB_VERSION);\n var url = this.getFullApiRoute() + '?' + searchParams.toString();\n\n this._fetchInProgressStartTime = Date.now();\n this.fetchPromise = this.fetch.call(win, url, {\n 'method': 'GET',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getMpConfig('token') + ':'),\n 'traceparent': traceparent\n }\n }).then(function(response) {\n this.markFetchComplete();\n return response.json().then(function(responseBody) {\n var responseFlags = responseBody['flags'];\n if (!responseFlags) {\n throw new Error('No flags in API response');\n }\n var flags = new Map();\n _.each(responseFlags, function(data, key) {\n flags.set(key, {\n 'key': data['variant_key'],\n 'value': data['variant_value'],\n 'experiment_id': data['experiment_id'],\n 'is_experiment_active': data['is_experiment_active'],\n 'is_qa_tester': data['is_qa_tester']\n });\n });\n this.flags = flags;\n this._traceparent = traceparent;\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n\n return this.fetchPromise;\n};\n\nFeatureFlagManager.prototype.markFetchComplete = function() {\n if (!this._fetchInProgressStartTime) {\n logger.error('Fetch in progress started time not set, cannot mark fetch complete');\n return;\n }\n this._fetchStartTime = this._fetchInProgressStartTime;\n this._fetchCompleteTime = Date.now();\n this._fetchLatency = this._fetchCompleteTime - this._fetchStartTime;\n this._fetchInProgressStartTime = null;\n};\n\nFeatureFlagManager.prototype.getVariant = function(featureName, fallback) {\n if (!this.fetchPromise) {\n return new Promise(function(resolve) {\n logger.critical('Feature Flags not initialized');\n resolve(fallback);\n });\n }\n\n return this.fetchPromise.then(function() {\n return this.getVariantSync(featureName, fallback);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallback;\n });\n};\n\nFeatureFlagManager.prototype.getVariantSync = function(featureName, fallback) {\n if (!this.areFlagsReady()) {\n logger.log('Flags not loaded yet');\n return fallback;\n }\n var feature = this.flags.get(featureName);\n if (!feature) {\n logger.log('No flag found: \"' + featureName + '\"');\n return fallback;\n }\n this.trackFeatureCheck(featureName, feature);\n return feature;\n};\n\nFeatureFlagManager.prototype.getVariantValue = function(featureName, fallbackValue) {\n return this.getVariant(featureName, {'value': fallbackValue}).then(function(feature) {\n return feature['value'];\n }).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\n// TODO remove deprecated method\nFeatureFlagManager.prototype.getFeatureData = function(featureName, fallbackValue) {\n logger.critical('mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead.');\n return this.getVariantValue(featureName, fallbackValue);\n};\n\nFeatureFlagManager.prototype.getVariantValueSync = function(featureName, fallbackValue) {\n return this.getVariantSync(featureName, {'value': fallbackValue})['value'];\n};\n\nFeatureFlagManager.prototype.isEnabled = function(featureName, fallbackValue) {\n return this.getVariantValue(featureName).then(function() {\n return this.isEnabledSync(featureName, fallbackValue);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\nFeatureFlagManager.prototype.isEnabledSync = function(featureName, fallbackValue) {\n fallbackValue = fallbackValue || false;\n var val = this.getVariantValueSync(featureName, fallbackValue);\n if (val !== true && val !== false) {\n logger.error('Feature flag \"' + featureName + '\" value: ' + val + ' is not a boolean; returning fallback value: ' + fallbackValue);\n val = fallbackValue;\n }\n return val;\n};\n\nFeatureFlagManager.prototype.trackFeatureCheck = function(featureName, feature) {\n if (this.trackedFeatures.has(featureName)) {\n return;\n }\n this.trackedFeatures.add(featureName);\n\n var trackingProperties = {\n 'Experiment name': featureName,\n 'Variant name': feature['key'],\n '$experiment_type': 'feature_flag',\n 'Variant fetch start time': new Date(this._fetchStartTime).toISOString(),\n 'Variant fetch complete time': new Date(this._fetchCompleteTime).toISOString(),\n 'Variant fetch latency (ms)': this._fetchLatency,\n 'Variant fetch traceparent': this._traceparent,\n };\n\n if (feature['experiment_id'] !== 'undefined') {\n trackingProperties['$experiment_id'] = feature['experiment_id'];\n }\n if (feature['is_experiment_active'] !== 'undefined') {\n trackingProperties['$is_experiment_active'] = feature['is_experiment_active'];\n }\n if (feature['is_qa_tester'] !== 'undefined') {\n trackingProperties['$is_qa_tester'] = feature['is_qa_tester'];\n }\n\n this.track('$experiment_started', trackingProperties);\n};\n\nFeatureFlagManager.prototype.minApisSupported = function() {\n return !!this.fetch &&\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined';\n};\n\nsafewrapClass(FeatureFlagManager);\n\nFeatureFlagManager.prototype['are_flags_ready'] = FeatureFlagManager.prototype.areFlagsReady;\nFeatureFlagManager.prototype['get_variant'] = FeatureFlagManager.prototype.getVariant;\nFeatureFlagManager.prototype['get_variant_sync'] = FeatureFlagManager.prototype.getVariantSync;\nFeatureFlagManager.prototype['get_variant_value'] = FeatureFlagManager.prototype.getVariantValue;\nFeatureFlagManager.prototype['get_variant_value_sync'] = FeatureFlagManager.prototype.getVariantValueSync;\nFeatureFlagManager.prototype['is_enabled'] = FeatureFlagManager.prototype.isEnabled;\nFeatureFlagManager.prototype['is_enabled_sync'] = FeatureFlagManager.prototype.isEnabledSync;\nFeatureFlagManager.prototype['update_context'] = FeatureFlagManager.prototype.updateContext;\n\n// Deprecated method\nFeatureFlagManager.prototype['get_feature_data'] = FeatureFlagManager.prototype.getFeatureData;\n\n/* eslint camelcase: \"off\" */\n\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console$1.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n/* eslint camelcase: \"off\" */\n\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('groups') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function() {\n console$1.error('mixpanel.people.track_charge() is deprecated and no longer has any effect.');\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console$1.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('people') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console$1.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade();\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n var old_cookie,\n old_localstorage;\n\n // if transferring from cookie to localStorage or vice-versa, copy existing\n // super properties over to new storage mode\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n } else if (this.storage === _.cookie) {\n old_localstorage = _.localStorage.parse(this.name);\n\n _.localStorage.remove(this.name);\n\n if (old_localstorage) {\n this.register_once(old_localstorage);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n JSONStringify(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // Prevent duplicate values\n _.each(v, function(item) {\n if (!_.include(union_q[k], item)) {\n union_q[k].push(item);\n }\n });\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console$1.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console$1.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\n// allow bundlers to specify how extra code (recorder bundle) should be loaded\n// eslint-disable-next-line no-unused-vars\nvar load_extra_bundle = function(src, _onload) {\n throw new Error(src + ' not available in this build.');\n};\n\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/',\n 'record': 'record/',\n 'flags': 'flags/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_hosts': {},\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_extra_query_params': {},\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'autocapture': false,\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'flags': false,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {},\n 'record_block_class': new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n 'record_block_selector': 'img, video, audio',\n 'record_canvas': false,\n 'record_collect_fonts': false,\n 'record_console': true,\n 'record_heatmap_data': false,\n 'record_idle_timeout_ms': 30 * 60 * 1000, // 30 minutes\n 'record_mask_text_class': new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n 'record_mask_text_selector': '*',\n 'record_max_ms': MAX_RECORDING_MS,\n 'record_min_ms': 0,\n 'record_sessions_percent': 0,\n 'recorder_src': 'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console$1.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console$1.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console$1.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && win.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n win.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n win.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n this.flags = new FeatureFlagManager({\n getFullApiRoute: _.bind(function() {\n return this.get_api_host('flags') + '/' + this.get_config('api_routes')['flags'];\n }, this),\n getConfigFunc: _.bind(this.get_config, this),\n setConfigFunc: _.bind(this.set_config, this),\n getPropertyFunc: _.bind(this.get_property, this),\n trackingFunc: _.bind(this.track, this)\n });\n this.flags.init();\n this['flags'] = this.flags;\n\n this.autocapture = new Autocapture(this);\n this.autocapture.init();\n\n this._init_tab_id();\n this._check_and_start_session_recording();\n};\n\n/**\n * Assigns a unique UUID to this tab / window by leveraging sessionStorage.\n * This is primarily used for session recording, where data must be isolated to the current tab.\n */\nMixpanelLib.prototype._init_tab_id = function() {\n if (this.get_config('disable_persistence')) {\n console$1.log('Tab ID initialization skipped due to disable_persistence config');\n } else if (_.sessionStorage.is_supported()) {\n try {\n var key_suffix = this.get_config('name') + '_' + this.get_config('token');\n var tab_id_key = 'mp_tab_id_' + key_suffix;\n\n // A flag is used to determine if sessionStorage is copied over and we need to generate a new tab ID.\n // This enforces a unique ID in the cases like duplicated tab, window.open(...)\n var should_generate_new_tab_id_key = 'mp_gen_new_tab_id_' + key_suffix;\n if (_.sessionStorage.get(should_generate_new_tab_id_key) || !_.sessionStorage.get(tab_id_key)) {\n _.sessionStorage.set(tab_id_key, '$tab-' + _.UUID());\n }\n\n _.sessionStorage.set(should_generate_new_tab_id_key, '1');\n this.tab_id = _.sessionStorage.get(tab_id_key);\n\n // Remove the flag when the tab is unloaded to indicate the stored tab ID can be reused. This event is not reliable to detect all page unloads,\n // but reliable in cases where the user remains in the tab e.g. a refresh or href navigation.\n // If the flag is absent, this indicates to the next SDK instance that we can reuse the stored tab_id.\n win.addEventListener('beforeunload', function () {\n _.sessionStorage.remove(should_generate_new_tab_id_key);\n });\n } catch(err) {\n this.report_error('Error initializing tab id', err);\n }\n } else {\n this.report_error('Session storage is not supported, cannot keep track of unique tab ID.');\n }\n};\n\nMixpanelLib.prototype.get_tab_id = function () {\n return this.tab_id || null;\n};\n\nMixpanelLib.prototype._should_load_recorder = function () {\n if (this.get_config('disable_persistence')) {\n console$1.log('Load recorder check skipped due to disable_persistence config');\n return Promise.resolve(false);\n }\n\n var recording_registry_idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n var tab_id = this.get_tab_id();\n return recording_registry_idb.init()\n .then(function () {\n return recording_registry_idb.getAll();\n })\n .then(function (recordings) {\n for (var i = 0; i < recordings.length; i++) {\n // if there are expired recordings in the registry, we should load the recorder to flush them\n // if there's a recording for this tab id, we should load the recorder to continue the recording\n if (isRecordingExpired(recordings[i]) || recordings[i]['tabId'] === tab_id) {\n return true;\n }\n }\n return false;\n })\n .catch(_.bind(function (err) {\n this.report_error('Error checking recording registry', err);\n }, this));\n};\n\nMixpanelLib.prototype._check_and_start_session_recording = addOptOutCheckMixpanelLib(function(force_start) {\n if (!win['MutationObserver']) {\n console$1.critical('Browser does not support MutationObserver; skipping session recording');\n return;\n }\n\n var loadRecorder = _.bind(function(startNewIfInactive) {\n var handleLoadedRecorder = _.bind(function() {\n this._recorder = this._recorder || new win['__mp_recorder'](this);\n this._recorder['resumeRecording'](startNewIfInactive);\n }, this);\n\n if (_.isUndefined(win['__mp_recorder'])) {\n load_extra_bundle(this.get_config('recorder_src'), handleLoadedRecorder);\n } else {\n handleLoadedRecorder();\n }\n }, this);\n\n /**\n * If the user is sampled or start_session_recording is called, we always load the recorder since it's guaranteed a recording should start.\n * Otherwise, if the recording registry has any records then it's likely there's a recording in progress or orphaned data that needs to be flushed.\n */\n var is_sampled = this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent');\n if (force_start || is_sampled) {\n loadRecorder(true);\n } else {\n this._should_load_recorder()\n .then(function (shouldLoad) {\n if (shouldLoad) {\n loadRecorder(false);\n }\n });\n }\n});\n\nMixpanelLib.prototype.start_session_recording = function () {\n this._check_and_start_session_recording(true);\n};\n\nMixpanelLib.prototype.stop_session_recording = function () {\n if (this._recorder) {\n return this._recorder['stopRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.pause_session_recording = function () {\n if (this._recorder) {\n return this._recorder['pauseRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.resume_session_recording = function () {\n if (this._recorder) {\n return this._recorder['resumeRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.is_recording_heatmap_data = function () {\n return this._get_session_replay_id() && this.get_config('record_heatmap_data');\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n var props = {};\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n props['$mp_replay_id'] = replay_id;\n }\n return props;\n};\n\nMixpanelLib.prototype.get_session_replay_url = function () {\n var replay_url = null;\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n var query_params = _.HTTPBuildQuery({\n 'replay_id': replay_id,\n 'distinct_id': this.get_distinct_id(),\n 'token': this.get_config('token')\n });\n replay_url = 'https://mixpanel.com/projects/replay-redirect?' + query_params;\n }\n return replay_url;\n};\n\nMixpanelLib.prototype._get_session_replay_id = function () {\n var replay_id = null;\n if (this._recorder) {\n replay_id = this._recorder['replayId'];\n }\n return replay_id || null;\n};\n\n// \"private\" public method to reach into the recorder in test cases\nMixpanelLib.prototype.__get_recorder = function () {\n return this._recorder;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // `store_google` is now deprecated and previously stored UTM parameters are cleared\n // from persistence by default.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n // Registering super properties for UTM persistence by 'store_google' is deprecated.\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n _.extend(data, this.get_config('api_extra_query_params'));\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n var response_headers = req['responseHeaders'] || {};\n callback({status: 0, httpStatusCode: req['status'], error: error, retryAfter: response_headers['Retry-After']});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', api_name: 'track', queue_key: queue_prefix + '_ev'},\n people: {type: 'people', api_name: 'engage', queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', api_name: 'groups', queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n errorReporter: this.get_config('error_reporter'),\n sendRequestFunc: _.bind(function(data, options, cb) {\n var api_routes = this.get_config('api_routes');\n this._send_request(\n this.get_api_host(attrs.api_name) + '/' + api_routes[attrs.api_name],\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this),\n usePersistence: true,\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = JSONStringify(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console$1.log('MIXPANEL REQUEST:');\n console$1.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data).then(function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n this.get_session_recording_properties(),\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_api_host('events') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for mixpanel.init()\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n\n // check feature flags again if distinct id has changed\n if (new_distinct_id !== previous_distinct_id) {\n this.flags.fetchFlags();\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this.stop_session_recording();\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n this._check_and_start_session_recording();\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n\n if (('autocapture' in config || 'record_heatmap_data' in config) && this.autocapture) {\n this.autocapture.init();\n }\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\n/**\n * Get the API host for a specific endpoint type, falling back to the default api_host if not specified\n *\n * @param {String} endpoint_type The type of endpoint (e.g., \"events\", \"people\", \"groups\")\n * @returns {String} The API host to use for this endpoint\n */\nMixpanelLib.prototype.get_api_host = function(endpoint_type) {\n return this.get_config('api_hosts')[endpoint_type] || this.get_config('api_host');\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n this.stop_session_recording();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console$1.error.apply(console$1.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console$1.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_api_host'] = MixpanelLib.prototype.get_api_host;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording'] = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording'] = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['pause_session_recording'] = MixpanelLib.prototype.pause_session_recording;\nMixpanelLib.prototype['resume_session_recording'] = MixpanelLib.prototype.resume_session_recording;\nMixpanelLib.prototype['get_session_recording_properties'] = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['get_session_replay_url'] = MixpanelLib.prototype.get_session_replay_url;\nMixpanelLib.prototype['get_tab_id'] = MixpanelLib.prototype.get_tab_id;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// Exports intended only for testing\nMixpanelLib.prototype['__get_recorder'] = MixpanelLib.prototype.__get_recorder;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = win.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module(bundle_loader) {\n load_extra_bundle = bundle_loader;\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\n// For loading separate bundles asynchronously via script tag\n// so that we don't load them until they are needed at runtime.\n\n// For builds that have everything in one bundle, no extra work.\nfunction loadNoop (_src, onload) {\n onload();\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module(loadNoop);\n\nexport { mixpanel as default };\n","/**\n * Mixpanel Tracking Utility\n *\n * Provides centralized tracking functionality with error handling\n * and support for global and event-specific properties.\n */\n\nimport mixpanel from 'mixpanel-browser';\n\n// Track initialization status\nlet isInitialized = false;\n\n// Initialize Mixpanel if token is provided and data consent is given\nconst initializeMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n // Don't re-initialize if already done\n if (isInitialized) {\n return true;\n }\n\n const config = window.marketplaceConfig || {};\n\n // Check if data consent is given\n const dataConsentStatus = config.data_consent_status;\n if (!dataConsentStatus) {\n return false;\n }\n\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n mixpanel.init(token, {\n debug: mixpanelConfig.debug || false,\n track_pageview: false, // We'll handle page views manually\n persistence: 'localStorage',\n // Disable automatic collection of potentially sensitive properties for privacy\n property_blacklist: [\n '$initial_referrer',\n '$initial_referring_domain',\n '$current_url',\n '$referrer',\n '$referring_domain',\n 'mp_lib',\n '$lib_version',\n '$browser',\n '$browser_version',\n '$device',\n '$screen_height',\n '$screen_width',\n '$os',\n '$search_engine',\n ],\n });\n\n // Set distinct_id if provided\n const distinctId = mixpanelConfig.distinctId;\n if (distinctId && distinctId !== '') {\n mixpanel.identify(distinctId);\n }\n\n isInitialized = true;\n return true;\n } catch (error) {\n return false;\n }\n};\n\n// Export initializeMixpanel for manual initialization from React components\nexport { initializeMixpanel };\n\n// Check if Mixpanel is available\nconst isMixpanelAvailable = () => {\n try {\n return isInitialized && typeof mixpanel !== 'undefined';\n } catch (error) {\n return false;\n }\n};\n\n/**\n * Disable Mixpanel tracking (when consent is revoked)\n * Resets the SDK and clears the initialization flag\n */\nexport const disableMixpanel = () => {\n try {\n if (isInitialized && typeof mixpanel !== 'undefined') {\n // Reset Mixpanel instance to stop tracking\n mixpanel.reset();\n isInitialized = false;\n }\n } catch (error) {\n console.error('[MixpanelTracking] Error disabling Mixpanel:', error);\n }\n};\n\n/**\n * Enable Mixpanel tracking (when consent is granted)\n * Reinitializes Mixpanel with current config from window.marketplaceConfig\n */\nexport const enableMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n // Reset flag to allow re-initialization\n isInitialized = false;\n\n // Initialize Mixpanel\n return initializeMixpanel();\n } catch (error) {\n console.error('[MixpanelTracking] Error enabling Mixpanel:', error);\n return false;\n }\n};\n\n/**\n * Get global tracking properties from window.marketplaceConfig.mixpanel.globalProperties\n * @returns {Object} Global properties object\n */\nexport const getGlobalProperties = () => {\n try {\n if (typeof window === 'undefined') {\n return {};\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const globalProps = mixpanelConfig.globalProperties || {};\n\n // Add hit_type and page/path properties to the global properties from PHP\n // Extract base path from query params for 'page' property\n const urlParams = new URLSearchParams(window.location.search);\n const pageParam = urlParams.get('page') || '';\n\n const enhancedProperties = {\n ...globalProps,\n hit_type: 'event',\n page: pageParam || window.location.pathname,\n path: window.location.pathname + window.location.search,\n referrer: document.referrer.split('/').filter(Boolean).pop() || '',\n };\n\n // Filter out empty values to keep the payload clean\n return Object.fromEntries(\n Object.entries(enhancedProperties).filter(([_, value]) => {\n if (value === '' || value === null || value === undefined) {\n return false;\n }\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n return true;\n })\n );\n } catch (error) {\n return {};\n }\n};\n\n/**\n * Track a Mixpanel event with global and event-specific properties\n * @param {string} eventName - Name of the event to track\n * @param {Object} eventProperties - Event-specific properties\n */\nexport const trackEvent = (eventName, eventProperties = {}) => {\n try {\n if (!isMixpanelAvailable()) {\n // Silently skip tracking if Mixpanel is not available\n // This is expected when data consent is not given or token is missing\n return;\n }\n\n // Merge global properties with event-specific properties\n const properties = {\n ...getGlobalProperties(),\n ...eventProperties,\n };\n\n // Track the event\n mixpanel.track(eventName, properties);\n\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking event:', eventName, error);\n }\n};\n\n/**\n * Track page view event\n * @param {Object} options - Page view options\n * @param {string} options.pluginSlug - Plugin slug (for detail pages)\n * @param {string} options.pluginName - Plugin name (for detail pages)\n * @param {string} options.category - Plugin category\n * @param {string} options.itemName - Custom item_name value (overrides default)\n * @param {boolean} options.isContentRendered - Whether content was successfully rendered (default: true)\n * @param {number} options.contentReceivedAt - Timestamp when API content was received\n * @param {number} options.contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} options.isCached - Whether the response was served from cache (default: false)\n */\nexport const trackPageView = ({ pluginSlug, pluginName, category, itemName, isContentRendered = true, contentReceivedAt = null, contentRenderedAt = null, isCached = false } = {}) => {\n try {\n const timestamp = Date.now();\n\n const eventProperties = {\n content_received_at: contentReceivedAt || timestamp,\n is_content_rendered: isContentRendered,\n is_cached: isCached,\n };\n\n // Only add content_rendered_at if content was successfully rendered\n if (isContentRendered) {\n eventProperties.content_rendered_at = contentRenderedAt || timestamp;\n }\n\n // Use itemName if provided, otherwise use pluginSlug (for backward compatibility)\n if (itemName) {\n eventProperties.item_name = itemName;\n } else if (pluginSlug) {\n eventProperties.item_name = pluginSlug;\n }\n\n if (pluginSlug) {\n eventProperties.product_slug = pluginSlug;\n }\n\n if (pluginName) {\n eventProperties.product_name = pluginName;\n }\n\n if (category) {\n eventProperties.item_category = category;\n }\n\n trackEvent('Page Viewed', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking page view:', error);\n }\n};\n\n/**\n * Track plugin action (install, activate, etc.)\n * @param {Object} options - Action options\n * @param {string} options.action - Action type (e.g., 'install', 'activate')\n * @param {Object} options.plugin - Plugin object\n * @param {string} options.result - Action result (e.g., 'success', 'error')\n */\nexport const trackPluginAction = ({ action, plugin, result = 'initiated' } = {}) => {\n try {\n if (!plugin) {\n return;\n }\n\n const eventName = `Plugin ${action.charAt(0).toUpperCase() + action.slice(1)}`;\n\n const eventProperties = {\n action: action,\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n item_name: plugin.slug || '',\n result: result,\n timestamp: Date.now(),\n };\n\n // Add plugin-specific properties\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n eventProperties.item_category = category;\n }\n\n if (plugin.licenseType) {\n eventProperties.license_type = plugin.licenseType;\n }\n\n if (plugin.priceAmount !== undefined) {\n eventProperties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n eventProperties.price_currency = plugin.priceCurrency;\n }\n\n trackEvent(eventName, eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin action:', error);\n }\n};\n\n/**\n * Extract common properties from a plugin object\n * @param {Object} plugin - Plugin object\n * @returns {Object} Extracted properties\n */\nconst extractPluginProperties = (plugin) => {\n if (!plugin) return {};\n\n const properties = {\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n // Note: item_name is NOT included here by default\n // It should be set contextually by the calling function\n };\n\n // Extract category\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n properties.item_category = category;\n }\n\n // Extract license type\n if (plugin.licenseType) {\n properties.license_type = plugin.licenseType;\n }\n\n // Extract price information\n if (plugin.priceAmount !== undefined) {\n properties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n properties.price_currency = plugin.priceCurrency;\n }\n\n return properties;\n};\n\n/**\n * Track button click event\n * @param {Object} options - Click options\n * @param {string} options.buttonName - Name/label of the button\n * @param {string} options.buttonAction - Action associated with the button\n * @param {Object} options.plugin - Optional plugin object (will auto-extract properties)\n * @param {Object} options.context - Additional context (merged with plugin properties)\n */\nexport const trackButtonClick = ({ buttonName, buttonAction, plugin = null, context = {} } = {}) => {\n try {\n // Start with base properties\n const eventProperties = {\n button_name: buttonName || '',\n button_action: buttonAction || '',\n item_name: buttonName || '', // item_name should be the button name\n timestamp: Date.now(),\n };\n\n // Auto-extract plugin properties if plugin object is provided\n if (plugin) {\n Object.assign(eventProperties, extractPluginProperties(plugin));\n }\n\n // Merge additional context (context takes precedence over auto-extracted properties)\n Object.assign(eventProperties, context);\n\n trackEvent('Button Clicked', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking button click:', error);\n }\n};\n\n/**\n * Track marketplace visit\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackMarketplaceVisit = (contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n trackPageView({\n category: 'marketplace_home',\n itemName: 'Catalog Page', // Set item_name to 'Catalog page' for marketplace listing\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking marketplace visit:', error);\n }\n};\n\n/**\n * Track plugin detail page visit\n * @param {Object} plugin - Plugin object\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackPluginDetailVisit = (plugin, contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n if (!plugin) {\n console.warn('[MixpanelTracking] Plugin object required for tracking detail visit');\n return;\n }\n\n const category = plugin.categories && plugin.categories.length > 0\n ? (typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0])\n : '';\n\n trackPageView({\n pluginSlug: plugin.slug,\n pluginName: plugin.name,\n category: category,\n itemName: 'Product Page', // Set item_name to 'Product page' for plugin detail page\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin detail visit:', error);\n }\n};\n\n// Export default object with all tracking functions\nexport default {\n trackEvent,\n trackPageView,\n trackPluginAction,\n trackButtonClick,\n trackMarketplaceVisit,\n trackPluginDetailVisit,\n getGlobalProperties,\n isMixpanelAvailable,\n};\n","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","import React, { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react';\nimport { trackButtonClick, initializeMixpanel, enableMixpanel, disableMixpanel } from '../utils/mixpanelTracking';\nimport { isWpVersionSupported as isWpVersionSupportedHelper } from '../utils/wpVersionHelper';\n\nconst MarketplaceContext = createContext(null);\n\nexport const MarketplaceProvider = ({\n children,\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl\n}) => {\n const [pluginInAction, setPluginInAction] = useState({});\n const [subscriptionStatus, setSubscriptionStatus] = useState({});\n const [isCheckingSubscription, setIsCheckingSubscription] = useState({});\n const [plugins, setPlugins] = useState([]);\n const [uiI18n, setUiI18n] = useState({});\n const [loadingAction, setLoadingAction] = useState('');\n const [loadingPlugin, setLoadingPlugin] = useState('');\n const [noticeState, setNoticeState] = useState({ visible: false, type: null, pluginSlug: null });\n const [errorState, setErrorState] = useState({ visible: false, type: null, pluginSlug: null });\n const [successState, setSuccessState] = useState({ visible: false, type: null, pluginSlug: null });\n const [allPluginsActivated, setAllPluginsActivated] = useState(false);\n const [catalogError, setCatalogError] = useState(false);\n const [catalogLoading, setCatalogLoading] = useState(true);\n\n // State for tracking consent status\n const [consentStatus, setConsentStatus] = useState(() => {\n const initialConsent = typeof window !== \"undefined\" && window.marketplaceConfig?.data_consent_status;\n // Convert to boolean: handle true, 'true', '1', 1 as true\n return initialConsent === true || initialConsent === 'true' || initialConsent === '1' || initialConsent === 1;\n });\n\n // Use ref to track which subscriptions have been checked to avoid recreation of fetchSubscriptionStatus\n const checkedSubscriptionsRef = useRef({});\n\n // Use ref to track reload timeout so it can be cancelled if user navigates\n const reloadTimeoutRef = useRef(null);\n\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n // Get WP version from WordPress config\n const wpVersion = typeof window !== \"undefined\" && window.marketplaceConfig?.wpVersion\n ? window.marketplaceConfig.wpVersion\n : \"\";\n\n useEffect(() => {\n const persistedNotice = sessionStorage.getItem('mp_success_notice');\n if (persistedNotice) {\n try {\n const noticeData = JSON.parse(persistedNotice);\n setNoticeState({\n visible: noticeData.visible,\n type: noticeData.type,\n pluginSlug: noticeData.pluginSlug\n });\n setSuccessState({\n visible: noticeData.visible,\n type: noticeData.successType,\n pluginSlug: noticeData.pluginSlug\n });\n\n // Schedule clearing from sessionStorage AFTER the notice is set in state\n // and the components have had a chance to mount and check it.\n // We use a small timeout to ensure it stays in sessionStorage long enough\n // for ProductDetail.jsx mount effect to see it.\n setTimeout(() => {\n sessionStorage.removeItem('mp_success_notice');\n }, 100);\n } catch (e) {\n console.error('Error parsing persisted success notice', e);\n }\n }\n }, []);\n\n // Initialize Mixpanel on mount and monitor consent changes\n // Uses useEffect to ensure Mixpanel only initializes when consent is given\n useEffect(() => {\n // Initialize Mixpanel on component mount based on initial consent status\n if (consentStatus === true) {\n initializeMixpanel();\n }\n\n // Set up listener for consent changes from plugin\n const handleConsentChange = (e) => {\n const newConsentStatus = e.detail?.data_consent_status !== undefined ? e.detail.data_consent_status : false;\n\n // Update state\n setConsentStatus(newConsentStatus);\n\n // Handle Mixpanel based on new consent status\n if (newConsentStatus === true) {\n // Consent granted - enable Mixpanel\n // Update window.marketplaceConfig consent status\n // Note: mixpanel config (token, globalProperties, distinctId) is always sent by PHP\n // regardless of consent status, so we can use it directly\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = true;\n }\n\n // Enable Mixpanel - it will read the config from window.marketplaceConfig\n enableMixpanel();\n } else {\n\n // Update window.marketplaceConfig\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = false;\n // Keep mixpanel config available for when consent is granted again\n }\n\n disableMixpanel();\n }\n };\n\n // Listen for custom consent change event from plugin (same page)\n window.addEventListener('onConsentStatusChanged', handleConsentChange);\n\n // Listen for localStorage changes (cross-page communication)\n const handleStorageChange = (e) => {\n // Only handle changes to our consent key\n if (e.key === 'onecom_data_consent_status') {\n const newConsentStatus = e.newValue === '1';\n\n // Trigger the same handler with the new consent status\n handleConsentChange({ detail: { data_consent_status: newConsentStatus } });\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n\n // Cleanup on unmount\n return () => {\n window.removeEventListener('onConsentStatusChanged', handleConsentChange);\n window.removeEventListener('storage', handleStorageChange);\n };\n }, []); // Empty dependency array - only run on mount/unmount\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n const fetchSubscriptionStatus = useCallback(async (pluginSlug) => {\n if (!isOnecomBrand) return;\n\n if (!isSpecialPlugin(pluginSlug)) return;\n\n // Mark as being checked\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: true }));\n\n try {\n const ajaxUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.ajaxUrl;\n if (!ajaxUrl) {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n return;\n }\n\n const formData = new FormData();\n formData.append('action', 'get_addon_purchase_status');\n formData.append('addon_purchase_check', 'true');\n formData.append('addon_slug', pluginSlug);\n\n const res = await fetch(ajaxUrl, {\n method: 'POST',\n body: formData\n });\n\n const json = await res.json();\n\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: json.is_purchased }));\n } catch (e) {\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: false }));\n } finally {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n }\n }, [isOnecomBrand]);\n\n // Function to cancel scheduled reload (called when user clicks \"Get Started\")\n const cancelReload = useCallback(() => {\n if (reloadTimeoutRef.current) {\n clearTimeout(reloadTimeoutRef.current);\n reloadTimeoutRef.current = null;\n }\n sessionStorage.removeItem('mp_success_notice');\n }, []);\n\n const isSpecialPlugin = useCallback((pluginSlug) => {\n return pluginSlug === \"wp-rocket\" || pluginSlug === \"seo-by-rank-math-pro\";\n }, []);\n\n const isWpVersionSupported = useCallback((minVersion) => {\n return isWpVersionSupportedHelper(wpVersion, minVersion);\n }, [wpVersion]);\n\n const shouldShowProvision = useCallback((plugin) => {\n if (!plugin || !isOnecomBrand) return false;\n return isSpecialPlugin(plugin.slug) && !plugin.installed && subscriptionStatus[plugin.slug] === true;\n }, [isOnecomBrand, subscriptionStatus, isSpecialPlugin]);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = useCallback((plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n }, [activePlugins, activeThemeAuthor]);\n\n // Handle plugin actions (install, activate, deactivate)\n const handlePluginAction = useCallback(async (action, plugin, source = '') => {\n // Check if this is Imagify plugin activation (handles 302 redirect case)\n const isImagifyActivation = action === 'activate' && plugin.slug === 'imagify';\n\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Use ref to track if action was successful (to prevent finally block from clearing pluginInAction)\n let actionSuccessful = false;\n\n // Set loading state for overlay using API response keys\n const pluginName = plugin.name || plugin.slug;\n let loadingMessage = '';\n\n if (action === 'activate') {\n const activatingMsg = uiI18n?.notifications?.activating || 'Activating {0}';\n loadingMessage = activatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'deactivate') {\n const deactivatingMsg = uiI18n?.notifications?.deactivating || 'Deactivating {0}';\n loadingMessage = deactivatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'install') {\n const installingMsg = uiI18n?.notifications?.installing || 'Installing {0}';\n loadingMessage = installingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'delete') {\n const deletingMsg = uiI18n?.notifications?.deleting || 'Deleting {0}';\n loadingMessage = deletingMsg.replace('{0}', pluginName) + '...';\n } else {\n // Fallback for other actions\n const actionText = action.charAt(0).toUpperCase() + (action.endsWith('e') ? action.slice(1, -1) : action.slice(1)) + 'ing';\n loadingMessage = `${actionText} ${pluginName}`;\n }\n\n setLoadingAction(loadingMessage);\n setLoadingPlugin('');\n\n // For Imagify, use setTimeout to allow React to render the loading overlay first\n if (isImagifyActivation) {\n // Build URL for activation\n let url = `${apiBaseUrl}${action}/${plugin.slug}`;\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n // Allow React to render loading overlay, then execute Imagify flow\n setTimeout(async () => {\n // Initiate the activation request (don't wait for response due to 302 redirect)\n try {\n await fetch(url, { method: \"POST\" });\n } catch (err) {\n console.log(\"Imagify activation request initiated\");\n }\n\n // Poll for activation status\n let attempts = 0;\n const maxAttempts = 6;\n const checkActivation = async () => {\n try {\n const checkUrl = `${apiBaseUrl}active/${plugin.slug}`;\n const response = await fetch(checkUrl);\n const data = await response.json();\n\n if (data && data.activated) {\n // Track successful Imagify activation\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n special_case: 'imagify_redirect',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n actionSuccessful = true;\n }\n return;\n }\n } catch (e) {\n console.error(\"Error checking activation status\", e);\n }\n\n attempts++;\n if (attempts < maxAttempts) {\n setTimeout(checkActivation, 1000);\n } else {\n // If we reached max attempts and still not activated, show error\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: 'Imagify activation timeout after polling',\n }\n });\n\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n };\n\n // Start checking\n setTimeout(checkActivation, 1000);\n }, 100);\n return;\n }\n\n try {\n let url = `${apiBaseUrl}/${action}/${plugin.slug}`;\n\n // prepare encoded download param (safe if plugin.download is undefined)\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n // original WP-AJAX URL + download_url appended\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n // append download_url to non-WP URL (adds ? or & correctly)\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n const res = await fetch(url, { method: \"POST\" });\n const result = await res.json();\n\n if (result.success) {\n setPlugins(prev =>\n prev.map(p => {\n if (p.slug === plugin.slug) {\n return { ...p, installed: result.data.installed, activated: result.data.activated };\n }\n\n // Handle Rank Math dependency: if Free is deactivated, Pro is also deactivated\n if (action === 'deactivate' && plugin.slug === 'seo-by-rank-math' && p.slug === 'seo-by-rank-math-pro') {\n return { ...p, activated: false };\n }\n\n // Handle Rank Math dependency: if Pro is activated, Free is also activated\n if (action === 'activate' && plugin.slug === 'seo-by-rank-math-pro' && p.slug === 'seo-by-rank-math') {\n return { ...p, activated: true };\n }\n\n return p;\n })\n );\n\n // Show success notice for install, activate and delete actions\n if (action === 'install' && result.data.installed) {\n setNoticeState({ visible: true, type: 'installed', pluginSlug: plugin.slug });\n\n // Track successful install\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'delete' && !result.data.installed) {\n setNoticeState({ visible: true, type: 'deleted', pluginSlug: plugin.slug });\n setSuccessState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track successful delete\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'activate' && result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n\n // Track successful activate\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload almost instantly\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n }\n\n return; // Skip finally block (though finally will still execute, actionSuccessful flag prevents clearing)\n } else if (action === 'deactivate' && !result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n setSuccessState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track successful deactivate\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n // Schedule reload after deactivation to refresh plugin state\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Don't clear pluginInAction for successful deactivation - keep back button disabled until reload\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n return;\n }\n } else {\n // Show error toast for activation and installation errors\n if (action === 'activate') {\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginActivationFailed || 'Activation failed',\n }\n });\n } else if (action === 'deactivate') {\n setErrorState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track deactivation error\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeactivationFailed || 'Deactivation failed',\n }\n });\n } else if (action === 'install') {\n setErrorState({ visible: true, type: 'install', pluginSlug: plugin.slug });\n\n // Track installation error\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || 'Installation failed',\n }\n });\n } else if (action === 'delete') {\n setErrorState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track deletion error\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeletionFailed || 'Deletion failed',\n }\n });\n } else {\n alert(result.data?.message || \"Failed to perform action\");\n }\n }\n } catch (err) {\n console.error(\"Plugin action failed\", err);\n\n // Track network/exception errors for install and activate\n if (action === 'activate' || action === 'install' || action === 'delete') {\n trackButtonClick({\n buttonName: action === 'activate' ? 'Activate' : (action === 'install' ? 'Install' : 'Delete'),\n buttonAction: action === 'activate' ? 'product_activate' : (action === 'install' ? 'product_install' : 'product_delete'),\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: err.message || 'Network error',\n }\n });\n }\n } finally {\n // Only clear pluginInAction if action was not successful\n // For successful actions (activate/deactivate), keep it true until page reload\n if (!actionSuccessful) {\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n }\n }, [apiBaseUrl, useWPHandlers, wpConfig, uiI18n]);\n\n const value = {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n cancelReload,\n loadingAction,\n loadingPlugin,\n noticeState,\n setNoticeState,\n errorState,\n setErrorState,\n successState,\n setSuccessState,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported,\n wpVersion,\n activePlugins,\n activeThemeAuthor\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMarketplace = () => {\n const context = useContext(MarketplaceContext);\n if (!context) {\n throw new Error('useMarketplace must be used within MarketplaceProvider');\n }\n return context;\n};\n","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","import React, { useState, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetailRankMath({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n plugins,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n noticeState,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n // Always get both plugins from context - seo-by-rank-math for first column, rank-math-pro for second\n const freePlugin = plugins.find(p => p.slug === \"seo-by-rank-math\") || null;\n const proPlugin = plugins.find(p => p.slug === \"seo-by-rank-math-pro\") || null;\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n \n\n {/* Header skeleton - single skeleton loader */}\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n {/* Benefits skeleton - keep structure, add skeletons */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton - keep structure, add skeletons */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Refs for slider elements\n const tableSliderRef = useRef(null);\n const sliderNavRef = useRef(null);\n const tableRef = useRef(null);\n const tableHeaderRef = useRef(null);\n const paginationRef = useRef(null);\n const dotsRef = useRef([]);\n\n // State for active slide\n const [activeSlide, setActiveSlide] = useState(0);\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [freePlugin?.slug, proPlugin?.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n // Navigation button click handlers\n const handlePrevClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft - slideWidth,\n behavior: 'smooth'\n });\n };\n\n const handleNextClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft + slideWidth,\n behavior: 'smooth'\n });\n };\n\n // Dot click handler\n const handleDotClick = (slideIndex) => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: slideWidth * slideIndex,\n behavior: 'smooth'\n });\n };\n\n // Slider functionality\n useEffect(() => {\n const tableSlider = tableSliderRef.current;\n const sliderNav = sliderNavRef.current;\n const table = tableRef.current;\n const tableHeader = tableHeaderRef.current;\n const pagination = paginationRef.current;\n\n if (!tableSlider || !sliderNav || !table || !tableHeader || !pagination) return;\n\n const prevButton = sliderNav.querySelector('.gv-previous');\n const nextButton = sliderNav.querySelector('.gv-next');\n\n // State tracking flags to prevent continuous class toggling\n let navIsAtBottom = false;\n let paginationState = 'top'; // 'top', 'overlay', or 'bottom'\n let isPaginationScrolledPast = false;\n let isTableBottomVisible = false;\n let isUpdatingClasses = false; // Flag to prevent observer callbacks during class updates\n\n // Throttle timer for scroll events\n let scrollThrottleTimer = null;\n let isScrollThrottled = false;\n\n // Update active dot and button states based on scroll position\n const updateSliderState = () => {\n const scrollLeft = tableSlider.scrollLeft;\n const slideWidth = tableSlider.offsetWidth;\n const currentSlide = Math.round(scrollLeft / slideWidth);\n\n setActiveSlide(currentSlide);\n\n // Update button disabled states\n if (prevButton) {\n if (currentSlide === 0) {\n prevButton.classList.add('gv-disabled');\n } else {\n prevButton.classList.remove('gv-disabled');\n }\n }\n\n if (nextButton) {\n const maxSlide = Math.round(tableSlider.scrollWidth / slideWidth) - 1;\n if (currentSlide >= maxSlide) {\n nextButton.classList.add('gv-disabled');\n } else {\n nextButton.classList.remove('gv-disabled');\n }\n }\n };\n\n // Calculate and set dynamic positioning for sticky navigation (only when needed)\n const calculateNavPosition = () => {\n const tablePaddingTop = parseFloat(getComputedStyle(table).paddingTop) || 0;\n const headerHeight = tableHeader.offsetHeight;\n const halfHeaderHeight = headerHeight / 2;\n\n // [X] = half of table header height + padding-top of table\n const translateY = halfHeaderHeight + tablePaddingTop;\n\n // [Y] = half viewport height - [X]\n const topValue = (window.innerHeight / 2) - translateY;\n\n // [Z] = half of table header height (excluding padding)\n const bottomValue = 2 * halfHeaderHeight;\n\n sliderNav.style.transform = `translateY(${translateY}px)`;\n sliderNav.style.top = `${topValue}px`;\n sliderNav.style.bottom = `${bottomValue}px`;\n\n return { bottomValue, halfHeaderHeight };\n };\n\n // Check nav boundary and update class only when state changes\n const checkNavBoundary = (bottomValue) => {\n const tableRect = table.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n\n // Calculate the threshold where sticky bottom constraint activates\n const stickyBottomThreshold = viewportHeight - bottomValue;\n\n // Only update class when boundary is crossed (state changes)\n const shouldBeAtBottom = tableRect.bottom <= stickyBottomThreshold;\n\n if (shouldBeAtBottom !== navIsAtBottom) {\n navIsAtBottom = shouldBeAtBottom;\n\n if (navIsAtBottom) {\n sliderNav.classList.add('gv-state-bottom');\n } else {\n sliderNav.classList.remove('gv-state-bottom');\n }\n }\n };\n\n // Update pagination state based on intersection observer flags\n const updatePaginationStateFromObservers = () => {\n // If already updating classes, ignore this call to prevent infinite loop\n if (isUpdatingClasses) {\n return;\n }\n\n // Determine the new state based on observer flags\n let newState;\n if (!isPaginationScrolledPast) {\n newState = 'top';\n } else if (isPaginationScrolledPast && !isTableBottomVisible) {\n newState = 'overlay';\n } else {\n newState = 'bottom';\n }\n\n // Only update classes when state actually changes\n if (newState !== paginationState) {\n // Set flag to prevent observer callbacks during class updates\n isUpdatingClasses = true;\n paginationState = newState;\n\n if (paginationState === 'top') {\n pagination.classList.add('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n } else if (paginationState === 'overlay') {\n pagination.classList.remove('gv-state-top');\n pagination.classList.add('gv-state-overlay');\n } else {\n pagination.classList.remove('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n }\n\n // Use requestAnimationFrame to clear flag after browser completes layout update\n requestAnimationFrame(() => {\n // Add a small delay to ensure layout is fully complete\n setTimeout(() => {\n isUpdatingClasses = false;\n }, 50);\n });\n }\n };\n\n // Initial calculation of nav position\n const { bottomValue } = calculateNavPosition();\n\n // Scroll event listener for slider\n tableSlider.addEventListener('scroll', updateSliderState);\n\n // Set up Intersection Observer for pagination element\n // Observes when pagination scrolls past the top of viewport\n const paginationObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n // When pagination is NOT intersecting and is above viewport, it's scrolled past\n if (!entry.isIntersecting && entry.boundingClientRect.top < 0) {\n isPaginationScrolledPast = true;\n } else if (entry.isIntersecting || entry.boundingClientRect.top >= 0) {\n isPaginationScrolledPast = false;\n }\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0, 1],\n rootMargin: '0px'\n }\n );\n\n // Set up Intersection Observer for table bottom\n // Create a sentinel element at the bottom of the table to observe\n const tableBottomSentinel = document.createElement('div');\n tableBottomSentinel.style.position = 'absolute';\n tableBottomSentinel.style.bottom = '0';\n tableBottomSentinel.style.left = '0';\n tableBottomSentinel.style.width = '1px';\n tableBottomSentinel.style.height = '1px';\n tableBottomSentinel.style.pointerEvents = 'none';\n table.style.position = 'relative';\n table.appendChild(tableBottomSentinel);\n\n const tableBottomObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n isTableBottomVisible = entry.isIntersecting;\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0],\n rootMargin: '-100px 0px 0px 0px'\n }\n );\n\n // Start observing\n paginationObserver.observe(pagination);\n tableBottomObserver.observe(tableBottomSentinel);\n\n // Throttled scroll handler - only executes nav boundary check when not already throttled\n const handleScroll = () => {\n if (isScrollThrottled) return;\n\n isScrollThrottled = true;\n\n // Use requestAnimationFrame for smooth updates\n requestAnimationFrame(() => {\n checkNavBoundary(bottomValue);\n });\n\n // Throttle for 100ms to reduce continuous execution\n scrollThrottleTimer = setTimeout(() => {\n isScrollThrottled = false;\n }, 100);\n };\n\n // Resize handler - recalculate positions and check boundaries\n const handleResize = () => {\n const { bottomValue: newBottomValue } = calculateNavPosition();\n checkNavBoundary(newBottomValue);\n };\n\n window.addEventListener('scroll', handleScroll);\n window.addEventListener('resize', handleResize);\n\n // Initial updates\n updateSliderState();\n checkNavBoundary(bottomValue);\n updatePaginationStateFromObservers();\n\n // Cleanup\n return () => {\n if (scrollThrottleTimer) {\n clearTimeout(scrollThrottleTimer);\n }\n tableSlider.removeEventListener('scroll', updateSliderState);\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('resize', handleResize);\n paginationObserver.disconnect();\n tableBottomObserver.disconnect();\n if (tableBottomSentinel && tableBottomSentinel.parentNode) {\n tableBottomSentinel.parentNode.removeChild(tableBottomSentinel);\n }\n };\n }, []);\n\n // Use the clicked plugin for header/main content, but always use freePlugin for first column\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = proPlugin.detailsBannerUrl || proPlugin.bannerUrl;\n\n // Extract data with fallbacks for free version (first column - always seo-by-rank-math)\n const title = freePlugin?.name || plugin.name || 'Product';\n const description = freePlugin?.i18n?.description || freePlugin?.i18n?.subtitle;\n const subtitle = freePlugin?.i18n?.subtitle;\n\n // Extract data for pro version (second column - always rank-math-pro)\n const proTitle = proPlugin?.name || 'Rank Math Pro';\n const proDescription = proPlugin?.i18n?.subtitle || proPlugin?.i18n?.description;\n const proPrice = proPlugin ? formatPluginPrice(proPlugin, uiI18n?.labels?.free || 'Free', uiI18n) : '';\n\n // Check if proPrice is \"Free until renewal\" (rebate amount is 0)\n const isProFreeUntilRenewal = proPrice === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full price for pro plugin using common utility function\n const proFullPriceAmount = getFullPrice(proPlugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (use freePlugin's i18n if available, otherwise plugin's i18n)\n const i18nSource = freePlugin?.i18n || plugin.i18n;\n const benefitsFromI18n = extractNumberedProps(i18nSource, 'keyBenefitContent');\n\n // Extract key features separately for both free and pro plugins\n const freeKeyFeatures = extractNumberedProps(freePlugin?.i18n, 'keyFeatureContent');\n const proKeyFeatures = extractNumberedProps(proPlugin?.i18n, 'keyFeatureContent');\n\n // Determine the maximum number of features to display all from both plugins\n const maxFeatures = Math.max(freeKeyFeatures.length, proKeyFeatures.length);\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (i18nSource && typeof i18nSource === 'object') {\n let i = 1;\n while (i18nSource[`coreFeatureTitle${i}`] || i18nSource[`coreFeatureContent${i}`]) {\n const title = i18nSource[`coreFeatureTitle${i}`];\n const content = i18nSource[`coreFeatureContent${i}`];\n if (title && title.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: title, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n
\n
\n

Rank Math

\n

{description}

\n
\n
\n \n \n \n \n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n

{`${title} free`}

\n

{subtitle}

\n
\n
\n
\n
\n {uiI18n?.labels?.free || 'Free'}\n
\n
\n {useWPHandlers && freePlugin ? (\n \n ) : (\n freePlugin?.download && (\n \n )\n )}\n
\n
\n
\n
Recommended
\n
\n

{proTitle}

\n

{proDescription.substring(0, 120)}{proDescription.length > 120 ? '…' : ''}

\n
\n
\n
\n
\n {proPrice}{proPrice && !isProFreeUntilRenewal && `,-`}\n {proPrice && !isProFreeUntilRenewal && /{uiI18n?.labels?.timeMonth}}\n
\n {proPrice &&\n
\n
{uiI18n.labels.afterThat} [{proFullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
}\n
\n {useWPHandlers && proPlugin ? (\n \n ) : (\n \n )}\n
\n
\n
\n
\n {maxFeatures > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || freePlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n

{uiI18n?.keyFeatureHeading || proPlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n {Array.from({ length: maxFeatures }).map((_, i) => (\n
\n
\n {freeKeyFeatures[i] || ''}\n
\n
\n {proKeyFeatures[i] || ''}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n
\n
\n {[0, 1].map((slideIndex) => (\n handleDotClick(slideIndex)}\n style={{ cursor: 'pointer' }}\n >\n ))}\n
\n
\n
\n
\n\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport MarketplaceApp from \"./MarketplaceApp\";\nimport './i18n'\nimport { isWpVersionSupported } from \"./utils/wpVersionHelper\";\n\n// Inside-WP auto-mount\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const el = document.getElementById(\"marketplace-root\");\n if (el) {\n const config = window.marketplaceConfig || {};\n if (config.locale) {\n import(\"i18next\").then(({ default: i18n }) => {\n i18n.changeLanguage(config.locale);\n });\n }\n\n const isSupported = isWpVersionSupported(config.wpVersion, '6.2');\n\n if (typeof ReactDOM.createRoot === 'function' && isSupported) {\n // React 18+\n const root = ReactDOM.createRoot(el);\n root.render();\n } else {\n // React 17 or unsupported version\n // For unsupported versions, MarketplaceApp will still render and show WpVersionErrorState\n // We just need to use the compatible render method\n ReactDOM.render(, el);\n }\n }\n});\n"],"names":["isWpVersionSupported","version","minVersion","v1","String","split","v2","i","Math","max","length","num1","parseInt","num2","CURRENCY_SYMBOLS","CURRENCIES_WITH_POST_SYMBOL","getCurrencySymbol","currencyCode","formatPriceWithSymbol","amount","symbol","includes","getFullPrice","plugin","prices","Array","isArray","fullPrice","find","p","priceType","currency","formattedAmount","Number","toFixed","getRebatePrice","rebatePrice","undefined","formatPluginPrice","freeLabel","uiI18n","licenseType","price","labels","freeUntilRenewal","priceToUse","isActive","priceCurrency","priceAmount","WpVersionErrorState","useMarketplace","updateText","notifications","updateWPText","replace","createElement","className","updateWPTitle","type","onClick","handleUpdateClick","window","location","href","marketplaceConfig","wpConfig","adminUrl","updateWPButton","PluginActions","assetsBaseUrl","pluginInAction","subscriptionStatus","isCheckingSubscription","isOnecomBrand","handlePluginAction","isSpecialPlugin","pluginSubscriptionStatus","slug","pluginIsCheckingSubscription","assetBase","iconBase","handleClick","action","isNotInstalled","installed","trackButtonClick","buttonName","buttonAction","context","result","event","CustomEvent","detail","bubbles","cancelable","composed","document","dispatchEvent","formatMessage","message","pluginName","name","shouldShowSelectButton","shouldShowSkeleton","handleSelectClick","disabled","activated","handleManage","product_slug","product_name","has_redirect_url","redirectUrl","trim","has_onboarding_url","onboardingUrl","getPluginRedirectUrl","navigateToPluginUrl","manage","src","activating","activateButton","i18n","installing","installButton","I18nContext","createContext","ReportNamespaces","constructor","this","usedNamespaces","addUsedNamespaces","namespaces","forEach","ns","getUsedNamespaces","Object","keys","module","exports","ErrorState","useTranslation","t","handleRefresh","reload","initReactI18next","init","instance","options","react","isString","obj","defer","res","rej","promise","Promise","resolve","reject","makeString","object","lastOfPathSeparatorRegExp","cleanKey","key","indexOf","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","prototype","hasOwnProperty","call","k","setPath","newValue","e","slice","last","getPath","deepExtend","target","source","overwrite","prop","regexEscape","str","_entityMap","escape","data","s","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","Map","regExpQueue","getRegExp","pattern","regExpFromCache","get","regExpNew","RegExp","delete","shift","set","push","deepFind","keySeparator","tokens","current","next","nextPath","j","getCleanedCode","code","consoleLogger","log","args","output","warn","error","console","apply","Logger","concreteLogger","prefix","logger","debug","forward","deprecate","lvl","debugOnly","create","moduleName","clone","baseLogger","EventEmitter","observers","on","events","listener","numListeners","off","emit","from","entries","observer","numTimesAdded","ResourceStore","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","index","splice","getResource","lng","join","addResource","value","silent","concat","addResources","resources","m","addResourceBundle","deep","skipCopy","pack","JSON","parse","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","v","toJSON","postProcessor","processors","addPostProcessor","handle","translator","processor","process","PATH_KEY","Symbol","keysFromSelector","selector","opts","state","handler","proxy","revoke","Proxy","revocable","createProxy","checkedLoadedFor","shouldHandleAsObject","Translator","services","a","copy","changeLanguage","language","exists","o","interpolation","opt","resolved","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","filter","c","r","map","matched","test","ki","substring","looksLikeObjectPath","match","interpolator","nestingRegexp","parts","translate","lastKey","overloadTranslationOptionHandler","arguments","returnDetails","namespace","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","defaultValue","pluralSeparator","resForObjHndl","resType","toString","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","l","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","Intl","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","zero","one","two","few","many","other","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","addRule","rules","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","err","lngPart","needsPlural","getPluralFormsOfKey","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","val","Interpolator","format","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","lastIndexOf","elem","Boolean","reduce","createCachedFormatter","fn","cache","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cf","cacheInBuiltFormats","formats","number","formatter","NumberFormat","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","add","addCached","findIndex","mem","formatName","formatOptions","formatStr","optStr","rest","trimmedKey","isNaN","parseFormatStr","formatted","valOptions","locale","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","loaded","errors","q","pushPath","removePending","done","loadedKeys","n","read","fcName","tried","wait","resolver","setTimeout","bind","then","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","preload","simplifyPluralSuffix","partialBundledLanguages","ret","tDescription","transformOptions","initImmediate","noop","I18n","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","Error","li","lngInLngs","unshift","isLanguageChangingTo","setLngProps","setLng","fl","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","Locale","getTextInfo","ti","direction","createInstance","cloneInstance","forkResourceStore","mergedOptions","clonedData","prev","acc","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","unescape","text","forceOnboarding","isRankMath","hasOnboardingUrl","rankMathRegistrationSkip","redirectPath","cleanPath","startsWith","fullUrl","origin","FeaturedCarousel","loading","plugins","currentIndex","setCurrentIndex","useState","slidesPerView","setSlidesPerView","activePlugins","activeThemeAuthor","useEffect","updateSlidesPerView","innerWidth","addEventListener","removeEventListener","shouldShowPlugin","mustHavePlugins","some","requiredSlug","mustHaveThemesByAuthor","requiredAuthor","rankMathActivated","rankMathProActivated","featuredPlugins","featured","b","displayOrder","Infinity","totalSlides","maxIndex","width","position","overflow","display","gap","_","minWidth","maxWidth","flex","backgroundColor","borderRadius","justifyContent","maxHeight","border","background","marginBottom","marginTop","height","headings","recommendedHeading","transition","transform","title","featuredTitle","description","featuredContent","freeTrialPeriod","free","mainImage","bannerUrl","image","thumbnail","categoryObj","categories","WebkitBoxOrient","WebkitLineClamp","url","URL","searchParams","history","pushState","PopStateEvent","handleReadMore","featuredCta","timeMonth","media","srcSet","alt","goToPrevious","alignItems","cursor","opacity","min","goToSlide","padding","goToNext","LoadingOverlay","loadingAction","loadingPlugin","spinnerSrc","normalizePlugins","rawResponse","catalog","items","normalized","_plugin$installed","_plugin$activated","descriptionFromTextKeys","values","download","download_url","downloadUrl","authorName","author","authorUrl","seen","Set","has","SuccessNotice","noticeState","setNoticeState","cancelReload","visible","pluginSlug","isInstalled","isActivated","pluginInstalled","pluginActivated","activateNow","manageInMyProducts","handleActivate","activatePluginButton","handleClose","sessionStorage","removeItem","ProductDetail","onClose","usePortal","useWPHandlers","setErrorState","skeletonContent","minHeight","role","createPortal","body","scrollTo","handlePopState","onecomWpVars","subtitle","shortDescription","subTitle","isFree","freeTrialText","hasFreeTrialText","hasFreeTrialPeriod","freeTrial","isFreeUntilRenewal","fullPriceAmount","rebatePriceAmount","extractNumberedProps","baseName","results","benefitsFromI18n","keyFeaturesFromI18n","coreFeaturesFromI18n","featureTitle","content","desc","keyFeatures","benefits","coreFeatures","preventDefault","back","pointerEvents","backButton","ErrorToast","Fragment","untilRenewal","afterThat","keyFeatureHeading","benefitHeading","featureOverviewHeading","propPlugin","errorState","isVisible","timer","clearTimeout","isActivateError","isDeactivateError","isInstallError","isDeleteError","pluginActivationFailed","pluginDeactivationFailed","pluginInstallationFailed","pluginDeletionFailed","Marketplace","apiBaseUrl","enableDefaultStyles","setPluginInAction","fetchSubscriptionStatus","setPlugins","setUiI18n","allPluginsActivated","setAllPluginsActivated","catalogError","setCatalogError","catalogLoading","setCatalogLoading","shouldShowProvision","downloadingPlugins","setDownloadingPlugins","selectedPlugin","setSelectedPlugin","hasFetchedPlugins","useRef","hasTrackedMarketplaceVisit","lastTrackedPluginSlug","contentReceivedTimestamp","contentRenderTimestamp","isCachedRef","pluginFromQuery","URLSearchParams","search","currentPluginParam","fetch","json","Date","now","is_cached","success","trackPageView","category","isContentRendered","normalizedPlugins","apiUiI18n","fetchPlugins","visiblePlugins","React","bySlug","allActivated","getItem","trackMarketplaceVisit","trackPluginDetailVisit","shouldUseRankMathDetail","brand","isRankMathPlugin","DetailComponent","ProductDetailRankMath","replaceState","categoryMap","categoryKey","info","catKey","allPluginsOwned","managePlugins","viewProductsButton","iconUrl","listingDescription","en_GB","translation","da_DK","de_DE","es_ES","fi_FI","fr_FR","it_IT","nl_NL","no_NO","nb_NO","pt_PT","sv_SE","fi","MarketplaceContent","isSupportedWpVersion","isDetailPage","setIsDetailPage","checkDetailPage","hasPlugin","originalPushState","originalReplaceState","ProductBanner","MarketplaceApp","MarketplaceProvider","leftBannerUrl","rightBannerUrl","pageTitle","pageContent","__defProp","defineProperty","__publicField","enumerable","configurable","writable","__defNormalProp","promises","fetchWithCache","self","caches","open","response","ok","put","GvFlagElement","HTMLElement","observedAttributes","fetchFlag","svg","innerHTML","connectedCallback","getAttribute","attributeChangedCallback","oldValue","GvIconElement","fetchIcon","GvIllustrationElement","fetchIllustration","GvIndicatorElement","fetchIndicator","GvLoaderElement","fetchLoader","GvLogoElement","fetchLogo","GvPayIconElement","fetchPayIcon","GvTileElement","fetchTile","defineCustomElement","tagName","elementClass","customElements","define","TAG_NAME","win","loc","hostname","crypto","randomUUID","navigator","userAgent","onLine","referrer","screen","_array_like_to_array","arr","len","arr2","asyncGeneratorStep","gen","_next","_throw","arg","_async_to_generator","_construct","Parent","Class","_is_native_reflect_construct","Reflect","construct","Function","_set_prototype_of","_create_class","Constructor","protoProps","staticProps","props","descriptor","_defineProperties","_extends","assign","_get_prototype_of","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","_instanceof","left","right","hasInstance","_object_without_properties_loose","excluded","sourceKeys","_type_of","_wrap_native_super","_cache","Wrapper","valueOf","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","minLen","_unsupported_iterable_to_array","_ts_generator","thisArg","y","g","label","sent","trys","ops","verb","op","step","_ts_values","_a","__defProp$1","__publicField$1","__defNormalProp$1","__defProp$1$1","__publicField$1$1","__defNormalProp$1$1","NodeType$3","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","defaultObj","globalThis","defaultPrototype","accessorNames","isUntaintedAccessors","every","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","method","Zone","iframeEl","appendChild","contentWindow","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","index$1","n2","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","cssRules","sheetHref","ownerNode","ownerDocument","cssText","rule2","stringifyRule","isCSSImportRule","importStringified","styleSheet","statement","layerName","supportsText","mediaText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","Mirror","WeakMap","_proto","getId","id","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","_this","childNodes","childNode","hasNode","node2","meta","oldNode","maskInputValue","param","element","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","baseURL","_ref","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_step","_iterator","part","normalizeCssString","_testNoPxNorm","canvasService","canvasCtx","_id","tagNameRegex","genId","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","getHref","customHref","a2","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","descriptorsStr","inParens","c2","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","needMaskingText","maskTextClass","maskTextSelector","el","closest","contains","matches","e2","serializeNode","mirror2","mirror","blockClass","blockSelector","needsMask","inlineStylesheet","_options_maskInputOptions","maskTextFn","_options_dataURLOptions","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options_newlyAddedElement","newlyAddedElement","_options_cssCaptured","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","i2","attr","stylesheet","styleSheets","rel","_cssText","sheet","cssText1","childNodes2","splits","iterCount","cssTextNorm","normFactor","textContent","textContentNorm","startSubstring","cssNormSplits","splitNorm","jLimit","prevTextContent","prevMinLength","floor","normPart","splitCssText","markCssSplits","checked","selected","rr_open_mode","__context","canvas","ctx","getContext","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","complete","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_n2_getBoundingClientRect","getBoundingClientRect","class","rr_width","rr_height","contentDocument","rr_src","isSVG","ownerSVGElement","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options_skipChild","skipChild","_options_inlineStylesheet","slimDOMOptions","_options_inlineImages","_options_recordCanvas","onSerialize","onIframeLoad","_options_iframeLoadTimeout","iframeLoadTimeout","onStylesheetLoad","_options_stylesheetLoadTimeout","stylesheetLoadTimeout","_options_keepIframeSrcFn","_options_preserveWhiteSpace","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","serializedChildNode","shadowRootEl1","_step1","_iterator1","serializedChildNode1","isShadow","readyState","fired","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","a22","d","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","toStringTag","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","Error1","CssSyntaxError","line","column","file","plugin22","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","mark","aside","lines","start","end","_pico$1_createColors","index2","gutter","spacing","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","Stringifier","builder","atrule","params","rawValue","raws","afterName","nodes","block","between","beforeAfter","raw","buf","depth","child","before","decl","string","important","own","first","root2","root","rawCache","toUpperCase","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","Node2","defaults","addToError","postcssNode","input","insertAfter","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","_this_rangeBy","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","remove","replaceWith","_len","_key","bookmark","foundSelf","result2","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","stringifier2","node","node$1","Declaration$4$1","Node$3$1","Declaration","declaration$1","SourceMapConsumer$2$1","SourceMapConsumer","SourceMapGenerator$2$1","SourceMapGenerator","existsSync$1","existsSync","readFileSync$1","readFileSync","dirname$1$1","dirname","join$1","PreviousMap$2$1","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","decodeURIComponent","substr","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","map1","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath$1","fileURLToPath","pathToFileURL$1$1","pathToFileURL","isAbsolute$1","isAbsolute","resolve$1$1","nanoid$2","size","random","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","Input","hasBOM","mapResolve","offset","fromOffset","col","pos1","pos2","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","_i","_iter","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative$1","relative","resolve$2","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","MapGenerator","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","encodeURIComponent","fileURL","encodeURI","Comment$4$1","Node$2$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","cleanSource$1","markDirtyUp$1","proxyOf","Container$7$1","Node$1$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","_node2","cb","exist","existIndex","reverse","sample","i21","processed","rebuild","removeAll","replaceValues","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Document$3$1","Container$6$1","Document2","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","Warning","warning$1","Warning$1$1","Result$3$1","Result","processor2","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","AtRule","_Container$5$1_prototype_append","_Container$5$1_prototype_prepend","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","Root","ignore","root$1","list$2$1","comma","space","separators","array","func","inQuote","prevQuote","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","Rule","sep2","rule$1","Declaration$2$1","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","Parser$1$1","Parser","spaces","createTokenizer","token","unnamedAtrule","brackets","tokenizer","endOfFile","nextToken","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","founded","_step_value","doubleColon","quote","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","what","ignoreUnclosed","controlChar","fromCharCode","tokenizer2$1","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","type1","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","all","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","syntax","parser","helpers","postcss","processing","runAsync","onRejected","finally","onFinally","getAsyncError","handleError","postcssVersion","prepareVisitors","listeners","hasListener","promise1","_loop","_state","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","_visitors_visit2_visitorIndex","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","NoWorkResult","_processor","_css","_opts","_map","_map_generate","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","Processor","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","_defaults_source","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","x","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","_pico_createColors","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node3","Declaration$4","Node$3","Declaration2","declaration","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","PreviousMap2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","nanoid","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input2","resolve$3","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","MapGenerator2","Comment$4","Node$2","Comment2","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","cleanSource","markDirtyUp","Container$7","Node$1","Container2","container","LazyResult$4","Processor$3","Document$3","Container$6","Document23","document$1$2","Warning$2","Warning2","warning","Warning$1","Result$3","Result2","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","AtRule2","_Container$5_prototype_append","_Container$5_prototype_prepend","LazyResult$3","Processor$2","Container$4","Root$5","Root2","list$2","list_1","Container$3","list$1","Rule$3","Rule2","Declaration$2","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","Parser$1","Parser2","tokenizer22","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","NoWorkResult2","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Processor2","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","stringify$6","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","parentNode","_newChild","_refChild","_node","childIterator","firstChild","nextSibling","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","untaintedMethod","mutationObserverCtor","patch$2","replacement","wrapped","defineProperties","__rrweb_original__","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","timeout","leading","remaining","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","shadowRoot","getTime","StyleSheetMirror","_this_styleIDMap_get","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","inDom","rootShadowHost","getRootShadowHost","shadowHostInDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","addNode","__ln","previousSibling","current1","tail","removeNode","moveKey","parentId","MutationBuffer","mutations","processMutation","frozen","locked","adds","addedIds","addList","getNextId","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","n21","isAncestorInSet","droppedSet","candidate","tailNode","parentId1","unhandledNode","payload","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","attributeName","value1","unattachedDoc","implementation","createHTMLDocument","old","pname","getPropertyValue","newPriority","getPropertyPriority","pname1","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","childN","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","_isAncestorInSet","callbackWrapper","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initScrollObserver","scrollCb","sampling","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","index21","recurse","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","mutationObserver","currentWindow","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","_hooks","mutation","mousemove","mouseInteraction","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","handlers","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","h","initMoveObserver","mouseInteractionHandler","disableMap","currentPointerType","endsWith","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","getHandler","PointerEvent","TouchStart","TouchEnd","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","param1","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","text2","lastInputValue","_handlers","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","argumentsList","_getIdAndStyleId","styleBlock","replaceSync","deleteRule","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","sRoot","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","recordArgs","hookHandler","setter","encodedJs","blob","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","takeFullSnapshot$1","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","_options_sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","_e2_data","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","requestAnimationFrame","matchedCanvas","_this1","bitmap","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","postMessage","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","_handlers1","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","CSSRule","r2","adoptedStyleSheetData","styleIds","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","recording","cleanFrame","t2","record","checkoutEveryNms","checkoutEveryNth","_options_blockClass","_options_blockSelector","_options_ignoreClass","_options_ignoreSelector","_options_maskTextClass","_options_maskTextSelector","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options_recordDOM","_options_recordCrossOriginIframes","_options_recordAfter","recordAfter","_options_userTriggeredOnInput","_options_collectFonts","_options_ignoreCSSAttributes","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","date","email","month","tel","time","week","password","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","tmp","_ref_blockClass","_ref_blockSelector","_ref_maskTextClass","_ref_maskTextSelector","_ref_inlineStylesheet","_ref_inlineImages","_ref_recordCanvas","_ref_maskAllInputs","_ref_slimDOM","slimDOM","_ref_keepIframeSrcFn","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","parseFloat","pathToSelector","outerHTML","parentElement","localName","domSiblings","sibling","isObject","isObjTooDeep","limit","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","_obj","stringLengthLimit","Event","eventResult","eventValue","defaultLogOptions","level","lengthThreshold","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","levelType","_logger","patch","builtInProp","cycle","schedulingQueue","setImmediate","ToString","config","schedule","drain","isThenable","_then","oType","notify","chain","notifyIsolated","failure","msg","triggered","def","defWrapper","MakeDefWrapper","iteratePromises","rejecter","idx","MakeDef","NpoPromise","executor","Item","PromisePolyfill","PromisePrototype","msgs","at","ch","escapee","Config","DEBUG","LIB_VERSION","MAX_RECORDING_MS","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console$1","isUndefined","toArray","critical","log_func_with_prefix","console_with_prefix","safewrap","safewrapClass","klass","proto","bound","isFunction","extend","isArguments","iterable","include","needle","inherit","subclass","superclass","isEmptyObject","isDate","isNumber","encodeDates","formatDate","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","strip_empty_properties","truncate","JSONEncode","mixed_val","escapable","holder","mind","partial","isFinite","JSONDecode","SyntaxError","hex","uffff","base64Encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","c1","UUID","uuid","BLOCKED_UA_STRS","isBlockedUA","ua","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","cookie","nameEQ","ca","set_seconds","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","setTime","toGMTString","days","new_cookie_val","_testStorageSupported","storage","supported","cheap_guid","setItem","_localStorageSupported","localStorageSupported","forceCheck","localStorage","_sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","is_supported","register_event","fixEvent","stopPropagation","returnValue","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","getElementsByTagName","bad_whitespace","hasClass","getElementsBySelector","foundCount","elements","currentContextIndex","currentContext","getElementById","token_match","checkFunction","attrName","attrOperator","attrValue","query","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","browser","user_agent","vendor","browserVersion","os","device","referringDomain","currentUrl","properties","extra_props","people_properties","mpPageViewProperties","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","NOOP_FUNC","JSONStringify","JSONParse","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","OBJECT_STORES","IDBStorageWrapper","storeName","dbPromise","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","win$1","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","get_config","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","track","trackEventName","trackProperties","getConfigValue","_openDb","openRequest","indexedDB","ev","db","createObjectStore","dbOrError","makeTransaction","mode","storeCb","doTransaction","transaction","oncomplete","onabort","onerror","objectStore","req","getAll","logger$6","SharedLock","storageKey","pollIntervalMS","timeoutMS","promiseImpl","withLock","lockedCB","pid","startTime","keyX","keyY","keyZ","delay","waitFor","predicate","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","logger$5","RequestQueue","waitMs","timeoutPromise","throttledItems","usePersistence","queueStorage","sharedLockStorage","sharedLockTimeoutMS","reportError","errorReporter","memQueue","initialized","enqueueThrottleMs","enqueuePersisted","_enqueuePersisted","queueEntry","ensureInit","enqueue","flushInterval","queueEntries","enqueueItem","readFromStorage","storedQueue","saveToStorage","succeeded","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","logger$4","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","stopped","consecutiveRemovalFailures","itemIdsSentSuccessfully","flushOnlyOnInterval","_flushPromise","flush","stop","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","sendRequestPromise","requestInProgress","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","timesSent","removeItemsFromQueue","batchSendCallback","unloading","httpStatusCode","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","isRecordingExpired","serializedRecording","logger$3","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","SessionRecording","_mixpanel","mixpanelInstance","_onIdleTimeout","onIdleTimeout","_onMaxLengthReached","onMaxLengthReached","_onBatchSent","onBatchSent","_rrwebRecord","rrwebRecord","_stopRecording","replayId","batchStartUrl","replayStartUrl","idleExpires","maxExpires","replayStartTime","lastEventTimestamp","seqNo","idleTimeoutId","maxTimeoutId","recordMaxMs","recordMinMs","getConfig","batcherKey","batcher","flushEventsWithOptOut","stopRecording","getUserIdInfo","finalFlushUserIdInfo","userIdInfo","get_distinct_id","deviceId","get_property","userId","unloadPersistedData","getDurationMs","_getRecordMinMs","configVar","startRecording","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","isUserEvent","__enqueuePromise","maxTimeoutMs","skipFlush","isRrwebStopped","flushPromise","onOptOut","_flushEvents","serialize","tabId","get_tab_id","deserialize","_sendRequest","currentReplayId","reqParams","reqBody","onSuccess","responseBody","status","headers","apiHost","get_api_host","numEvents","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","canUseCompressionStream","gzipStream","stream","pipeThrough","Response","compressedBlob","configValue","RecordingRegistry","idb","isPersistenceEnabled","setActiveRecording","getActiveRecording","clearActiveRecording","markActiveRecordingExpired","deleteActiveRecording","flushInactiveRecordings","serializedRecordings","unloadPromises","logger$2","MixpanelRecorder","recordingRegistry","_flushInactivePromise","activeRecording","stopRecordingInProgress","resetRecording","sessionRecordingOptions","activeSerializedRecording","_stopCurrentRecording","pauseRecording","disableActiveRecording","stopRecordingPromise","resumeRecording","startNewIfInactive","getActiveReplayId","EV_CHANGE","EV_CLICK","EV_HASHCHANGE","EV_LOAD","EV_MP_LOCATION_CHANGE","EV_POPSTATE","EV_SCROLLEND","EV_SCROLL","EV_SUBMIT","EV_VISIBILITYCHANGE","CLICK_EVENT_PROPS","OPT_IN_CLASSES","OPT_OUT_CLASSES","SENSITIVE_DATA_CLASSES","TRACKED_ATTRS","INTERACTIVE_ARIA_ROLES","ALWAYS_NON_INTERACTIVE_TAGS","TEXT_CONTAINER_TAGS","EVENT_HANDLER_ATTRIBUTES","logger$1","getClasses","classes","getClassName","cls","baseVal","getPreviousElementSibling","previousElementSibling","isElementNode","getPropertiesFromElement","blockAttrsSet","extraAttrs","allowElementCallback","allowSelectors","elId","shouldTrackElementDetails","attrVal","shouldTrackValue","nthChild","nthOfType","currentElem","getSafeText","elText","isTextNode","isElementAllowed","sel","isElementBlocked","blockElementCallback","blockSelectors","isTag","curEl","elClasses","getPolyfillScrollEndFunction","originalFunction","supportsScrollEnd","polyfillFunction","polyfillEvent","scrollTimer","eventType","hasAnyInteractivityIndicators","isContentEditable","onclick","onmousedown","onmouseup","ontouchstart","ontouchend","hasInlineEventHandlers","primaryRole","hasInteractiveAriaRole","isDefinitelyNonInteractive","getRootNode","host","getClickEventComposedPath","getClickEventTargetElement","RageClickTracker","clicks","ShadowDOMObserver","changeCallback","observerConfig","observedShadowRoots","shadowObservers","isRageClick","thresholdPx","timeoutMs","clickCount","lastClick","sqrt","pow","observeFromEvent","observeShadowRoot","INTERACTION_EVENTS","LAYOUT_EVENTS","NAVIGATION_EVENTS","MUTATION_OBSERVER_CONFIG","attributeFilter","DeadClickTracker","onDeadClickCallback","eventListeners","shadowDOMObserver","isTracking","lastChangeEventTimestamp","pendingClicks","processingActive","processingTimeout","addClick","trackClick","added","triggerProcessing","getDeadClicks","clicksToEvaluate","deadClicks","click","hasChangesAfter","recordChangeEvent","processRecursively","startTracking","selectionHandler","stopTracking","AUTOCAPTURE_CONFIG_KEY","PAGEVIEW_OPTION_FULL_URL","CONFIG_ALLOW_SELECTORS","CONFIG_ALLOW_URL_REGEXES","CONFIG_BLOCK_ATTRS","CONFIG_BLOCK_ELEMENT_CALLBACK","CONFIG_BLOCK_SELECTORS","CONFIG_BLOCK_URL_REGEXES","CONFIG_CAPTURE_EXTRA_ATTRS","CONFIG_CAPTURE_TEXT_CONTENT","CONFIG_SCROLL_CAPTURE_ALL","CONFIG_SCROLL_CHECKPOINTS","CONFIG_TRACK_CLICK","CONFIG_TRACK_DEAD_CLICK","CONFIG_TRACK_INPUT","CONFIG_TRACK_PAGEVIEW","CONFIG_TRACK_RAGE_CLICK","CONFIG_TRACK_SCROLL","CONFIG_TRACK_PAGE_LEAVE","CONFIG_TRACK_SUBMIT","CONFIG_DEFAULTS$1","DEFAULT_PROPS","MP_EV_CLICK","MP_EV_DEAD_CLICK","MP_EV_RAGE_CLICK","Autocapture","mp","maxScrollViewDepth","hasTrackedScrollSession","previousScrollHeight","minDOMApisSupported","initPageListeners","initPageviewTracking","initClickTracking","initDeadClickTracking","initInputTracking","initScrollTracking","initSubmitTracking","initRageClickTracking","initPageLeaveTracking","getFullConfig","autocaptureConfig","currentUrlBlocked","allowUrlRegexes","allowed","allowRegex","blockUrlRegexes","pageviewTrackingConfig","trackDomEvent","mpEventName","isCapturedForHeatMap","is_recording_heatmap_data","_getClickTrackingConfig","blockAttrs","captureTextContent","captureExtraAttrs","capturedForHeatMap","srcElement","shouldTrackDomEvent","targetElementList","elementsJson","explicitNoTrack","shouldTrackDetails","docElement","elementText","guessRealClickTarget","targetProps","getPropsForDOMEvent","listenerPopstate","listenerHashchange","nativePushState","unused","nativeReplaceState","configKey","_trackPageLeave","currentScrollHeight","viewportHeight","scrollPercentage","round","foldLinePercentage","_initScrollDepthTracking","listenerScrollDepth","scrollEndPolyfill","scrollViewHeight","scrollY","scrollHeight","listenerClick","_deadClickTracker","deadClickEvent","listenerDeadClick","currentDeadClickConfig","normalizedConfig","stopDeadClickTracking","listenerChange","listenerLocationchange","previousTrackedUrl","tracked","track_pageview","shouldTrack","didPathChange","trackPageviewOption","lastScrollCheckpoint","listenerRageClick","_rageClickTracker","currentRageClickConfig","listenerScroll","scrollCheckpoints","checkpoint","listenerSubmit","listenerPageLeaveVisibilitychange","listenerPageLeaveLocationchange","listenerPageLoad","FLAGS_CONFIG_KEY","CONFIG_CONTEXT","CONFIG_DEFAULTS","FeatureFlagManager","initOptions","getFullApiRoute","getMpConfig","getConfigFunc","setMpConfig","setConfigFunc","getMpProperty","getPropertyFunc","trackingFunc","minApisSupported","flags","fetchFlags","trackedFeatures","ffConfig","isSystemEnabled","updateContext","newContext","oldContext","areFlagsReady","distinctId","traceparent","_fetchInProgressStartTime","fetchPromise","markFetchComplete","responseFlags","_traceparent","_fetchStartTime","_fetchCompleteTime","_fetchLatency","getVariant","featureName","fallback","getVariantSync","feature","trackFeatureCheck","getVariantValue","getFeatureData","getVariantValueSync","isEnabled","isEnabledSync","trackingProperties","toISOString","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","event_name","user_callback","that","override_event","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","metaKey","ctrlKey","FormTracker","submit","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","request_batchers","groups","conf","MixpanelPeople","update_referrer_info","increment","by","$add","track_charge","clear_charges","delete_user","_identify_called","device_id","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","save","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","entry","old_cookie","old_localstorage","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","get_referrer_info","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","mixpanel_master","load_extra_bundle","_onload","IDENTITY_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","XMLHttpRequest","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","autocapture","_init_tab_id","_check_and_start_session_recording","key_suffix","tab_id_key","should_generate_new_tab_id_key","tab_id","_should_load_recorder","recording_registry_idb","recordings","force_start","loadRecorder","handleLoadedRecorder","_recorder","is_sampled","shouldLoad","start_session_recording","stop_session_recording","pause_session_recording","resume_session_recording","_get_session_replay_id","get_session_recording_properties","replay_id","get_session_replay_url","replay_url","__get_recorder","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","img","headerValue","headerName","setRequestHeader","start_time","withCredentials","onreadystatechange","responseText","statusText","response_headers","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","queue_prefix","_batcher_configs","api_name","batcher_for","attrs","api_routes","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","alias","name_tag","prop_name","hook_name","property_name","endpoint_type","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","mixpanel","_src","onload","dom_loaded_handler","attachEvent","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","initializeMixpanel","data_consent_status","mixpanelConfig","persistence","disableMixpanel","enableMixpanel","getGlobalProperties","globalProps","globalProperties","pageParam","enhancedProperties","hit_type","page","fromEntries","trackEvent","eventProperties","isMixpanelAvailable","itemName","contentReceivedAt","contentRenderedAt","isCached","content_received_at","is_content_rendered","content_rendered_at","item_name","item_category","button_name","button_action","license_type","price_amount","price_currency","extractPluginProperties","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","setDefaults","getDefaults","MarketplaceContext","setSubscriptionStatus","setIsCheckingSubscription","setLoadingAction","setLoadingPlugin","successState","setSuccessState","consentStatus","setConsentStatus","initialConsent","reloadTimeoutRef","wpVersion","persistedNotice","noticeData","successType","handleConsentChange","newConsentStatus","handleStorageChange","useCallback","ajaxUrl","formData","FormData","is_purchased","isWpVersionSupportedHelper","isImagifyActivation","actionSuccessful","loadingMessage","deactivating","deleting","downloadParam","nonce","attempts","checkActivation","checkUrl","special_case","error_message","alert","Provider","useContext","alwaysNewT","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","i18nOptions","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","ref","usePrevious","isMounted","boundReset","i18nInstance","setI18n","getI18n","alreadyWarned","warnOnce","loadedClb","freePlugin","proPlugin","tableSliderRef","sliderNavRef","tableRef","tableHeaderRef","paginationRef","activeSlide","setActiveSlide","tableSlider","sliderNav","table","tableHeader","pagination","prevButton","querySelector","nextButton","navIsAtBottom","paginationState","isPaginationScrolledPast","isTableBottomVisible","isUpdatingClasses","scrollThrottleTimer","isScrollThrottled","updateSliderState","slideWidth","offsetWidth","currentSlide","scrollWidth","calculateNavPosition","tablePaddingTop","getComputedStyle","paddingTop","halfHeaderHeight","offsetHeight","translateY","topValue","bottomValue","bottom","checkNavBoundary","tableRect","stickyBottomThreshold","shouldBeAtBottom","updatePaginationStateFromObservers","newState","paginationObserver","IntersectionObserver","isIntersecting","boundingClientRect","rootMargin","tableBottomSentinel","tableBottomObserver","handleScroll","handleResize","newBottomValue","detailsBannerUrl","proTitle","proDescription","proPrice","isProFreeUntilRenewal","proFullPriceAmount","i18nSource","freeKeyFeatures","proKeyFeatures","maxFeatures","handlePrevClick","behavior","handleNextClick","slideIndex","handleDotClick","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","isSupported","ReactDOM","render"],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/src/components/ProductDetailRankMath.jsx b/frontend/src/components/ProductDetailRankMath.jsx index 0eeadcc..2890f05 100644 --- a/frontend/src/components/ProductDetailRankMath.jsx +++ b/frontend/src/components/ProductDetailRankMath.jsx @@ -432,7 +432,7 @@ export default function ProductDetailRankMath({ // Use the clicked plugin for header/main content, but always use freePlugin for first column const imageURL = (typeof window.onecomWpVars !== "undefined" && window.onecomWpVars?.imageURL) || assetBase; const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`; - const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png'; + const mainImage = proPlugin.detailsBannerUrl || proPlugin.bannerUrl; // Extract data with fallbacks for free version (first column - always seo-by-rank-math) const title = freePlugin?.name || plugin.name || 'Product';