@zoho_apptics/apptics-js-sdk 1.0.1 → 2.0.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/LICENSE +13 -0
- package/README.md +747 -11
- package/dist/apptics.esm.min.js +3 -0
- package/dist/apptics.esm.min.js.map +1 -0
- package/dist/apptics.min.js +3 -0
- package/dist/apptics.min.js.map +1 -0
- package/dist/chunks/batch-BU_mTpm1.min.js +3 -0
- package/dist/chunks/batch-BU_mTpm1.min.js.map +1 -0
- package/dist/chunks/logs-Bea5zUW_.min.js +3 -0
- package/dist/chunks/logs-Bea5zUW_.min.js.map +1 -0
- package/dist/cjs/auto-init.d.ts +8 -0
- package/dist/cjs/auto-init.js +32 -0
- package/dist/cjs/core/attempts.d.ts +28 -0
- package/dist/cjs/core/attempts.js +113 -0
- package/dist/cjs/core/batch.d.ts +32 -0
- package/dist/cjs/core/batch.js +115 -0
- package/dist/cjs/core/callsite.d.ts +28 -0
- package/dist/cjs/core/callsite.js +93 -0
- package/dist/cjs/core/consent.d.ts +23 -0
- package/dist/cjs/core/consent.js +130 -0
- package/dist/cjs/core/constants.d.ts +212 -0
- package/dist/cjs/core/constants.js +299 -0
- package/dist/cjs/core/db.d.ts +40 -0
- package/dist/cjs/core/db.js +334 -0
- package/dist/cjs/core/debug.d.ts +22 -0
- package/dist/cjs/core/debug.js +88 -0
- package/dist/cjs/core/env.d.ts +28 -0
- package/dist/cjs/core/env.js +267 -0
- package/dist/cjs/core/framework-id.d.ts +1 -0
- package/dist/cjs/core/framework-id.js +9 -0
- package/dist/cjs/core/guard.d.ts +2 -0
- package/dist/cjs/core/guard.js +72 -0
- package/dist/cjs/core/hooks.d.ts +41 -0
- package/dist/cjs/core/hooks.js +23 -0
- package/dist/cjs/core/logger.d.ts +16 -0
- package/dist/cjs/core/logger.js +86 -0
- package/dist/cjs/core/state.d.ts +69 -0
- package/dist/cjs/core/state.js +78 -0
- package/dist/cjs/core/storage.d.ts +46 -0
- package/dist/cjs/core/storage.js +229 -0
- package/dist/cjs/core/transport.d.ts +83 -0
- package/dist/cjs/core/transport.js +441 -0
- package/dist/cjs/core/utils.d.ts +26 -0
- package/dist/cjs/core/utils.js +175 -0
- package/dist/cjs/core/validate.d.ts +18 -0
- package/dist/cjs/core/validate.js +233 -0
- package/dist/cjs/device/appversion.d.ts +20 -0
- package/dist/cjs/device/appversion.js +158 -0
- package/dist/cjs/device/index.d.ts +23 -0
- package/dist/cjs/device/index.js +372 -0
- package/dist/cjs/engagement/api-rules.d.ts +84 -0
- package/dist/cjs/engagement/api-rules.js +219 -0
- package/dist/cjs/engagement/auto-api.d.ts +7 -0
- package/dist/cjs/engagement/auto-api.js +200 -0
- package/dist/cjs/engagement/auto-screen.d.ts +16 -0
- package/dist/cjs/engagement/auto-screen.js +241 -0
- package/dist/cjs/engagement/defined-events.d.ts +23 -0
- package/dist/cjs/engagement/defined-events.js +58 -0
- package/dist/cjs/engagement/send.d.ts +6 -0
- package/dist/cjs/engagement/send.js +99 -0
- package/dist/cjs/engagement/session.d.ts +42 -0
- package/dist/cjs/engagement/session.js +327 -0
- package/dist/cjs/engagement/track.d.ts +56 -0
- package/dist/cjs/engagement/track.js +350 -0
- package/dist/cjs/errors/send.d.ts +6 -0
- package/dist/cjs/errors/send.js +73 -0
- package/dist/cjs/errors/track.d.ts +4 -0
- package/dist/cjs/errors/track.js +127 -0
- package/dist/cjs/feedback/controls.d.ts +31 -0
- package/dist/cjs/feedback/controls.js +286 -0
- package/dist/cjs/feedback/index.d.ts +8 -0
- package/dist/cjs/feedback/index.js +37 -0
- package/dist/cjs/feedback/logs.d.ts +40 -0
- package/dist/cjs/feedback/logs.js +202 -0
- package/dist/cjs/feedback/send.d.ts +25 -0
- package/dist/cjs/feedback/send.js +178 -0
- package/dist/cjs/feedback/template.d.ts +2 -0
- package/dist/cjs/feedback/template.js +162 -0
- package/dist/cjs/feedback/ui.d.ts +55 -0
- package/dist/cjs/feedback/ui.js +631 -0
- package/dist/cjs/heatmap/index.d.ts +16 -0
- package/dist/cjs/heatmap/index.js +22 -0
- package/dist/cjs/heatmap/send.d.ts +13 -0
- package/dist/cjs/heatmap/send.js +82 -0
- package/dist/cjs/heatmap/track.d.ts +4 -0
- package/dist/cjs/heatmap/track.js +377 -0
- package/dist/cjs/index.d.ts +68 -0
- package/dist/cjs/index.js +150 -0
- package/dist/cjs/lifecycle.d.ts +14 -0
- package/dist/cjs/lifecycle.js +538 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/remoteconfig/custom.d.ts +10 -0
- package/dist/cjs/remoteconfig/custom.js +78 -0
- package/dist/cjs/remoteconfig/evaluate.d.ts +24 -0
- package/dist/cjs/remoteconfig/evaluate.js +171 -0
- package/dist/cjs/remoteconfig/fetch.d.ts +24 -0
- package/dist/cjs/remoteconfig/fetch.js +214 -0
- package/dist/cjs/remoteconfig/index.d.ts +13 -0
- package/dist/cjs/remoteconfig/index.js +90 -0
- package/dist/cjs/remoteconfig/store.d.ts +18 -0
- package/dist/cjs/remoteconfig/store.js +98 -0
- package/dist/cjs/remotelog/gate.d.ts +11 -0
- package/dist/cjs/remotelog/gate.js +54 -0
- package/dist/cjs/remotelog/index.d.ts +25 -0
- package/dist/cjs/remotelog/index.js +55 -0
- package/dist/cjs/remotelog/logger.d.ts +28 -0
- package/dist/cjs/remotelog/logger.js +139 -0
- package/dist/cjs/remotelog/send.d.ts +13 -0
- package/dist/cjs/remotelog/send.js +153 -0
- package/dist/cjs/scheduler.d.ts +8 -0
- package/dist/cjs/scheduler.js +78 -0
- package/dist/cjs/types.d.ts +312 -0
- package/dist/cjs/user/index.d.ts +33 -0
- package/dist/cjs/user/index.js +178 -0
- package/dist/esm/auto-init.d.ts +8 -0
- package/dist/esm/auto-init.js +29 -0
- package/dist/esm/core/attempts.d.ts +28 -0
- package/dist/esm/core/attempts.js +106 -0
- package/dist/esm/core/batch.d.ts +32 -0
- package/dist/esm/core/batch.js +108 -0
- package/dist/esm/core/callsite.d.ts +28 -0
- package/dist/esm/core/callsite.js +89 -0
- package/dist/esm/core/consent.d.ts +23 -0
- package/dist/esm/core/consent.js +120 -0
- package/dist/esm/core/constants.d.ts +212 -0
- package/dist/esm/core/constants.js +277 -0
- package/dist/esm/core/db.d.ts +40 -0
- package/dist/esm/core/db.js +324 -0
- package/dist/esm/core/debug.d.ts +22 -0
- package/dist/esm/core/debug.js +81 -0
- package/dist/esm/core/env.d.ts +28 -0
- package/dist/esm/core/env.js +251 -0
- package/dist/esm/core/framework-id.d.ts +1 -0
- package/dist/esm/core/framework-id.js +7 -0
- package/dist/esm/core/guard.d.ts +2 -0
- package/dist/esm/core/guard.js +70 -0
- package/dist/esm/core/hooks.d.ts +41 -0
- package/dist/esm/core/hooks.js +21 -0
- package/dist/esm/core/logger.d.ts +16 -0
- package/dist/esm/core/logger.js +82 -0
- package/dist/esm/core/state.d.ts +69 -0
- package/dist/esm/core/state.js +73 -0
- package/dist/esm/core/storage.d.ts +46 -0
- package/dist/esm/core/storage.js +219 -0
- package/dist/esm/core/transport.d.ts +83 -0
- package/dist/esm/core/transport.js +425 -0
- package/dist/esm/core/utils.d.ts +26 -0
- package/dist/esm/core/utils.js +161 -0
- package/dist/esm/core/validate.d.ts +18 -0
- package/dist/esm/core/validate.js +226 -0
- package/dist/esm/device/appversion.d.ts +20 -0
- package/dist/esm/device/appversion.js +153 -0
- package/dist/esm/device/index.d.ts +23 -0
- package/dist/esm/device/index.js +362 -0
- package/dist/esm/engagement/api-rules.d.ts +84 -0
- package/dist/esm/engagement/api-rules.js +211 -0
- package/dist/esm/engagement/auto-api.d.ts +7 -0
- package/dist/esm/engagement/auto-api.js +198 -0
- package/dist/esm/engagement/auto-screen.d.ts +16 -0
- package/dist/esm/engagement/auto-screen.js +238 -0
- package/dist/esm/engagement/defined-events.d.ts +23 -0
- package/dist/esm/engagement/defined-events.js +55 -0
- package/dist/esm/engagement/send.d.ts +6 -0
- package/dist/esm/engagement/send.js +96 -0
- package/dist/esm/engagement/session.d.ts +42 -0
- package/dist/esm/engagement/session.js +315 -0
- package/dist/esm/engagement/track.d.ts +56 -0
- package/dist/esm/engagement/track.js +340 -0
- package/dist/esm/errors/send.d.ts +6 -0
- package/dist/esm/errors/send.js +70 -0
- package/dist/esm/errors/track.d.ts +4 -0
- package/dist/esm/errors/track.js +123 -0
- package/dist/esm/feedback/controls.d.ts +31 -0
- package/dist/esm/feedback/controls.js +280 -0
- package/dist/esm/feedback/index.d.ts +8 -0
- package/dist/esm/feedback/index.js +30 -0
- package/dist/esm/feedback/logs.d.ts +40 -0
- package/dist/esm/feedback/logs.js +188 -0
- package/dist/esm/feedback/send.d.ts +25 -0
- package/dist/esm/feedback/send.js +175 -0
- package/dist/esm/feedback/template.d.ts +2 -0
- package/dist/esm/feedback/template.js +159 -0
- package/dist/esm/feedback/ui.d.ts +55 -0
- package/dist/esm/feedback/ui.js +626 -0
- package/dist/esm/heatmap/index.d.ts +16 -0
- package/dist/esm/heatmap/index.js +17 -0
- package/dist/esm/heatmap/send.d.ts +13 -0
- package/dist/esm/heatmap/send.js +79 -0
- package/dist/esm/heatmap/track.d.ts +4 -0
- package/dist/esm/heatmap/track.js +374 -0
- package/dist/esm/index.d.ts +68 -0
- package/dist/esm/index.js +122 -0
- package/dist/esm/lifecycle.d.ts +14 -0
- package/dist/esm/lifecycle.js +534 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/remoteconfig/custom.d.ts +10 -0
- package/dist/esm/remoteconfig/custom.js +74 -0
- package/dist/esm/remoteconfig/evaluate.d.ts +24 -0
- package/dist/esm/remoteconfig/evaluate.js +166 -0
- package/dist/esm/remoteconfig/fetch.d.ts +24 -0
- package/dist/esm/remoteconfig/fetch.js +210 -0
- package/dist/esm/remoteconfig/index.d.ts +13 -0
- package/dist/esm/remoteconfig/index.js +85 -0
- package/dist/esm/remoteconfig/store.d.ts +18 -0
- package/dist/esm/remoteconfig/store.js +91 -0
- package/dist/esm/remotelog/gate.d.ts +11 -0
- package/dist/esm/remotelog/gate.js +48 -0
- package/dist/esm/remotelog/index.d.ts +25 -0
- package/dist/esm/remotelog/index.js +51 -0
- package/dist/esm/remotelog/logger.d.ts +28 -0
- package/dist/esm/remotelog/logger.js +136 -0
- package/dist/esm/remotelog/send.d.ts +13 -0
- package/dist/esm/remotelog/send.js +149 -0
- package/dist/esm/scheduler.d.ts +8 -0
- package/dist/esm/scheduler.js +74 -0
- package/dist/esm/types.d.ts +312 -0
- package/dist/esm/user/index.d.ts +33 -0
- package/dist/esm/user/index.js +170 -0
- package/dist/feedback.esm.min.js +3 -0
- package/dist/feedback.esm.min.js.map +1 -0
- package/dist/heatmap.esm.min.js +3 -0
- package/dist/heatmap.esm.min.js.map +1 -0
- package/dist/style.css +1 -0
- package/package.json +124 -7
- package/src/appticssdk.js +0 -3817
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @zoho_apptics/apptics-js-sdk v2.0.0-beta | (c) Zoho Corporation Private Limited | see LICENSE */
|
|
2
|
+
import{Q as e,_ as a,n,R as r,w as s,m as t,S as i,T as c,U as o,A as p,V as u,W as l,X as g,Y as f,Z as d,$ as A,z as b,B as k,a0 as T,a1 as m,a2 as E,a3 as S,a4 as v,a5 as y}from"./chunks/batch-BU_mTpm1.min.js";import{e as R,s as O,f as h,g as D,u as j,i as B,j as w,k as L,m as _,n as N,o as F,p as G,q as I,v as x,w as z,r as P}from"./chunks/logs-Bea5zUW_.min.js";export{U as UserBuilder}from"./chunks/logs-Bea5zUW_.min.js";const V=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function W(e){var a=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===a||/^(Object|Module|eval)\.?$/.test(a)?"App":a.slice(0,c)}function q(e){if(e instanceof Error){var a=e.name+": "+e.message;return e.stack&&-1!==e.stack.indexOf(e.message)?e.stack:a}if("string"==typeof e)return e;try{var n=JSON.stringify(e);return void 0===n?String(e):n}catch(a){return String(e)}}const C=t("AppticsLogger",function(e,a,n,r,s){if(h()){var t=[a].concat(n).map(q).join(" ");i.add({module:W(s),level:e,happenedat:r,exceptionlog:t,attempt:1,filename:s.filename,linenumber:s.linenumber}),D()}}),H=Object.freeze({1:"debug",2:"debug",3:"info",4:"warn",5:"error"});function K(e){return function(a,t,...i){try{var c=null==a?"":String(a).trim(),o=""===c?[t].concat(i):["["+c+"]",t].concat(i);!function(e,a){if(!0===s("show_logs")){var n=H[e]||"log";"undefined"!=typeof console&&"function"==typeof console[n]&&console[n].apply(console,a)}}(e,o),C(e,o[0],o.slice(1),n(),r(1))}catch(e){}}}const M={enable:t("AppticsLogger.enable",function(){O(!1!==!0)}),disable:t("AppticsLogger.disable",function(){O(!1)}),isEnabled:t("AppticsLogger.isEnabled",R),v:K(V.VERBOSE),d:K(V.DEBUG),i:K(V.INFO),w:K(V.WARN),e:K(V.ERROR)},Y={init:t("Apptics.init",B)},$=t("ready",P),J={addEvent:t("AppticsEvents.addEvent",d)},Q=t("AppticsScreenTracker.inScreen",y),X=t("AppticsScreenTracker.outScreen",v),Z={inScreen:function(e,a){if(!A(e))return Q(e,a,"",n()),"";var r=b();return Q(e,a,r,n()),r},outScreen:function(e){X(e,n())}},ee=t("AppticsApiTracker.endTrackApi",S),ae={startTrackApi:t("AppticsApiTracker.startTrackApi",f),endTrackApi:function(e,a,r){ee(e,a,r,n())},configure:t("AppticsApiTracker.configure",g)},ne=t("enableApiTracking",z),re=t("AppticsTrackError",L),se=t("enableGlobalErrorHandler",x),te=t("AppticsSetUser",w),ie=t("getUser",I),ce=t("setTrackingStatus",T),oe=t("getTrackingStatus",k),pe=t("flush",G),ue=t("addFeedbackLog",N),le=t("addDiagnosticsInfo",_),ge=t("enableDebug",E),fe=t("disableDebug",m),de=t("reset",F),Ae={Apptics:Y,AppticsEvents:J,AppticsScreenTracker:Z,AppticsApiTracker:ae,AppticsLogger:M,DefinedEvents:l,ApiTrackingBuilder:u,ready:$,enableDebug:ge,disableDebug:fe,enableApiTracking:ne,AppticsTrackError:re,enableGlobalErrorHandler:se,AppticsSetUser:te,getUser:ie,users:j,setTrackingStatus:ce,getTrackingStatus:oe,flush:pe,addFeedbackLog:ue,addDiagnosticsInfo:le,reset:de,AP_TRACKING_STATUS:p,AP_FEEDBACK_TYPE:o};var be;be=Y,"undefined"!=typeof window&&queueMicrotask(function(){!function(n){if(a._initialised)return!1;var r=e();r&&"object"==typeof r&&n.init(r)}(be)});export{o as AP_FEEDBACK_TYPE,p as AP_TRACKING_STATUS,u as ApiTrackingBuilder,Y as Apptics,ae as AppticsApiTracker,J as AppticsEvents,M as AppticsLogger,Z as AppticsScreenTracker,te as AppticsSetUser,re as AppticsTrackError,l as DefinedEvents,le as addDiagnosticsInfo,ue as addFeedbackLog,Ae as default,fe as disableDebug,ne as enableApiTracking,ge as enableDebug,se as enableGlobalErrorHandler,pe as flush,oe as getTrackingStatus,ie as getUser,$ as ready,de as reset,ce as setTrackingStatus,j as users};
|
|
3
|
+
//# sourceMappingURL=apptics.esm.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apptics.esm.min.js","sources":["../src/remotelog/logger.ts","../src/index.ts","../src/auto-init.ts"],"sourcesContent":[null,null,null],"names":["LOG_LEVEL","Object","freeze","VERBOSE","DEBUG","INFO","WARN","ERROR","functionName","site","name","String","fn","replace","trim","test","slice","LOG_FUNCTION_MAX","describe","value","Error","head","message","stack","indexOf","json","JSON","stringify","undefined","err","recordLine","guard","level","details","at","appLogEnabled","text","concat","map","join","consolelog_transactions","add","module","happenedat","exceptionlog","attempt","filename","linenumber","scheduleSend","CONSOLE_METHOD","tagged","tag","label","parts","args","getConfig","method","console","apply","show","nowMs","callSite","AppticsLogger","enable","setAppLogger","disable","isEnabled","appLoggerEnabled","v","d","i","w","e","Apptics","init","initImpl","ready","readyImpl","AppticsEvents","addEvent","trackEventImpl","inScreenGuarded","inScreenAt","outScreenGuarded","outScreenAt","AppticsScreenTracker","inScreen","screenName","properties","validateScreenName","id","getNewUUID","outScreen","endTrackApiGuarded","endTrackApiAt","AppticsApiTracker","startTrackApi","startTrackApiImpl","endTrackApi","responseCode","responseMessage","configure","configureApiTrackingImpl","enableApiTracking","enableApiTrackingImpl","AppticsTrackError","trackErrorImpl","enableGlobalErrorHandler","enableGlobalErrorHandlerImpl","AppticsSetUser","setUserImpl","getUser","getUserImpl","setTrackingStatus","setTrackingStatusImpl","getTrackingStatus","getTrackingStatusImpl","flush","flushImpl","addFeedbackLog","addFeedbackLogImpl","addDiagnosticsInfo","addDiagnosticsInfoImpl","enableDebug","enableDebugImpl","disableDebug","disableDebugImpl","reset","resetImpl","apptics","DefinedEvents","ApiTrackingBuilder","users","AP_TRACKING_STATUS","AP_FEEDBACK_TYPE","api","window","queueMicrotask","_ZAP","_initialised","opts","getSnippetOptions","autoInit"],"mappings":";4aA0BO,MAAMA,EAAYC,OAAOC,OAAO,CAAEC,QAAS,EAAGC,MAAO,EAAGC,KAAM,EAAGC,KAAM,EAAGC,MAAO,IASxF,SAASC,EAAaC,GAClB,IAAIC,EAAOC,OAAOF,EAAKG,IAAM,IAAIC,QAAQ,eAAgB,IAAIA,QAAQ,QAAS,IAAIC,OAClF,MAAa,KAATJ,GAAe,4BAA4BK,KAAKL,GAR/B,MAWdA,EAAKM,MAAM,EAAGC,EACzB,CAGA,SAASC,EAASC,GACd,GAAIA,aAAiBC,MAAO,CACxB,IAAIC,EAAOF,EAAMT,KAAO,KAAOS,EAAMG,QACrC,OAAOH,EAAMI,QAAgD,IAAvCJ,EAAMI,MAAMC,QAAQL,EAAMG,SAAkBH,EAAMI,MAAQF,CACpF,CACA,GAAqB,iBAAVF,EACP,OAAOA,EAEX,IACI,IAAIM,EAAOC,KAAKC,UAAUR,GAC1B,YAAgBS,IAATH,EAAqBd,OAAOQ,GAASM,CAChD,CAAE,MAAOI,GACL,OAAOlB,OAAOQ,EAClB,CACJ,CAuBA,MAAMW,EAAaC,EAAM,gBAjBzB,SAAgBC,EAAeV,EAAkBW,EAAoBC,EAAYzB,GAC7E,GAAK0B,IAAL,CAGA,IAAIC,EAAO,CAACd,GAASe,OAAOJ,GAASK,IAAIpB,GAAUqB,KAAK,KACxDC,EAAwBC,IAAI,CACxBC,OAAQlC,EAAaC,GACrBuB,MAAOA,EACPW,WAAYT,EACZU,aAAcR,EACdS,QAAS,EACTC,SAAUrC,EAAKqC,SACfC,WAAYtC,EAAKsC,aAErBC,GAXA,CAYJ,GAKMC,EAAgFhD,OAAOC,OAAO,CAChG,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,EAAG,OAAQ,EAAG,UAsBrD,SAASgD,EAAOlB,GACZ,OAAO,SAAUmB,EAAa7B,KAAqBW,GAC/C,IACI,IAAImB,EAAQD,QAAoC,GAAKxC,OAAOwC,GAAKrC,OAC7DuC,EAAkB,KAAVD,EAAe,CAAC9B,GAASe,OAAOJ,GAAW,CAAC,IAAMmB,EAAQ,IAAK9B,GAASe,OAAOJ,IAlBvG,SAAcD,EAAesB,GACzB,IAA+B,IAA3BC,EAAU,aAAd,CAGA,IAAIC,EAASP,EAAejB,IAAU,MACf,oBAAZyB,SAAsD,mBAApBA,QAAQD,IACjDC,QAAQD,GAAQE,MAAMD,QAASH,EAHnC,CAKJ,CAWYK,CAAK3B,EAAOqB,GAEZvB,EAAWE,EAAOqB,EAAM,GAAIA,EAAMrC,MAAM,GAAI4C,IAASC,EAAS,GAClE,CAAE,MAAOhC,GAET,CACJ,CACJ,CAgCO,MAAMiC,EAA+B,CACxCC,OAAQhC,EAAM,uBAAwB,WA7BtCiC,GAAoB,KA6BuC,EAAO,GAClEC,QAASlC,EAAM,wBA1BnB,WACIiC,GAAa,EACjB,GAyBIE,UAAWnC,EAAM,0BAA2BoC,GAC5CC,EAAGlB,EAAOlD,EAAUG,SACpBkE,EAAGnB,EAAOlD,EAAUI,OACpBkE,EAAGpB,EAAOlD,EAAUK,MACpBkE,EAAGrB,EAAOlD,EAAUM,MACpBkE,EAAGtB,EAAOlD,EAAUO,QCzHXkE,EAAU,CAEnBC,KAAM3C,EAAM,eAAgB4C,IAEnBC,EAAQ7C,EAAM,QAAS8C,GAGvBC,EAAgB,CACzBC,SAAUhD,EAAM,yBAA0BiD,IAMxCC,EAAkBlD,EAAM,gCAAiCmD,GACzDC,EAAmBpD,EAAM,iCAAkCqD,GAEpDC,EAA2D,CAKpEC,SAAU,SAAUC,EAAYC,GAC5B,IAAKC,EAAmBF,GAGpB,OADAN,EAAgBM,EAAYC,EAAY,GAAI5B,KACrC,GAGX,IAAI8B,EAAKC,IAET,OADAV,EAAgBM,EAAYC,EAAYE,EAAI9B,KACrC8B,CACX,EAEAE,UAAW,SAAUF,GACjBP,EAAiBO,EAAI9B,IACzB,GAGEiC,GAAqB9D,EAAM,gCAAiC+D,GAErDC,GAAqD,CAE9DC,cAAejE,EAAM,kCAAmCkE,GAExDC,YAAa,SAAUR,EAAIS,EAAcC,GAErCP,GAAmBH,EAAIS,EAAcC,EAAiBxC,IAC1D,EAEAyC,UAAWtE,EAAM,8BAA+BuE,IAKvCC,GAAoBxE,EAAM,oBAAqByE,GAE/CC,GAAoB1E,EAAM,oBAAqB2E,GAC/CC,GAA2B5E,EAAM,2BAA4B6E,GAE7DC,GAAiB9E,EAAM,iBAAkB+E,GACzCC,GAAUhF,EAAM,UAAWiF,GAC3BC,GAAoBlF,EAAM,oBAAqBmF,GAC/CC,GAAoBpF,EAAM,oBAAqBqF,GAC/CC,GAAQtF,EAAM,QAASuF,GAEvBC,GAAiBxF,EAAM,iBAAkByF,GAEzCC,GAAqB1F,EAAM,qBAAsB2F,GAQjDC,GAAc5F,EAAM,cAAe6F,GAEnCC,GAAe9F,EAAM,eAAgB+F,GACrCC,GAAQhG,EAAM,QAASiG,GAU9BC,GAAsB,CACxBxD,UACAK,gBACAO,uBACAU,qBACAjC,gBACAoE,gBACAC,qBACAvD,QACA+C,eACAE,gBACAtB,qBACAE,qBACAE,4BACAE,kBACAE,WACAqB,QACAnB,qBACAE,qBACAE,SACAE,kBACAE,sBACAM,SACAM,qBACAC,oBCnIE,IAA2BC,MDwIhB9D,ECvIS,oBAAX+D,QAGXC,eAAe,YAnBb,SAAmBF,GACrB,GAAIG,EAAKC,aACL,OAAO,EAEX,IAAIC,EAAOC,IACND,GAAwB,iBAATA,GAGbL,EAAI7D,KAAKkE,EACpB,CAWQE,CAASP,GACb"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @zoho_apptics/apptics-js-sdk v2.0.0-beta | (c) Zoho Corporation Private Limited | see LICENSE */
|
|
2
|
+
!function(){"use strict";const e=Object.freeze({USAGE_TRACKING_WITH_PII:1,USAGE_TRACKING_WITHOUT_PII:4,NO_TRACKING:-1}),t=Object.freeze({BUG:0,FEEDBACK:1,HELP:2,REPORT:3}),n=Object.freeze({SCREEN:"screen",SESSION:"session",EVENT:"event",API:"api",ERROR:"error",SUCCESS:"success",BROWSER:"Browser"}),r=Object.freeze({addversion:"app/addversion",regdevice:"device/add",reguser:"user/register",engagement:"engagement/add",error:"exception/error",feedback:"feedback/add",sdkconfig:"getsdkconfig",getupdates:"getupdates",consolelog:"log/add",heatmap:"heatmap/add"}),i=Object.freeze({addversion:"v2",regdevice:"v2",engagement:"v2",error:"v2",reguser:"v2",feedback:"v2",sdkconfig:"v2",getupdates:"v2",consolelog:"v2",heatmap:"v2"}),o=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),a=Object.freeze({REMOTE_CONFIG:"2",SESSION:"11",FEEDBACK:"12",CRASH:"13",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",transport:"XHR",track_link_timeout:300,cookie_expiration_days:365,storage_type:"localStorage",enable_batch_requests:!0,batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,auto_starts_batch:!0,mode:1,default_group_name:"default",default_optin_status:e.USAGE_TRACKING_WITHOUT_PII,enable_pageview_tracking:!1,save_referrer:!0,debug:!1,track_by_default:!0,ignore_do_not_track:!1,remote_log:!1,track_api:!1,track_screen:!0,show_logs:!1,track_session:!0,min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["serviceUrl","zak","identifier","appversion"]),u=Object.freeze({engagement:!0,error:!0,consolelog:!0}),l=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),f=Object.freeze({addversion:!0}),p=Object.freeze({serviceUrl:"base_domain",zak:"token"}),g=Object.freeze(["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"]),m={};function v(){return Math.round((new Date).getTime())}function h(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function _(e){return null==e||""===e}function k(e){return!!e&&"object"==typeof e&&0===Object.keys(e).length&&e.constructor===Object}function y(e,t){return JSON.stringify(e)===JSON.stringify(t)}function b(e,t){const n={};for(let r in e)t.includes(r)||(n[r]=e[r]);return n}function S(e){return JSON.parse(JSON.stringify(e))}function w(e){let t=0;return function e(n){if(null!==n&&"object"==typeof n)for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t+=2*r.length,e(n[r]));else"string"==typeof n?t+=2*n.length:"number"==typeof n?t+=8:"boolean"==typeof n&&(t+=4)}(e),t}function E(e,t){return-1!==e.indexOf(t)}function A(){var e=function(){for(var e=Date.now(),t=0;e==Date.now();)t++;return e.toString(16)+t.toString(16)},t=(screen.height*screen.width).toString(16);return e()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,n=navigator.userAgent,r=[],i=0;function o(e,t){var n,i=0;for(n=0;n<t.length;n++)i|=r[n]<<8*n;return e^i}for(e=0;e<n.length;e++)t=n.charCodeAt(e),r.unshift(255&t),r.length>=4&&(i=o(i,r),r=[]);return r.length>0&&(i=o(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const z={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:5996,_platform:n.BROWSER,_isanonrequired:!0,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_isGlobalErrorTracking:!0,_shouldTrack:!0,_engagementTracking:!0,_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartzEnabled:!0,_trackinfo:{}};function T(e){return z._config[e]}function O(e){return!("number"!=typeof e||!isFinite(e))&&(e<v()-24*T("batch_request_timeout")*60*60*1e3||e>v()+6e4)}const P={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},remoteLog:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),enableHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{}},I={filename:"",linenumber:0,fn:""},C=/([^\s(@]+):(\d+):(\d+)\)?$/;const D=/^at\s+(?:async\s+)?(.+?)\s+\(/,N=/^([^@\s]+)@/;function R(e){var t=D.exec(e)||N.exec(e);return t&&t[1]||""}function L(e){var t=e.trim(),n=C.exec(t);if(null===n)return null;var r,i,o,a=Number(n[2]);return isFinite(a)?{filename:(r=n[1]||"",i=r.split(/[?#]/)[0]||r,o=i.split("/"),(o[o.length-1]||i).slice(0,100)),linenumber:a,fn:R(t)}:null}function x(e,t){if(!e)return I;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var o=L(n[i]||"");if(null!==o&&!(r++<t))return o}return I}function q(e){try{return x((new Error).stack,e+1)}catch(e){return I}}const j="undefined"!=typeof console?console:null;function M(e){return function(...t){if(z._config.debug&&j)try{j[e].apply(j,t)}catch(n){!function(e,t,n){if(null!=e)if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===m)return}else for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t.call(n,e[o],o,e)===m)return}(t,function(t){j[e](t)})}}}const F={log:M("log"),warn:M("warn"),error:M("error"),info:M("info"),dir(e){z._config.debug&&j&&j.dir(e)}};function U(...e){j&&j.warn(...e)}function B(e,...t){F.error.apply(null,t),P.remoteLog(e,t.map(function(e){return e instanceof Error?e.stack||e.name+": "+e.message:"string"==typeof e?e:function(e){try{return JSON.stringify(e)||String(e)}catch(t){return String(e)}}(e)}).join(" "),function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n instanceof Error){var r=x(n.stack,0);if(r.linenumber>0)return r}}return q(2)}(t))}const H={"Apptics.init":!0,ready:!0,reset:!0,getUser:!0,getTrackingStatus:!0,sendFeedback:!0,addFeedbackLog:!0,addDiagnosticsInfo:!0,"AppticsLogger.enable":!0,"AppticsLogger.disable":!0,"AppticsLogger.isEnabled":!0,"AppticsApiTracker.configure":!0,"AppticsApiTracker.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setFallbackWithOfflineValue":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,enableDebug:!0,disableDebug:!0},V={"AppticsEvents.addEvent":!0,"AppticsScreenTracker.inScreen":!0,"AppticsScreenTracker.outScreen":!0,"AppticsApiTracker.endTrackApi":!0,AppticsTrackError:!0,AppticsSetUser:!0,flush:!0,AppticsLogger:!0,sendFeedback:!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function G(e){return 0===e.indexOf("Apptics")?e:"apptics."+e}var Z=!1;function W(e,t){const n=function(...r){if(z._initialised||!V[e]||Z||(Z=!0,U(G(e)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!z._initialised||z._ready||H[e])try{return t(...r)}catch(t){return U(G(e)+" failed:",t),void B(e,t)}else z._pending.push(function(){n(...r)})};return n}const J="apptics",K=["engagements","errors","logs","consolelogs","heatmaps"],Y=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions",heatmaps:"apptics-heatmap-transactions"});function $(e){return Array.isArray(e)?e:[]}function X(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function Q(e){try{const t=localStorage.getItem(e);return null===t||""===t?null:JSON.parse(t)}catch(t){return F.warn("apptics: could not read "+e+", treating it as empty"),null}}function ee(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(t){F.warn("apptics: could not write "+e+": "+String(t))}}let te=0;function ne(){const e=1e3*v();return te=e>te?e:te+1,te}function re(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function ie(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}function oe(e,t,n){const r=String(t.id),i=e.get(r);i.onsuccess=function(){const o=i.result;o&&n||e.put({id:r,seq:o?o.seq:ne(),type:t.type,item:t})}}function ae(e){return e.objectStoreNames.contains("settings")&&K.every(function(t){return e.objectStoreNames.contains(t)})}function se(e=indexedDB,t=3e3){return ce(e,t).then(function(n){return ae(n)?n:(F.warn('apptics: the "'+J+'" database is missing its stores, recreating it'),n.close(),function(e){return new Promise(function(t){var n=e.deleteDatabase(J);n.onsuccess=function(){t()},n.onerror=function(){t()},n.onblocked=function(){t()}})}(e).then(function(){return ce(e,t)}).then(function(e){if(!ae(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function ce(e,t){return new Promise(function(n,r){let i=!1;const o=function(e){i||(i=!0,clearTimeout(a),r(e))},a=setTimeout(function(){o(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(J,3)}catch(e){return void o(e)}s.onupgradeneeded=function(){const e=s.result;e.objectStoreNames.contains("settings")||e.createObjectStore("settings"),K.forEach(function(t){e.objectStoreNames.contains(t)||e.createObjectStore(t,{keyPath:"id"}).createIndex("seq","seq")})},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(a),s.result.onversionchange=function(){F.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){o(s.error)},s.onblocked=function(){F.warn("apptics: waiting for another tab to release the database")}})}function de(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([re(t.getAllKeys()),re(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(e,r){n[String(e)]=t[r]}),n})},putSetting(t,n){const r=e.transaction("settings","readwrite");return r.objectStore("settings").put(n,t),ie(r)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),ie(t)},queueAll:t=>re(e.transaction(t,"readonly").objectStore(t).index("seq").getAll()).then(function(e){return e.map(function(e){return e.item})}),queuePut(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){oe(i,e,!1)}),ie(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){i.delete(e)}),ie(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),ie(n)},importAll(t,n){const r=e.transaction(["settings"].concat(K),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(e){const n=i.get(e);n.onsuccess=function(){void 0===n.result&&i.put(t[e],e)}}),K.forEach(function(e){const t=r.objectStore(e);n[e].forEach(function(e){oe(t,e,!0)})}),ie(r)}}}function ue(){const e=function(e){return F.warn("apptics: IndexedDB unavailable ("+String(e)+"), using localStorage"),function(){try{const e="__apptics_probe__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(e){return!1}}()?{kind:"localstorage",loadSettings:()=>Promise.resolve(X(Q(Y.settings))),putSetting(e,t){const n=X(Q(Y.settings));return n[e]=t,ee(Y.settings,n),Promise.resolve()},clearSettings:()=>(ee(Y.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve($(Q(Y[e]))),queuePut(e,t){const n=$(Q(Y[e]));return t.forEach(function(e){const t=n.findIndex(function(t){return t.id===e.id});-1===t?n.push(e):n[t]=e}),ee(Y[e],n),Promise.resolve()},queueDelete(e,t){const n=$(Q(Y[e])).filter(function(e){return-1===t.indexOf(e.id)});return ee(Y[e],n),Promise.resolve()},queueClear:e=>(ee(Y[e],[]),Promise.resolve())}:null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?se(t).then(de,e):Promise.resolve(e("not supported"))}var le=null,fe={};function pe(e,t,n){return ge().then(function(e){return e?n(e):t}).catch(function(n){return F.warn("apptics: storage "+e+" failed: "+String(n)),t})}function ge(){return le||(le=ue().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(Y.settings),engagements:localStorage.getItem(Y.engagements),errors:localStorage.getItem(Y.errors),logs:localStorage.getItem(Y.logs),consolelogs:localStorage.getItem(Y.consolelogs),heatmaps:null}}catch(e){return Promise.resolve()}if(null===t.settings&&null===t.engagements&&null===t.errors&&null===t.logs&&null===t.consolelogs)return Promise.resolve();var n=function(e){try{return null===e?null:JSON.parse(e)}catch(e){return null}},r={engagements:$(n(t.engagements)),errors:$(n(t.errors)),logs:$(n(t.logs)),consolelogs:$(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.logs,r.consolelogs).forEach(function(e){e.id||(e.id=A())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i(X(n(t.settings)),r)}).then(function(){Object.values(Y).forEach(function(e){try{localStorage.removeItem(e)}catch(e){}}),F.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){F.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return fe=Object.assign({},t,fe),e}):null}).catch(function(e){return F.warn("apptics: storage unavailable: "+String(e)),null})),le}function me(e){let t=0;const n=[];for(const r of e.slice(0,T("batch_size"))){const e=w(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ve(e){const t={name:e,all:()=>pe("read "+e,[],function(t){return t.queueAll(e)}),payload:()=>t.all().then(me),add:t=>(t.id||(t.id=A()),O(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(t))?(F.warn("apptics: dropping a "+e+" item older than "+T("batch_request_timeout")+" days"),Promise.resolve()):pe("add "+e,void 0,function(n){return n.queuePut(e,[t])})),update:t=>pe("update "+e,void 0,function(n){return n.queuePut(e,[t])}),remove(t){const n=(t||[]).map(function(e){return String(e.id)});return pe("remove "+e,void 0,function(t){return t.queueDelete(e,n)})},clear:()=>pe("clear "+e,void 0,function(t){return t.queueClear(e)})};return t}const he=ve("engagements"),_e=ve("errors"),ke=ve("logs"),ye=ve("heatmaps"),be=ve("consolelogs");function Se(e,t){fe[e]=void 0===t?void 0:S(t),pe("save "+e,void 0,function(t){return t.putSetting(e,fe[e])})}const we={all:()=>S(fe),item(e){const t=fe[e];return void 0===t?void 0:S(t)},add(e,t){Se(e,t)},clear(){fe={},pe("clear settings",void 0,function(e){return e.clearSettings()})}},Ee={_tracking_status:"tracking_status",all:()=>we.all(),opt_in_status:()=>fe[Ee._tracking_status]||e.USAGE_TRACKING_WITHOUT_PII,update_status(t){z._devicestatus=t,z._isanonrequired=Ee.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&z._isanonrequired,Se(Ee._tracking_status,t)}};function Ae(e){var t=fe.device_info;return null!=t&&""!==t&&void 0!==t[e]&&null!==t[e]&&""!==t[e]?S(t[e]):null}function ze(){return!0===z._config.debug_api&&!Te()}function Te(){return z._debugUntil>0&&v()>z._debugUntil}function Oe(){!0===z._config.debug_api&&(z._debugUntil=v()+s)}var Pe=null;function Ie(e){z._config.debug_api=e,z._debugUntil=e?v()+s:0,F.log("apptics: debug mode "+(e?"on":"off"))}function Ce(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function De(){return window.navigator.onLine?0:-1}function Ne(){try{var e=navigator.getBattery;return"function"!=typeof e?Promise.resolve(null):e.call(navigator).then(function(e){var t=e&&"number"==typeof e.level?e.level:-1;return t>=0&&t<=1?Math.round(100*t):null},function(){return null})}catch(e){return Promise.resolve(null)}}function Re(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return E(e,"portrait-primary")?0:E(e,"landscape-primary")?1:E(e,"landscape-secondary")?2:E(e,"portrait-secondary")?3:-1}function Le(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":/Mac/i.test(e)?"Mac":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome":""}function xe(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||E(e," OPR/")?E(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":E(e,"IEMobile")||E(e,"WPDesktop")?"Internet Explorer Mobile":E(e,"SamsungBrowser/")?"Samsung Internet":E(e,"Edge")||E(e,"Edg/")?"Microsoft Edge":E(e,"FBIOS")?"Facebook Mobile":E(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":E(e,"CriOS")?"Chrome iOS":E(e,"UCWEB")||E(e,"UCBrowser")?"UC Browser":E(e,"FxiOS")?"Firefox iOS":E(t,"Apple")?E(e,"Mobile")?"Mobile Safari":"Safari":E(e,"Android")?"Android Mobile":E(e,"Konqueror")?"Konqueror":E(e,"Firefox")?"Firefox":E(e,"MSIE")||E(e,"Trident/")?"Internet Explorer":E(e,"Gecko")?"Mozilla":""}function qe(){var e=xe(),t=navigator.userAgent;if("Ulaa"===e&&"object"==typeof ulaa)return ulaa.getVersion();var n={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edg\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,Brave:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/}[e];if(void 0===n)return"";var r=t.match(n);return r?parseFloat(r[r.length-2]):""}function je(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<g.length;t++)if(-1!==e.indexOf(g[t]))return!0;return!1}(navigator.userAgent||"")}function Me(){return!z._ignoreDnt&&(t=window.navigator||{},n=[!0,1,"1","yes"],!![t.doNotTrack,t.msDoNotTrack,window.doNotTrack].some(function(e){return E(n,e)})&&(F.warn("hasDoNotTrackEnabled: DoNotTrack is enabled"),Ge(e.NO_TRACKING),F.log("hasDoNotTrackEnabled: Setting tracking status to NO_TRACKING"),!0));var t,n}function Fe(){if(Me())return F.warn('opt_in_status: It seems "Do Not Track" is enabled in this browser. Please enable tracking in the browser settings to continue tracking.'),e.NO_TRACKING;var t=Ee.opt_in_status();return-1==t&&F.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),t}function Ue(){return Fe()>-1&&z._shouldTrack}function Be(e){return z._token?!je()&&Ue():(F.warn("apptics."+e+": You must call apptics.init() first"),!1)}function He(e){return!!Be(e)&&(!!z._engagementTracking||(F.log("apptics."+e+": engagement tracking is turned off by the server"),!1))}function Ve(e){return!!Be(e)&&(!!z._heatmapTracking||(F.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function Ge(t){_(t)?F.warn("setTrackingStatus: trackingStatus is Empty"):Ee.opt_in_status()!=t&&(Ee.update_status(t),z._devicestatus=Ee.opt_in_status(),z._isanonrequired=Ee.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&z._isanonrequired,Ee.opt_in_status()!=e.NO_TRACKING&&(F.log("setTrackingStatus: Updating device info with new tracking status"),P.updateDevice(z._device_info).then(function(e){h(e)?(F.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),F.dir(e.data)):F.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){F.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))})))}function Ze(){return Fe()}const We="sendstate";function Je(){var e=we.item(We);return e&&"object"==typeof e?e:{}}function Ke(e){var t=Je()[e];return t&&"object"==typeof t?{attempt:Number(t.attempt)||1,firstattempttime:Number(t.firstattempttime)||0,lst:Number(t.lst)||0}:{attempt:1,firstattempttime:0,lst:0}}function Ye(e,t){var n=Je();n[e]=t,we.add(We,n)}function $e(e){if(!l[e])return{};var t=Ke(e),n=v();(t.attempt<=1||0===t.firstattempttime)&&(t.attempt=1,t.firstattempttime=n);var r={attempt:String(Math.min(t.attempt,5)),firstattempttime:t.firstattempttime};return t.lst>0&&(r.lst=t.lst),Ye(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function Xe(e,t,n,r){return new Promise((i,o)=>{let a=new XMLHttpRequest;a.open(t,e),r&&Object.keys(r).forEach(e=>{a.setRequestHeader(e,r[e])}),a.withCredentials=!1,a.timeout=3e4,a.onreadystatechange=function(){4===a.readyState&&(200==a.status?i(a.responseText):o(a.statusText))},a.onerror=function(){o("makeRequest: Network Error")},a.ontimeout=function(){o("makeRequest: timed out after 30000 ms")},a.send(n)})}function Qe(e){return"zak"==e?z._defaultoptions.zak:"uuid"==e?z._uuid:"apid"==e?z._apid||Ae(e):"mapid"==e?z._mapid||Ae(e):""}function et(e){var t="",n=z._device_info.appversionid,r=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return _(n)||(t+="&appversionid="+encodeURIComponent(String(n))),_(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function tt(e,t){if(!u[e])return"";var n=T("device_name"),r=_(n)?ze()?function(){var e=z._device_info,t=_(e.browser)?"":String(e.browser),n=_(e.browserversion)?"":String(e.browserversion),r=_(e.osversion)?"":String(e.osversion),i=""===t?"":""===n?t:t+" "+n;return""===r?i:""===i?r:i+" on "+r}():"":String(n);return""===r?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(r.slice(0,100)))}function nt(t,n){var o=z._defaultoptions.base_domain+T("endpoint")+i[t]+"/"+(f[t]?"":z._defaultoptions.zsoid+"/"+z._defaultoptions.projectID+"/")+((function(e){return ze()&&!0===u[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return"?version="+encodeURIComponent(z._defaultoptions.appversion)+"&platform="+encodeURIComponent(z._platform)+"&identifier="+encodeURIComponent(z._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired="+z._isanonrequired+"&devicestatus="+z._devicestatus,_(z._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(z._device_info.deviceid))),n+et(n);var i="sdkconfig"!=t;if(i){if(_(z._device_info.deviceid))return P.refreshDeviceInfo(),n+et(n);n="?deviceid="+encodeURIComponent(String(z._device_info.deviceid))}if("feedback"===t){var o=P.feedbackUser();return o&&(n+="&userid="+encodeURIComponent(String(o.userid)),_(o.groupid)||(n+="&customergroupid="+encodeURIComponent(String(o.groupid)))),n+et(n)}return"reguser"!=t&&i&&Fe()==e.USAGE_TRACKING_WITH_PII&&(z._user_info.hasOwnProperty("userid")&&!_(z._user_info.userid)&&(n+="&userid="+encodeURIComponent(String(z._user_info.userid))),z._user_info.hasOwnProperty("groupid")&&!_(z._user_info.groupid)&&(n+="&customergroupid="+encodeURIComponent(String(z._user_info.groupid)))),n+=tt(t,n),n+et(n)}(t);if(!n)return o;var a=-1===o.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(e){void 0!==n[e]&&null!==n[e]&&""!==n[e]&&(o+=a+e+"="+encodeURIComponent(String(n[e])),a="&")}),o}function rt(){return{apid:Qe("apid"),mapid:Qe("mapid")}}const it={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function ot(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!_(n)&&!0===it[String(n)]}function at(e,t,n){var r=JSON.parse(n);if(h(r))return function(e){l[e]&&Ye(e,{attempt:1,firstattempttime:0,lst:v()})}(e),function(e,t){var n=t.data;n&&!_(n.req_id)&&F.log(e+": req_id "+String(n.req_id)+(_(n.path)?"":", path "+String(n.path))+(_(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!_(t.error_code)?String(t.error_code):String(t?t.result:n),i=new Error(e+": "+r);return t&&(i.serverResult=t),i}(t,r,n);return Promise.reject(i)}function st(e,t,n,r,i){return Xe(nt(e,Object.assign($e(e),{})),T("method"),t,n).then(function(t){return at(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var ct=0;function dt(e,t,n,r,i){var o=function(e){if(null==e)return 0;if("string"==typeof e)return"function"==typeof TextEncoder?(new TextEncoder).encode(e).length:3*e.length;var t=e;return Number(t.size||t.byteLength||0)}(t);if("function"==typeof fetch&&ct+o>61440)return F.log(r+": "+o+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var a=nt(e,Object.assign($e(e),{}));if("function"==typeof fetch){var s;try{s=fetch(a,{method:T("method"),headers:Object.assign({"content-type":"text/plain"},n),body:t,keepalive:!0,credentials:"omit"})}catch(e){return Promise.reject(r+": keepalive send not accepted: "+String(e))}ct+=o;var c=function(){ct=Math.max(0,ct-o)};return s.then(function(t){if(c(),!t||!0!==t.ok){var n=t?String(t.status):"";return Promise.reject(r+": "+n)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return _(t)?at(e,r,JSON.stringify({result:"success"})):at(e,r,t)})},function(e){return c(),Promise.reject(r+": "+String(e))})}return Xe(a,T("method"),t,n).then(function(t){return at(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function ut(e){return je()?Promise.reject(e+": apptics is disabled for this client"):null}function lt(e){return 0==navigator.onLine?(F.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function ft(){return{frameworkid:z._device_info.frameworkid||Ae("frameworkid"),aaid:z._device_info.aaid||Ae("aaid"),apid:z._device_info.apid||Ae("apid"),appversionid:z._device_info.appversionid||Ae("appversionid"),modelid:z._device_info.modelid||Ae("modelid"),appreleaseversionid:z._device_info.appreleaseversionid||Ae("appreleaseversionid"),osversionid:z._device_info.osversionid||Ae("osversionid"),timezoneid:z._device_info.timezoneid||Ae("timezoneid"),platformid:z._device_info.platformid||Ae("platformid"),devicetypeid:z._device_info.devicetypeid||Ae("devicetypeid")}}function pt(e){return _(Qe("apid"))&&_(Qe("mapid"))?(P.refreshDeviceInfo(),Promise.reject(e+": You must call apptics.init() first")):null}const gt="registerAppVersion",mt="app_version_info",vt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var ht=null;function _t(){var e=we.item(mt);return e&&"object"==typeof e?e:{}}const kt=["aaid","portalid","projectid","apid","mapid","appversionid"];function yt(e){return kt.filter(function(t){return _(e[t])})}function bt(e){vt.forEach(function(t){_(e[t])||(z._device_info[t]=e[t])}),_(e.aaid)||(z._defaultoptions.aaid=e.aaid),_(e.portalid)||(z._defaultoptions.zsoid=String(e.portalid)),_(e.projectid)||(z._defaultoptions.projectID=String(e.projectid)),_(e.apid)||(z._apid=String(e.apid)),_(e.mapid)||(z._mapid=String(e.mapid))}function St(){if(0===yt(e=_t()).length&&e.appversion===z._defaultoptions.appversion&&e.identifier===z._defaultoptions.identifier&&e.serviceUrl===z._defaultoptions.serviceUrl)return bt(_t()),F.log(gt+": reusing the ids stored for "+z._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==ht)return ht;var t=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return 0===t&&U(gt+": this build has no registered framework id; build the package with npm pack"),_(t)||_(z._defaultoptions.identifier)||_(z._defaultoptions.zak)?(U(gt+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):ht=st("addversion","",{zak:Qe("zak")},gt).then(function(e){if(!h(e)||!e.data)return U(gt+": the server did not return the app ids"),!1;var t=e.data,n=yt(t);if(n.length>0)return U(gt+": the answer has no "+n.join(", ")),!1;bt(t);var r={appversion:z._defaultoptions.appversion,identifier:z._defaultoptions.identifier,serviceUrl:z._defaultoptions.serviceUrl};return vt.forEach(function(e){_(t[e])||(r[e]=t[e])}),we.add(mt,r),F.log(gt+": registered "+z._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return U(gt+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return ht=null,e})}const wt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Et=["screenheight","screenwidth","donottrackenabled","platformid"];function At(e){var t={};return wt.forEach(function(n){var r=e[n],i=-1!==Et.indexOf(n);t[n]=_(r)?i?0:"":r}),JSON.stringify(t)}const zt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Tt(e){var t={};return zt.forEach(function(n){t[n]=e?e[n]:void 0}),t}function Ot(){var e,t,n=we.item("device_info");z._device_info={osversion:(t=navigator.userAgent,/Windows/i.test(t)?/Phone/.test(t)||/WPDesktop/.test(t)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(t)?"iOS":/Android/.test(t)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(t)?"BlackBerry":/Mac/i.test(t)?"Mac OS X":/Linux/.test(t)?"Linux":/CrOS/.test(t)?"Chrome OS":""),browser:xe(),browserversion:String(qe()),donottrackenabled:Me()?1:0,devicetype:Le(),screenheight:screen.height,screenwidth:screen.width,referrer:(e=String(window.location.href||"").split(window.location.pathname),e.length>=2?e[1].length>500?e[1].substring(0,500):e[1]:""),connectionType:Ce(),referringdomain:window.location.hostname||"",deviceid:Ae("deviceid"),anonymousid:Ae("anonymousid"),frameworkid:z._frameworkID,mapid:Ae("mapid"),aaid:Ae("aaid"),apid:Ae("apid"),appversionid:Ae("appversionid"),platformid:Ae("platformid"),devicetypeid:Ae("devicetypeid"),osversionid:Ae("osversionid"),timezoneid:Ae("timezoneid"),modelid:Ae("modelid"),appreleaseversionid:Ae("appreleaseversionid"),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},bt(_t()),we.add("device_info",z._device_info),function(e,t){var n=void 0!==t?t:we.item("device_info")||{};null==e.deviceid||null==e.frameworkid||null==e.anonymousid?(e.frameworkid=z._frameworkID,F.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=ut(e);if(t)return t;if(!z._token)return F.warn(e+": You must call apptics.init() first"),Promise.reject(e+": You must call apptics.init() first");var n=lt(e);if(n)return n;if(z._device_info.deviceid&&z._device_info.anonymousid)return Promise.resolve(z._device_info);return new Promise((t,n)=>{if(z._regDeviceSending)return z._regDeviceResolve.push(t),void z._regDeviceReject.push(n);z._regDeviceSending=!0,st("regdevice",At(z._device_info),{zak:Qe("zak"),uuid:Qe("uuid"),...rt()},e).then(function(e){It(e.data||{}),Dt(!0,e),t(e),qt()}).catch(function(e){Dt(!1,e),n(e)})})}().then(function(e){h(e)?(F.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),F.dir(e.data)):F.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){F.log("addOrUpdateDeviceID: Error registering the device: "+e)})):_(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!t.hasOwnProperty(n))return!1;for(let n in e)if(!y(e[n],t[n]))return!1;return!0}(Tt(e),Tt(n))||(F.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),F.dir(Tt(e)),Nt(e).catch(function(e){F.log("addOrUpdateDeviceID: Error updating the device: "+e)}))}(z._device_info,n)}const Pt=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function It(e){Pt.forEach(function(t){_(e[t])||(z._device_info[t]=e[t])}),_(e.apid)||(z._apid=e.apid),_(e.mapid)||(z._mapid=e.mapid),we.add("device_info",z._device_info)}function Ct(){return z._regDeviceSending?new Promise(function(e){z._regDeviceResolve.push(function(){e()}),z._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Dt(e,t){var n=e?z._regDeviceResolve:z._regDeviceReject;z._regDeviceSending=!1,z._regDeviceResolve=[],z._regDeviceReject=[],n.forEach(function(e){e(t)})}function Nt(e){var t="updateDeviceWithApptics",n=ut(t)||lt(t);return n||st("regdevice",At(e),{zak:Qe("zak"),uuid:Qe("uuid"),...rt()},t).then(function(e){return It(e.data||{}),e})}function Rt(){var e="getUpdatesFromServer",t=lt(e)||pt(e);return t||st("sdkconfig","",rt(),e).then(function(e){var t=e.data||{};return xt(t),we.add("trackinfo",z._trackinfo),F.log("getUpdatesFromServer: "+JSON.stringify(z._trackinfo)),t})}function Lt(e,t){var n=e[t];return!n||"object"!=typeof n||!1!==n.enabled}function xt(e){var t=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},n=Object.keys(t).length>0;if(e.hasOwnProperty("tracking_enabled"))z._shouldTrack=!1!==e.tracking_enabled;else{var r=!(e.hasOwnProperty("versionarchivestatus")&&!_(e.versionarchivestatus))||e.versionarchivestatus,i=!(e.hasOwnProperty("customergrouptracking")&&!_(e.customergrouptracking))||e.customergrouptracking;z._shouldTrack=r||!i}n?(z._engagementTracking=Lt(t,a.SESSION),z._errorTracking=Lt(t,a.CRASH),z._heatmapTracking=Lt(t,a.HEATMAP),z._remoteLoggerEnabled=Lt(t,a.REMOTE_LOGGER),z._feedbackEnabled=Lt(t,a.FEEDBACK),z._remoteConfigEnabled=Lt(t,a.REMOTE_CONFIG)):(z._engagementTracking=!1!==e.engagementtracking,z._errorTracking=!1!==e.errortracking,z._heatmapTracking=!1!==e.heatmaptracking,z._remoteLoggerEnabled=!1!==e.remoteloggerenabled,z._feedbackEnabled=!1!==e.feedbackenabled);var o=e.quartz&&"object"==typeof e.quartz?e.quartz:{};z._quartzEnabled=o.hasOwnProperty("quartz_enabled")?!1!==o.quartz_enabled:!1!==e.quartzenabled,"number"==typeof e.next_check_after&&e.next_check_after>0&&(z._nextConfigCheck=e.next_check_after),z._trackinfo={engagementtracking:z._engagementTracking,errortracking:z._errorTracking,heatmaptracking:z._heatmapTracking,remoteloggerenabled:z._remoteLoggerEnabled,feedbackenabled:z._feedbackEnabled,quartzenabled:z._quartzEnabled,shouldtrack:z._shouldTrack,next_check_after:z._nextConfigCheck}}function qt(){_(Qe("apid"))&&_(Qe("mapid"))||Rt().catch(function(e){F.log(e)})}function jt(e,t){return _(e)?Promise.resolve():(z._current_screen&&z._current_screen.id===e&&!z._current_screen.endtime&&(z._current_screen=Object.assign({},z._current_screen,{endtime:t})),he.all().then(function(r){var i=r.filter(function(t){return t.type==n.SCREEN&&t.id===e&&0===t.endtime})[0];if(i)return he.update(Object.assign({},i,{endtime:Math.max(t,i.starttime)}))}))}function Mt(){var e=z._current_screen;return e&&e.id?jt(e.id,v()):Promise.resolve()}function Ft(e,t){return he.all().then(function(r){return r.filter(function(t){return t.type==n.SCREEN&&0===t.endtime&&t.sessionstarttime===e.starttime}).reduce(function(e,n){return e.then(function(){return he.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function Ut(){return!1===T("track_session")}function Bt(e){if(!He("trackSession"))return Promise.resolve();if(e&&"object"!=typeof e)return B(o.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=he.add(e);return F.log("apptics.trackSession("+JSON.stringify(e||{})+")"),F.dir(e),t}function Ht(){var e=Gt();return he.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e})[0];if(r)return r}return function(e,t){return t.filter(function(t){return t.type==e&&0===t.endtime}).sort(function(e,t){return t.starttime-e.starttime})[0]}(n.SESSION,t)})}P.updateDevice=Nt,P.refreshDeviceInfo=Ot;const Vt="apptics-session";function Gt(){try{return sessionStorage.getItem(Vt)||""}catch(e){return""}}const Zt="hadsession";var Wt=null,Jt=null;function Kt(){null!==Jt&&(clearTimeout(Jt),Jt=null)}function Yt(){if(!Wt)return Promise.resolve();var e=Wt;return Wt=null,Kt(),e.firstsession&&we.add(Zt,!0),Bt(e)}function $t(e){z._current_session={id:A(),type:n.SESSION,starttime:e,endtime:0,edge:Ce(),orientation:Re(),firstsession:_(we.item(Zt)),networkstatus:De(),lastactivetime:e};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";_(r)||(z._current_session.ram=r),function(e){try{sessionStorage.setItem(Vt,e)}catch(e){}}(z._current_session.id);var i=Number(T("min_session_duration"));return i>0?(Wt=z._current_session,Kt(),Jt=setTimeout(function(){Jt=null,Yt()},i),Promise.resolve()):function(e){e.firstsession&&we.add(Zt,!0);return Bt(e)}(z._current_session)}function Xt(){var e=v();return Wt&&(F.log("session: dropped, shorter than the minimum with nothing tracked in it"),Wt=null,Kt(),1)?Promise.resolve():Ht().then(function(t){if(t&&0===t.endtime){var n=Object.assign({},t,{endtime:e,lastactivetime:e});return z._current_session=n,F.log("endCurrentSession: closing the session opened at "+n.starttime),he.update(n).then(function(){return Ft(n,e)})}})}function Qt(){if(!z._token)return B(o.SESSION,"checkAndUpdateSession: You must call apptics.init() first"),Promise.resolve();if(je())return Promise.resolve();if(Ut())return Promise.resolve();var e=v();return function(){var e=v()-60*z.inactiveduration*1e3,t=Gt();return he.all().then(function(r){var i=r.filter(function(r){return r.type==n.SESSION&&0===r.endtime&&r.id!==t&&r.lastactivetime<e});return i.length?(F.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return he.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return Ft(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(Ht).then(function(t){if(!t||0!==t.endtime)return $t(e);if(z._current_session=t,e-t.lastactivetime>1e3*z.inactiveduration*60){F.log("checkAndUpdateSession: User is inactive for the past "+z.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return F.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),F.dir(n),he.update(n).then(function(){return Ft(n,n.endtime)}).then(function(){return $t(e)})}return F.log("checkAndUpdateSession: User is back before "+z.inactiveduration+" minutes so updating the lastactivitytime - "+e),en()})}function en(){if(Ut())return Promise.resolve();var e=v();return Wt?(Wt.lastactivetime=e,z._current_session=Wt,Promise.resolve()):Ht().then(function(t){if(t){F.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n=Object.assign({},t,{lastactivetime:e});return z._current_session=n,he.update(n)}})}const tn=/^ap_/i;function nn(e){if(!e||""===e)return F.warn("validateEventOrGroup: Invalid event or group name"),!1;return tn.test(e)?(F.warn('validateEventOrGroup: "'+e+'" starts with ap_, which is reserved for defined events'),!1):/^[a-zA-Z][a-zA-Z0-9_]{0,99}$/.test(e)}const rn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function on(e){if(_(e)||k(e))return{};var t=e,n={},r={},i=[],o=[],a=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(e){if(!rn.test(e)||tn.test(e))return F.warn("validateJSON: dropped the property '"+e+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),o.push(e.substring(0,50)),void s(103);var i=function(e){if("number"==typeof e&&isFinite(e))return{value:e,type:"Number"};if("boolean"==typeof e)return{value:e?1:0,type:"Boolean"};if("string"==typeof e)return{value:e,type:"String"};var t;try{t=void 0===e?"undefined":JSON.stringify(e)}catch(n){t=String(e)}return{value:void 0===t?String(e):t,type:"String"}}(t[e]);if(String(i.value).length>250)return F.warn("validateJSON: dropped the property '"+e+"': its value is longer than 250 characters"),a.push(e),void s(104);if(Object.keys(n).length>=24)return F.warn("validateJSON: dropped the property '"+e+"': at most 24 properties"),void s(102);var c=Object.assign({},n);if(c[e]=i.value,JSON.stringify(c).length>7666)return F.warn("validateJSON: dropped the property '"+e+"': properties are at most 7666 characters in all"),void s(101);n[e]=i.value,r[e]=i.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:o,valuekeys:a}}}function an(e){const t={},n={},r=[],i={101:[],102:[],103:[],104:[]},o=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let s=0;const c=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],d=["engagement_score","date_of_birth"];for(const[r,u]of Object.entries(e))if(s++,"string"!=typeof r||r.length>50||!o.test(r))i[103].push(r);else if(c.includes(r)){if("string"!=typeof u||u.length>255){i[103].push(r);continue}t[r]=u,n[r]="String"}else if("email_address"!==r)if(d.includes(r)){if("number"!=typeof u||!Number.isFinite(u)){i[103].push(r);continue}t[r]=u,n[r]="Number"}else if("boolean"==typeof u)t[r]=u,n[r]="Boolean";else if("string"==typeof u){if(u.length>255){i[103].push(r);continue}t[r]=u,n[r]="String"}else{if("number"!=typeof u){i[104].push(r);continue}if(!Number.isFinite(u)){i[104].push(r);continue}t[r]=u,n[r]="Number"}else{if("string"!=typeof u||u.length>255||!a.test(u)){i[103].push(r);continue}t[r]=u,n[r]="String"}s>45&&(i[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(i[101]=Object.keys(e));for(const e of[101,102,103,104])i[e].length>0&&r.push({code:e,keys:i[e]});return{data:t,datatype:n,message:r}}function sn(e){if(!e||""===e)return F.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:]{0,99}$/.test(e)}function cn(e,t){var n=[];return e.forEach(function(e){if("string"==typeof e){var r=e.trim();""!==r&&n.push(t?r.toLowerCase():r)}}),n}function dn(e){return"."===e.charAt(0)?e:"."+e}class un{constructor(){this.rules={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0}}ignoreDomains(...e){return this.rules.ignoreDomains.push(...cn(e,!0)),this}allowOnlyDomains(...e){return this.rules.allowOnlyDomains.push(...cn(e,!0)),this}allowOnlyTLDs(...e){return this.rules.allowOnlyTLDs.push(...cn(e,!0).map(dn)),this}ignoreTLDs(...e){return this.rules.ignoreTLDs.push(...cn(e,!0).map(dn)),this}ignoreDomainPrefixes(...e){return this.rules.ignoreDomainPrefixes.push(...cn(e,!0)),this}ignoreDomainSuffixes(...e){return this.rules.ignoreDomainSuffixes.push(...cn(e,!0)),this}groupDomains(...e){return this.rules.groupDomains.push(...cn(e,!0)),this}ignoreEndpoint(...e){return this.rules.ignoreEndpoints.push(...cn(e,!1)),this}addPattern(...e){return this.rules.patterns.push(...cn(e,!1)),this}preserveSegments(...e){return this.rules.preserveSegments.push(...cn(e,!1)),this}autoDetection(e){return this.rules.autoDetection=!1!==e,this}build(){var e={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};return Object.keys(e).forEach(t=>{var n=this.rules[t];e[t]=Array.isArray(n)?n.slice():n}),e}}var ln={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};function fn(e,t){return t.some(function(t){return e.length>=t.length&&e.slice(e.length-t.length)===t})}function pn(e){var t=String(e||"").toLowerCase();return!(-1!==ln.ignoreDomains.indexOf(t)||fn(t,ln.ignoreTLDs)||fn(t,ln.ignoreDomainSuffixes)||ln.ignoreDomainPrefixes.some(function(e){return 0===t.indexOf(e)}))&&(!(ln.allowOnlyDomains.length>0&&-1===ln.allowOnlyDomains.indexOf(t))&&!(ln.allowOnlyTLDs.length>0&&!fn(t,ln.allowOnlyTLDs)))}function gn(e){var t=e.split("*").map(function(e){return e.replace(/[.+?^${}()|[\]\\]/g,"\\$&")}).join("[a-z0-9.-]+");return new RegExp("^"+t+"$")}function mn(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}function vn(e){return(e.length>1?e.replace(/\/+$/,""):e).split("/").slice(1)}const hn=/^(\*|\{[^/{}]*\})$/;function _n(e,t){for(var n=vn(e),r=vn(t),i=0;i<n.length;i++){var o=n[i];if("**"===o&&i===n.length-1)return!0;if(i>=r.length)return!1;if(hn.test(o)){if(""===r[i])return!1}else if(o!==r[i])return!1}return n.length===r.length}function kn(e){var t=mn(e);return ln.ignoreEndpoints.some(function(e){return _n(e,t)})}const yn=/^\d+$/,bn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Sn=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;const wn={AP_APP_LIFE_CYCLE:["AP_APP_INSTALL","AP_APP_UNINSTALL","AP_APP_UPDATE","AP_APP_CRACKED","AP_APP_OPEN","AP_APP_CLEAR_DATA","AP_APP_FOREGROUND","AP_APP_BACKGROUND","AP_APP_OUT_OF_MEMORY","AP_APP_FIRST_OPEN","AP_APP_LAUNCHING","AP_APP_RESIGN_ACTIVE","AP_APP_WILL_CONNECT"],AP_USER_LIFE_CYCLE:["AP_USER_SIGNUP","AP_USER_LOGIN","AP_USER_LOGOUT"],AP_APPLICATION:["AP_DEEP_LINK_OPEN","AP_DEEP_LINK_UPDATE","AP_DEEP_LINK_FIRST_OPEN","AP_IN_APP_PURCHASE","AP_NOTIFICATION_RECEIVE","AP_NOTIFICATION_OPEN","AP_NOTIFICATION_DISMISS","AP_NOTIFICATION_FOREGROUND","AP_SEARCH","AP_BATTERY_LOW","AP_BATTERY_FULL","AP_LOW_POWER_MODE_ON","AP_LOW_POWER_MODE_OFF"],AP_OTHERS:["AP_NETWORK_REACHABILITY_CHANGE","AP_NETWORK_BANDWIDTH_CHANGE","AP_SWITCH_THEME_LIGHT","AP_SWITCH_THEME_DARK","AP_SWITCH_THEME_CUSTOM","AP_SWITCH_ORIENTATION_LANDSCAPE","AP_SWITCH_ORIENTATION_PORTRAIT"],AP_OS:["AP_OS_UPDATE","AP_OS_UNSUPPORTED"]};const En=(An={},Object.keys(wn).forEach(function(e){wn[e].forEach(function(t){An[t]=Object.freeze({event:t,group:e})})}),Object.freeze(An));var An;const zn=/[^\w\s.\-&/:]/g;var Tn=!1,On="",Pn=null,In=300,Cn="",Dn=null,Nn=!1,Rn=0,Ln=null,xn=null,qn=null,jn=null;function Mn(){try{return function(e){var t=e;try{t=decodeURIComponent(e)}catch(e){}return t.replace(zn,"_").trim().slice(0,99)}(function(e){var t=e.pathname,n=e.hash;if(/^#!?\//.test(n)){var r=n.replace(/^#!?/,"").split("?")[0];t=t.replace(/\/+$/,"")+r}return t}(new URL(window.location.href)))}catch(e){return""}}function Fn(){if(Pn=null,Tn){var e=Mn();""!==e&&e!==On&&(On=e,Nn||(z._current_screen=Object.assign({},z._current_screen,{screen:e}),Cn=e,Rn=v(),Dn=setTimeout(Un,In)))}}function Un(){Dn=null;var e=Cn;if(Cn="",Tn&&!Nn&&""!==e)try{Zn(e,void 0,void 0,Rn||void 0)}catch(e){F.log("automatic screen tracking: "+String(e))}}function Bn(){null!==Dn&&(clearTimeout(Dn),Dn=null),Cn=""}function Hn(){null===Pn&&(Nn=!1,Bn(),Pn=setTimeout(Fn,0))}function Vn(e,t){var n="boolean"!=typeof e||e;if(n&&(In=300),n!==Tn){if(n)return On="",r=history.pushState,i=history.replaceState,qn=r,jn=i,Ln=function(){var e=r.apply(this,arguments);return Hn(),e},xn=function(){var e=i.apply(this,arguments);return Hn(),e},history.pushState=Ln,history.replaceState=xn,window.addEventListener("popstate",Hn),window.addEventListener("hashchange",Hn),Tn=!0,F.log("automatic screen tracking: on"),void(null===Pn&&(Pn=setTimeout(Fn,0)));var r,i;Ln&&history.pushState===Ln&&qn&&(history.pushState=qn),xn&&history.replaceState===xn&&jn&&(history.replaceState=jn),Ln=xn=qn=jn=null,window.removeEventListener("popstate",Hn),window.removeEventListener("hashchange",Hn),null!==Pn&&(clearTimeout(Pn),Pn=null),Bn(),Tn=!1,On="",Nn=!1,F.log("automatic screen tracking: off")}}function Gn(e,t,r){if(He("trackEvent")){var i=function(e){if(e&&"object"==typeof e){var t=e.event;return"string"==typeof t&&En[t]===e?e:void 0}}(e);if(i)r=t&&"object"==typeof t?t:r,t=i.group,e=i.event;else{if("string"!=typeof e||!nn(e))return void B(o.EVENT,"AppticsEvents.addEvent: Invalid eventName: "+String(e));if(null==t||""===t)t=c.default_group_name;else if("string"!=typeof t||!nn(t))return void B(o.EVENT,'AppticsEvents.addEvent: Invalid groupName for "'+e+'": '+String(t))}var a=on(r=r||{}),s=v(),d={id:A(),type:n.EVENT,group:t,event:e,starttime:s,endtime:s,edge:z._device_info.connectionType||Ce(),networkstatus:De(),screen:z._current_screen.screen||"",sessionstarttime:z._current_session.starttime||s,customproperties:a};Yt(),Oe(),he.add(d),F.log("AppticsEvents.addEvent('"+e+"','"+t+"',"+JSON.stringify(a||{})+")"),F.dir(d)}}function Zn(e,t,r,i,a){if(He("inScreen"))if(sn(e)){var s=on(t=t||{}),c="number"==typeof i?i:v(),d={id:r||A(),type:n.SCREEN,screen:e,starttime:c,endtime:0,edge:z._device_info.connectionType||Ce(),networkstatus:De(),orientation:Re(),sessionstarttime:z._current_session.starttime||c,customproperties:s},u=z._current_screen&&z._current_screen.id;u&&u!==d.id&&jt(u,c),Yt(),Oe(),he.add(d),z._current_screen=a?Object.assign({},d,{implicit:!0}):d,F.log("AppticsScreenTracker.inScreen('"+e+"',"+JSON.stringify(s||{})+")"),F.dir(d)}else B(o.SCREEN,"AppticsScreenTracker.inScreen: Invalid screenName: "+String(e))}function Wn(){var e=z._current_screen;if(e&&!_(e.screen)&&!e.implicit)return String(e.screen);var t=Mn()||"/";return e&&e.id&&e.screen===t&&!e.endtime||Zn(t,void 0,void 0,void 0,!0),t}function Jn(){var e=z._current_screen;e&&e.id&&e.endtime&&!_(e.screen)&&Zn(String(e.screen))}P.screenTrackedByApp=function(){Nn=!0,Bn()};const Kn=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Yn=/[^a-zA-Z0-9\-._*\/]+/g;function $n(e){if(He("trackApi")){var t,r=(e=e||{}).url||e.path||"",i=(e.method||"GET").toString(),a="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,s=e.responsemessage||e.statusText||e.error||"-",c=v(),d="number"==typeof e.starttime?e.starttime:c;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?d+e.duration:c;var u=e.scheme||"",l=e.hostname||"",f="number"==typeof e.port?e.port:0,p=e.path||"";if(!_(r))try{var g=new URL(r,window.location.origin);_(u)&&(u=g.protocol.replace(":","")),_(l)&&(l=g.hostname),f||(f=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),_(p)&&(p=g.pathname)}catch(e){_(p)&&(p=r)}if(u="https"===u||"http"===u?u:"https",Kn.test(l))if(pn(l)&&!kn(p)){p=function(e){if(_(e))return"/";var t=e.replace(Yn,"*");return"/"===t.charAt(0)?t:"/"+t}(function(e){for(var t=mn(e),n=0;n<ln.patterns.length;n++){var r=ln.patterns[n];if(_n(r,t))return r.replace(/\{[^/{}]*\}/g,"*")}return ln.autoDetection?t.split("/").map(function(e){return""===e||-1!==ln.preserveSegments.indexOf(e)?e:yn.test(e)||bn.test(e)||Sn.test(e)?"*":e}).join("/"):t}(p)),l=function(e){for(var t=String(e||"").toLowerCase(),n=0;n<ln.groupDomains.length;n++){var r=ln.groupDomains[n];if(-1!==r.indexOf("*")&&gn(r).test(t))return r}return e}(l);var m=z._current_session.starttime||d,h={id:A(),type:n.API,scheme:u,port:f,hostname:l,path:p,method:i,responsecode:a,responsemessage:s,starttime:d,endtime:t,sessionstarttime:m,networkstatus:De(),edge:z._device_info.connectionType||Ce()};Yt(),Oe(),he.add(h),F.log("AppticsApiTracker('"+i+" "+u+"://"+l+p+"')"),F.dir(h)}else F.log("AppticsApiTracker: "+l+function(e){return String(e||"").split(/[?#]/)[0]}(p)+" is left out by configureApiTracking");else B(o.API,"AppticsApiTracker: hostname not accepted by the server: "+String(l))}}var Xn={},Qn=[];var er=!1,tr=null,nr=null,rr=null;function ir(e){if(_(e))return!1;var t;try{t=new URL(e,window.location.href)}catch(e){return!1}return("https:"===t.protocol||"http:"===t.protocol)&&(!function(e,t){for(var n=[z._defaultoptions.base_domain,z._defaultoptions.serviceUrl],r=0;r<n.length;r++)if(!_(n[r])&&0===e.indexOf(n[r]))return!0;var i=T("endpoint");return!_(i)&&0===t.indexOf(i)}(t.href,t.pathname)&&(pn(t.hostname)&&!kn(t.pathname)))}function or(e,t,n,r,i){try{$n({url:t,method:e,responsecode:r,responsemessage:i,starttime:n,endtime:v()})}catch(e){F.log("auto api tracking: "+String(e))}}function ar(){"function"==typeof fetch&&(rr=fetch,window.fetch=function(e,t){var n,r,i;try{n=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),r=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),i=v()}catch(n){return rr(e,t)}return ir(n)?rr(e,t).then(function(e){return or(r,n,i,e.status,e.statusText||"-"),e},function(e){throw or(r,n,i,0,String(e&&e.message?e.message:e)||"Network Error"),e}):rr(e,t)})}function sr(e){var t="boolean"!=typeof e||e;if(t!==er){if(t)return"function"==typeof XMLHttpRequest&&(tr=XMLHttpRequest.prototype.open,nr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(e,t){try{var n=String(t);ir(n)?this._ap_api={method:String(e||"GET"),url:n,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return tr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=v(),this.addEventListener("loadend",function(){var t=0===this.status?"Network Error":this.statusText||"-";or(e.method,e.url,e.starttime,this.status,t)})),nr.apply(this,arguments)}),ar(),er=!0,void F.log("automatic api tracking: on");tr&&(XMLHttpRequest.prototype.open=tr),nr&&(XMLHttpRequest.prototype.send=nr),rr&&(window.fetch=rr),tr=nr=rr=null,er=!1,F.log("automatic api tracking: off")}}function cr(e,t){var r;if(Be(r="trackError")&&(z._errorTracking||(F.log("apptics."+r+": error tracking is turned off by the server"),0)))if(_(e))F.warn("AppticsTrackError: Invalid error");else{var i=on(t),o=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!_(t))return t;var n=e.filename||e.fileName||"";if(_(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(_(r)?"":":"+r)+(_(i)?"":":"+i)}(e),a=function(e){let t="";if(_(e))return t;const n=e.split("\n");if(n.length<2)return t;const r=/at (\S+) \(/,i=/^(\w+)@/;for(let e of n){const n=e.match(r),o=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),i=r?r[1]:"Unknown URL";t=n[1],i.split("/").pop();break}if(o&&o[1]){t=o[1],e.split("@")[1].split("/").pop();break}}return t}(o)||"",s=e.type||"",c=e.reason||e.error||e.message||"",d=(_(String(c))?_(s)?"Unknown error":String(s):String(c))+(_(a)?"":" at "+a),u=v(),l={id:A(),type:n.ERROR,edge:z._device_info.connectionType||Ce(),networkstatus:De(),happenedat:u,issuename:d,message:_(o)?_(String(c))?"no stack available":String(c):o,screenname:z._current_screen.screen||window.location.pathname,sessionstarttime:z._current_session.starttime||u,customproperties:i};Yt(),Oe(),_e.add(l),F.log("AppticsTrackError('"+s+"','"+d+"',"+JSON.stringify(i||{})+")"),F.dir(l)}}function dr(e){z._deferSendTimer&&clearTimeout(z._deferSendTimer),z._deferSendTimer=setTimeout(e,500)}function ur(){z._deferSendTimer&&(clearTimeout(z._deferSendTimer),z._deferSendTimer=null)}function lr(e,t){var n="undefined"!=typeof navigator?navigator.locks:void 0;return n&&"function"==typeof n.request?n.request("apptics-send-"+e,{ifAvailable:!0},function(e){return e?t():void 0}).then(function(){}):t()}function fr(e,t,n){return e.payload().then(function(r){var i=[],o=[];return r.forEach(function(e){t(e)&&(O(n(e))?o:i).push(e)}),o.length?e.remove(o).then(function(){return i}):i})}function pr(e,t,n,r){var i=ut(t);if(i)return i;if(!Ue())return Promise.reject(t+": tracking is off");if(k(n))return Promise.reject(t+": nothing to send");var o=pt(t);if(o)return o;if(n.hasOwnProperty("meta")||(n.meta=ft()),function(e){return Ke(e).attempt>5}(e))return U("apptics: dropping a "+t+" batch after 5 attempts"),function(e){l[e]&&Ye(e,{attempt:1,firstattempttime:0,lst:Ke(e).lst})}(e),Promise.resolve({result:"success"});F.log(t+": Payload size : "+w(n)/1024);var a=JSON.stringify(n);return r?dt(e,a,rt(),t):st(e,a,rt(),t)}function gr(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){F.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function mr(e){return!je()&&Ue()&&z._engagementTracking?0==navigator.onLine?(F.warn("sendEngagementData: No Network"),Promise.resolve()):z._sending?(dr(mr),Promise.resolve()):(z._sending=!0,ur(),lr("engagements",function(){return fr(he,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],o=[],a=[];var s={},c=[];return S(t).forEach(function(e){const t={...e};if(e.type==n.EVENT)o.push(e);else if(e.type==n.SCREEN)i.push(e);else if(e.type==n.SESSION)r.push(e);else{if(e.type!=n.API)return;a.push(e)}c.push(t),delete e.id,delete e.type}),o.length>0&&(s.events=o),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),a.length>0&&(s.apis=a),k(s)?void 0:gr(function(e,t){return pr("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return he.remove(c)},function(e){return ot(e)?(U("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),he.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){B(o.API,"sendEngagementData: "+e)}).then(function(){z._sending=!1})):Promise.resolve()}function vr(e){return!je()&&Ue()&&z._errorTracking?0==navigator.onLine?(F.warn("sendErrorData: No Network"),Promise.resolve()):z._sending?(dr(vr),Promise.resolve()):(z._sending=!0,ur(),lr("errors",function(){return fr(_e,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return S(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),gr(function(e,t){return pr("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return _e.remove(r)},function(e){return ot(e)?(U("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),_e.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){F.log("sendErrorData:"+e)}).then(function(){z._sending=!1})):Promise.resolve()}function hr(e){return Be("flush")?(z._sending=!1,mr(e).then(function(){return vr(e)}).then(function(){return P.sendHeatmaps(e)})):Promise.resolve()}var _r=null,kr=null;function yr(){null===_r&&(_r=setInterval(function(){Te()&&(F.log("apptics: debug mode has been idle for an hour, switching it off"),Ie(!1)),F.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),mr().then(function(){return vr()}).then(function(){return P.sendHeatmaps()})},T("batch_flush_interval"))),null===kr&&(kr=setInterval(function(){z._nextConfigCheck>0&&v()<z._nextConfigCheck||(F.log("scheduleToGetUpdatesFromServer: asking the server for its config"),Rt().catch(function(e){F.log(e)}))},T("getupdates_interval")))}let br=!1;function Sr(e){br=e}function wr(){return!(!z._token||je())&&(!!z._remoteLoggerEnabled&&Ue())}function Er(){return(T("remote_log")||br)&&wr()}const Ar="remoteLog";let zr=!1,Tr=!1;function Or(e){var t={sessionstarttime:z._current_session.starttime||e.happenedat||v(),logtime:e.happenedat||v(),level:Number(e.level)||3,logmessage:String(e.exceptionlog).slice(0,1e4),function:String(e.module||"SDK").slice(0,100),linenumber:Number(e.linenumber)||0};return _(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function Pr(e){return JSON.stringify({logs:e.map(Or),meta:ft()})}function Ir(){zr||(zr=!0,setTimeout(function(){zr=!1,Cr()},1e3))}function Cr(){return Tr||!Er()||!1===navigator.onLine?Promise.resolve():(Tr=!0,be.all().then(function(e){var t=function(e){for(var t=0,n=e.length,r=e.length-1;r>=0&&!((t+=JSON.stringify(e[r]).length)>1048576);r--)n=r;return 0===n?e:(be.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return st("consolelog",Pr(t),rt(),Ar).then(function(){return be.remove(t)},function(e){if(ot(e))return U("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),be.remove(t);F.log(Ar+": "+String(e))})}).then(function(){Tr=!1}).catch(function(){Tr=!1}))}function Dr(){var e=we.item("users")||[],t={};e.length>0&&(t=e.filter(e=>1===e.status)[0]||{}),z._user_info=t}P.remoteLog=function(e,t,n){try{if(!T("remote_log")||!wr())return;var r=n||I;be.add({module:e,happenedat:v(),exceptionlog:String(t),attempt:1,filename:r.filename,linenumber:r.linenumber}),Ir()}catch(e){}};const Nr={UserBuilder:class{setFirstName(e){return this.first_name=e,this}setLastName(e){return this.last_name=e,this}setCompanyName(e){return this.company_name=e,this}setEmailAddress(e){return this.email_address=e,this}setContactNumber(e){return this.contact_number=e,this}setCountry(e){return this.country=e,this}setRegion(e){return this.region=e,this}setCity(e){return this.city=e,this}setGeoLocation(e){return this.geo_location=e,this}setGender(e){return this.gender=e,this}setPlanType(e){return this.plan_type=e,this}setTimezone(e){return this.timezone=e,this}setLanguage(e){return this.language=e,this}setEngagementScore(e){return this.engagement_score=e,this}setDateOfBirth(e){return this.date_of_birth=e,this}addStringProperty(e,t){return"string"==typeof t&&(this[e]=t),this}addBooleanProperty(e,t){return"boolean"==typeof t&&(this[e]=t),this}addNumberProperty(e,t){return"number"==typeof t&&Number.isFinite(t)&&(this[e]=t),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[t,n]of Object.entries(e))this[t]=n;return this}build(){const e={},t=["first_name","last_name","company_name","email_address","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language","engagement_score","date_of_birth"];return t.forEach(t=>{void 0!==this[t]&&(e[t]=this[t])}),Object.entries(this).forEach(([n,r])=>{-1===t.indexOf(n)&&"function"!=typeof r&&(e[n]=r)}),an(e)}}};let Rr=!1,Lr=null,xr=0;function qr(e){var t=Object.assign({},e);return Object.keys(p).forEach(function(e){_(t[e])&&!_(t[p[e]])&&(t[e]=t[p[e]])}),_(t.serviceUrl)||(t.serviceUrl=String(t.serviceUrl).replace(/\/+$/,"")),t.appversion=function(e){if("number"==typeof e)return isFinite(e)?String(e):"";return"string"==typeof e?e.trim():""}(t.appversion),t}const jr=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function Mr(e){return e.serviceUrl+"|"+e.identifier}const Fr=Object.freeze([{key:"batch_flush_interval",min:1e3,max:36e5},{key:"getupdates_interval",min:1e4,max:864e5},{key:"batch_size",min:1,max:500},{key:"batch_request_timeout",min:1,max:30},{key:"min_session_duration",min:0,max:6e4},{key:"heatmap_max_per_session",min:0,max:1e4}]);function Ur(){we.add(We,void 0),we.clear(),he.clear(),_e.clear()}function Br(e){if(!e||"object"!=typeof e)return U("Apptics.init: a config object is required, e.g. apptics.init({ serviceUrl, zak, identifier, appversion })"),!1;if(z._initialised)return F.warn("Apptics.init: already initialised; call apptics.reset() to start again"),!1;if(!function(){if("undefined"==typeof window||"undefined"==typeof document||"undefined"==typeof Promise)return!1;try{return"undefined"!=typeof indexedDB||!!window.localStorage}catch(e){return!1}}())return U("Apptics.init: skipped, no browser with storage and Promise support"),!1;var t,n,r=qr(e),i=d.filter(function(e){return _(r[e])});if(i.length>0)return U("Apptics.init: missing required config: "+i.join(", ")),!1;if(t=r.appversion,-1!==jr.indexOf(t.toUpperCase()))return U('Apptics.init: appversion is still the placeholder "'+r.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;z._defaultoptions=r,z._defaultoptions.base_domain=r.serviceUrl,z._token=r.identifier,_(e.console_log)||(z._config.debug=!!e.console_log),z._config.track_session="boolean"==typeof e.track_session?e.track_session:c.track_session,z._config.show_logs="boolean"==typeof e.show_logs?e.show_logs:c.show_logs,"boolean"==typeof e.ignore_do_not_track&&(z._config.ignore_do_not_track=e.ignore_do_not_track),z._config.debug_api="boolean"==typeof e.debug?e.debug:"boolean"==typeof e.debug_api?e.debug_api:c.debug_api,n=z._config.debug_api,Ie(null!==Pe?Pe:n),z._config.device_name="string"==typeof e.device_name?e.device_name:c.device_name,z._config.remote_log=c.remote_log,"boolean"==typeof e.remote_log&&(z._config.remote_log=e.remote_log),z._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(t){void 0!==e[t]&&U("Apptics.init: "+t+" is no longer supported; use configureApiTracking(new ApiTrackingBuilder()."+("track_api_hosts"===t?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),"boolean"==typeof e.track_api&&(z._config.track_api=e.track_api),sr(z._config.track_api),z._config.track_heatmap="boolean"==typeof e.track_heatmap?e.track_heatmap:c.track_heatmap,P.enableHeatmap(z._config.track_heatmap),z._config.track_screen="boolean"==typeof e.track_screen?e.track_screen:c.track_screen,function(e){if(Fr.forEach(function(t){var n=e[t.key];if(z._config[t.key]=c[t.key],!_(n)){var r=Number(n);!isFinite(r)||r<t.min||r>t.max?U("Apptics.init: "+t.key+" must be between "+t.min+" and "+t.max+", keeping "+z._config[t.key]):(z._config[t.key]=r,F.log("Apptics.init: "+t.key+" set to "+r))}}),z.inactiveduration=30,!_(e.inactiveduration)){var t=Number(e.inactiveduration);!isFinite(t)||t<1||t>1440?U("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+z.inactiveduration):(z.inactiveduration=t,F.log("Apptics.init: inactiveduration set to "+t))}}(e),Lr=e,z._initialised=!0,z._ready=!1,z._pending=[];var o=++xr;return z._readyPromise=ge().then(function(e){return o===xr&&(e?(function(e){var t=we.item("appkey");_(t)||t===Mr(e)||(F.log("init: stored data belongs to another app, resetting"),Ur()),we.add("appkey",Mr(e))}(z._defaultoptions),St().then(function(e){return o===xr&&(e?function(e,t){z._token=String(z._defaultoptions.aaid),we.add("token",z._token),n=we.item("trackinfo"),n&&"object"==typeof n&&(xt(n),F.log("restoreServerSettings: "+JSON.stringify(z._trackinfo)));var n;var r=we.item("uuid");_(r)&&(r=A(),we.add("uuid",r));z._uuid=r;var i=we.item("appversion");_(i)&&(we.add("appversion",z._defaultoptions.appversion),i=z._defaultoptions.appversion);var o=i!=z._defaultoptions.appversion;z._ignoreDnt=z._config.ignore_do_not_track,Ee.update_status(Ze()),Ot(),qt(),o&&(z._device_info.appversionid="",Nt(z._device_info).then(function(e){h(e)&&(we.add("appversion",z._defaultoptions.appversion),F.log("init: appversion updated to "+z._defaultoptions.appversion))}).catch(function(e){F.log("init: error updating appversion: "+e)}));return z._device_info.connectionType=Ce(),function(){if(Rr)return;Rr=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){z._device_info.connectionType=Ce()});window.addEventListener("blur",function(){Vr()&&(F.log("Window lost focus, user switched to another window or application"),en())}),window.addEventListener("focus",function(){Vr()&&(F.log("Window regained focus, user switched back to the window"),Qt(),yr())}),window.addEventListener("pagehide",Zr),window.addEventListener("pageshow",function(e){Vr()&&e.persisted&&(F.log("restored from the back/forward cache: starting a new session"),Qt().then(Jn),yr())}),document.addEventListener("visibilitychange",function(){Vr()&&("hidden"!==document.visibilityState?(F.log("page visible: refreshing the server settings"),Qt().then(Jn),qt()):function(){if(!Vr())return;Mt(),hr(!0),F.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){Vr()&&Qt()},{passive:!0}),window.addEventListener("online",function(){if(Vr()){if(_(Qe("apid"))&&_(Qe("mapid")))return F.log("back online: registering this device before sending"),Ot(),void Ct().then(function(){Vr()&&(hr(),Cr())});hr(),Cr()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){z._properties.orientation=Re()});window.addEventListener("unhandledrejection",function(e){Vr()&&z._isGlobalErrorTracking&&cr(e)}),window.addEventListener("error",function(e){Vr()&&z._isGlobalErrorTracking&&cr(e)}),window.addEventListener("click",Gr,!0)}(),z._properties.orientation=Re(),Dr(),Qt().then(function(){if(t!==xr)return!1;yr(),Cr(),z._ready=!0;var e=z._pending;return z._pending=[],e.forEach(function(e){try{e()}catch(e){F.error("apptics: buffered call failed",e)}}),Vn(z._config.track_screen),P.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(0,o):(U("Apptics.init: app/addversion did not return the app ids, not starting"),z._initialised=!1,z._token="",z._pending=[],!1))})):(U("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),z._initialised=!1,z._token="",z._pending=[],!1))}).catch(function(e){return F.error("Apptics.init: start-up failed",e),!1}),!0}function Hr(){return z._readyPromise||Promise.resolve(!1)}function Vr(){return z._ready}function Gr(e){if(window.appticsReadyStatus&&Vr()){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest('[apeventaction]:not([apeventaction=""])');if(n){var r=n.getAttribute("apeventaction")||"",i=n.closest("[apgroupaction]"),o=i&&i.getAttribute("apgroupaction")||c.default_group_name,a={},s=n.getAttribute("apeventprops");if(!_(s))try{a=JSON.parse(s)}catch(e){F.warn('apptics: invalid JSON in apeventprops for "'+r+'", sending no properties'),a={}}_(r)||Gn(r,o,a)}}}}function Zr(){Vr()&&(F.log("page closing: ending the session and sending what is queued"),Mt(),Er()?be.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);dt("consolelog",Pr(t),rt(),Ar).then(function(){return be.remove(t)},function(e){if(ot(e))return be.remove(t);F.log(Ar+": "+String(e))})}}):Promise.resolve(),Xt().then(function(){return hr(!0)}))}const Wr=2097152,Jr="log",Kr="diagnostics";let Yr=!1;function $r(){Yr||(Yr=!0,setTimeout(function(){Yr=!1,ke.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return F.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),ke.remove(e.slice(0,t))})},2e3))}function Xr(e){ke.add(e),$r()}function Qr(e){return e.length>1e4?e.slice(0,1e4)+"…":e}function ei(e){return ke.all().then(function(t){return t.filter(function(t){return t.type===e&&!O(t.happenedat)})})}function ti(e){return e.map(function(e){return String(e.id)})}function ni(e){const t=[],n={};return e.forEach(function(e){const r=String(e.heading);n[r]||(n[r]=[],t.push(r)),n[r].push(e.key+": "+e.value)}),t.map(function(e){return"["+e+"]\n"+n[e].join("\n")}).join("\n\n")}function ri(e,t,n){const r=new File([t],e,{type:"text/plain"});return r.size>Wr?(F.warn("apptics: "+e+" is over 2 MB, not sending it"),null):{file:r,ids:ti(n)}}function ii(e){return e.map(function(e){return"["+function(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:v()).toISOString()}(e)+"] "+e.message}).join("\n")}function oi(){return ei(Kr).then(function(e){return e.length>0})}function ai(e){if(z._initialised)return!1;var t=function(){if("undefined"!=typeof window&&window.appticssettings)return window.appticssettings._defaultoptions}();return!(!t||"object"!=typeof t)&&e.init(t)}const si=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function ci(e){var t=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===t||/^(Object|Module|eval)\.?$/.test(t)?"App":t.slice(0,100)}function di(e){if(e instanceof Error){var t=e.name+": "+e.message;return e.stack&&-1!==e.stack.indexOf(e.message)?e.stack:t}if("string"==typeof e)return e;try{var n=JSON.stringify(e);return void 0===n?String(e):n}catch(t){return String(e)}}const ui=W("AppticsLogger",function(e,t,n,r,i){if(br&&wr()){var o=[t].concat(n).map(di).join(" ");be.add({module:ci(i),level:e,happenedat:r,exceptionlog:o,attempt:1,filename:i.filename,linenumber:i.linenumber}),Ir()}}),li=Object.freeze({1:"debug",2:"debug",3:"info",4:"warn",5:"error"});function fi(e){return function(t,n,...r){try{var i=null==t?"":String(t).trim(),o=""===i?[n].concat(r):["["+i+"]",n].concat(r);!function(e,t){if(!0===T("show_logs")){var n=li[e]||"log";"undefined"!=typeof console&&"function"==typeof console[n]&&console[n].apply(console,t)}}(e,o),ui(e,o[0],o.slice(1),v(),q(1))}catch(e){}}}const pi={enable:W("AppticsLogger.enable",function(){Sr(!1!==!0)}),disable:W("AppticsLogger.disable",function(){Sr(!1)}),isEnabled:W("AppticsLogger.isEnabled",function(){return br}),v:fi(si.VERBOSE),d:fi(si.DEBUG),i:fi(si.INFO),w:fi(si.WARN),e:fi(si.ERROR)},gi={init:W("Apptics.init",Br)},mi=W("ready",Hr),vi={addEvent:W("AppticsEvents.addEvent",Gn)},hi=W("AppticsScreenTracker.inScreen",function(e,t,n,r){sn(e)?(P.screenTrackedByApp(),Zn(e,t,n,r)):B(o.SCREEN,"AppticsScreenTracker.inScreen: Invalid screenName: "+String(e))}),_i=W("AppticsScreenTracker.outScreen",function(e,t){_(e)?B(o.SCREEN,"AppticsScreenTracker.outScreen: no screen id given"):jt(e,t)}),ki={inScreen:function(e,t){if(!sn(e))return hi(e,t,"",v()),"";var n=A();return hi(e,t,n,v()),n},outScreen:function(e){_i(e,v())}},yi=W("AppticsApiTracker.endTrackApi",function(e,t,n,r){var i=Xn[e];i?(delete Xn[e],Qn=Qn.filter(function(t){return t!==e}),$n({url:i.url,method:i.method,responsecode:"number"==typeof t?t:0,responsemessage:n,starttime:i.starttime,endtime:r})):B(o.API,"AppticsApiTracker.endTrackApi: no call started with id "+String(e))}),bi={startTrackApi:W("AppticsApiTracker.startTrackApi",function(e,t){var n=A();return Xn[n]={url:String(e||""),method:String(t||"GET").toUpperCase(),starttime:v()},Qn.push(n),Qn.length>500&&delete Xn[Qn.shift()],n}),endTrackApi:function(e,t,n){yi(e,t,n,v())},configure:W("AppticsApiTracker.configure",function(e){var t=e instanceof un?e.build():e,n={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};t&&"object"==typeof t&&Object.keys(n).forEach(function(e){var r=t[e];"autoDetection"===e?n.autoDetection=!1!==r:Array.isArray(r)&&(n[e]=r.slice())}),ln=n})},Si=W("enableApiTracking",sr),wi=W("AppticsTrackError",cr),Ei=W("enableGlobalErrorHandler",function(e){z._isGlobalErrorTracking="boolean"!=typeof e||e}),Ai=W("AppticsSetUser",function(t,n,r){let i=r||{};if(t=t||"",n=n||"",Be("setUser"))if(_(t))B(o.PROPERTIES,"AppticsSetUser: Invalid userid");else{var a={mam:t,customergroupid:n,appversionid:z._device_info.appversionid||"",status:1,happendat:v()};k(i)||(a.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:an(e);return n.message.forEach(function(e){B(o.PROPERTIES,"AppticsSetUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(i)),function(t){var n="registerUserWithApptics",r=ut(n)||lt(n);if(r)return r;if(k(t))return Promise.reject(n+": nothing to register");var i=pt(n);if(i)return i;var o=JSON.stringify(b(t,["userid","groupid","happendat"]));return st("reguser",o,rt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,Ge(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=we.item("users")||[];t=t.map(e=>({...e,status:0}));var n=t.findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);we.add("users",t)}(t),Dr(),P.remoteConfigUserChanged(),r})}(a).then(function(e){F.log("setUser: "+JSON.stringify(e))}).catch(function(e){F.log(e)})}}),zi=W("getUser",function(){return z._user_info||{}}),Ti=W("setTrackingStatus",Ge),Oi=W("getTrackingStatus",Ze),Pi=W("flush",hr),Ii=W("addFeedbackLog",function(e){"string"==typeof e&&0!==e.length&&Xr({type:Jr,happenedat:v(),message:Qr(e)})}),Ci=W("addDiagnosticsInfo",function(e,t,n){"string"==typeof e&&0!==e.length&&"string"==typeof t&&0!==t.length&&Xr({type:Kr,happenedat:v(),heading:e,key:t,value:Qr(String(void 0===n?"":n))})}),Di=W("enableDebug",function(){Pe=!0,Ie(!0)}),Ni=W("disableDebug",function(){Pe=!1,Ie(!1)}),Ri=W("reset",function(){xr++,null!==_r&&clearInterval(_r),null!==kr&&clearInterval(kr),_r=null,kr=null,ur(),sr(!1),Vn(!1),ht=null,we.add(mt,void 0),P.enableHeatmap(!1),P.resetHeatmap(),P.resetRemoteConfig(),Ur(),z._initialised=!1,z._ready=!1,z._pending=[],z._readyPromise=null,z._device_info={},z._user_info={},z._current_screen={},z._current_session={},z._uuid="",z._apid="",z._mapid="",z._sending=!1,F.log("apptics.reset()"),Lr&&Br(Lr)}),Li={Apptics:gi,AppticsEvents:vi,AppticsScreenTracker:ki,AppticsApiTracker:bi,AppticsLogger:pi,DefinedEvents:En,ApiTrackingBuilder:un,ready:mi,enableDebug:Di,disableDebug:Ni,enableApiTracking:Si,AppticsTrackError:wi,enableGlobalErrorHandler:Ei,AppticsSetUser:Ai,getUser:zi,users:Nr,setTrackingStatus:Ti,getTrackingStatus:Oi,flush:Pi,addFeedbackLog:Ii,addDiagnosticsInfo:Ci,reset:Ri,AP_TRACKING_STATUS:e,AP_FEEDBACK_TYPE:t};!function(e){"undefined"!=typeof window&&queueMicrotask(function(){ai(e)})}(gi);const xi="Feedback sent successfully",qi="Something went wrong. Send feedback again",ji=["deviceid","anonymousid","aaid","apid","mapid","devicetypeid","osversionid","platformid","appversionid","appreleaseversionid","modelid","timezoneid","frameworkid","projectid","portalid","donottrackenabled"];function Mi(e){if(je())return Promise.resolve(null);if(0==navigator.onLine)return F.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=_(e.attachment)?null:e.attachment,n=t?t.length:0,r=e&&e.logsFiles?e.logsFiles:null,i=r&&r.length?r.length:0,o=v();return Promise.all([Fi(e),Ne()]).then(function([a,s]){var c=new FormData,d={networkstatus:De(),orientation:Re(),edge:Ce(),screenname:z._current_screen.screen||"",sessionstarttime:z._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:i+(a.logFile?1:0),happendat:o};_(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:ft()}));var u=Promise.resolve();return t&&n>0&&n<=5&&(u=function(e){var t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(new Promise(function(e,t){const i=new FileReader;i.onload=function(t){const i=t.target.result;e(new File([i],"image_"+(n+1),{type:r.type}))},i.onerror=function(){t(i.error)},i.readAsArrayBuffer(r)}))}return Promise.all(t)}(t).then(function(e){e.forEach(function(e){c.append("attachment",e)})})),u.then(function(){return function(e,t,n){if(t&&t.length>0)for(let n=0;n<t.length;n++)e.append("logfile",t[n]);n.logFile&&e.append("logfile",n.logFile);n.dyninfoFile&&e.append("dyninfo",n.dyninfoFile)}(c,r,a),i=c,o=a.ids,(e=i,t="requestToFeedback",n=ut(t)||pt(t),n||(F.log(t+": Feedback Payload size : "+w(e)/1024),st("feedback",e,rt(),t))).then(function(){return z._sending=!1,o.length>0&&function(e){ke.remove(e.map(function(e){return{id:e}}))}(o),{ok:!0,message:xi}}).catch(function(e){return z._sending=!1,F.log("sendFeedbackData:"+e),{ok:!1,message:qi}});var e,t,n,i,o})}).catch(function(e){return F.error("sendFeedbackData: "+e),{ok:!1,message:qi}})}function Fi(e){var t=!1!==e.includeLog,n=e.includeDyninfo,r=!0===n?Promise.resolve(!0):!1===n?Promise.resolve(!1):oi();return Promise.all([t?ei(Jr).then(function(e){return 0===e.length?null:ri("feedbacklog.txt",ii(e),e)}):Promise.resolve(null),r.then(function(e){return e?(t=function(){try{return JSON.stringify(b(z._device_info,ji)||{},null,2)}catch(e){return F.error("Failed to prepare dyninfo file",e),null}}(),ei(Kr).then(function(e){const n=[];return e.length>0&&n.push(ni(e)),t&&n.push("[Device Info]\n"+t),0===n.length?null:ri("dyninfo.txt",n.join("\n\n"),e)})):null;var t})]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const Ui="anonymous",Bi="Anonymous",Hi={anonymous:!0,userid:"",groupid:""},Vi={};const Gi="http://www.w3.org/2000/svg";function Zi(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),o=e.querySelector("#zasdkEmailList"),a=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&o&&a){var s=function(){var e=we.item("users");return Array.isArray(e)?e:[]}(),c=function(e){var t=[{value:Ui,label:Bi}],n={};return e.forEach(function(e){var r=e&&e.mam;_(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=Ui;if(Hi.anonymous=!0,Hi.userid="",Hi.groupid="",!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||_(e.mam)||(u=e)}),u&&l(String(u.mam))}n.addEventListener("click",function(e){e.stopPropagation();var t="none"!==r.style.display;r.style.display=t?"none":"block",t||f()}),o.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),a.setAttribute("tabindex","0"),a.addEventListener("focusout",function(e){a.contains(e.relatedTarget)||(r.style.display="none")}),f()}function l(e){d=e,Hi.anonymous=e===Ui;var t=null;Hi.anonymous||s.forEach(function(n){!t&&n&&n.mam===e&&(t=n)}),Hi.userid=t?String(t.userid||""):"",Hi.groupid=t?String(t.groupid||""):"",i.textContent=Hi.anonymous?Bi:e,f()}function f(){if(o.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void o.appendChild(e)}c.forEach(function(e){var t=e.value===d,n=document.createElement("li");n.className="zasdk-select-option"+(t?" zasdk-option-selected":""),n.setAttribute("data-value",e.value);var r=document.createElement("span");r.textContent=e.label,n.appendChild(r),t&&n.appendChild(function(){var e=document.createElementNS(Gi,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(Gi,"path");return t.setAttribute("d","M1 5l4 4 8-8"),t.setAttribute("stroke","#0078d4"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}()),o.appendChild(n)})}}function Wi(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),o=e.querySelector("#zasdkViewerContent");r&&i&&o&&(i.textContent=t,o.textContent=n||"(No data available)",r.style.display="flex")}function Ji(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),o=e.querySelector(".zasdk-toggle-separator"),a=e.querySelector("#zasdkViewLogsBtn"),s=e.querySelector("#zasdkViewDiagBtn"),c=e.querySelector("#zasdkViewerClose"),d=e.querySelector("#zasdkDataViewer");if(n&&r&&i){var u=n.closest(".zasdk-toggle-row"),l=r.closest(".zasdk-toggle-row");Vi.includeLog=!0===t.includeLog||void 0,Vi.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([ei(Jr).then(function(e){return e.length>0}),oi()]).then(function([e,a]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=a?"":"none"),o&&(o.style.display=e&&a?"":"none"),i.style.display=e||a?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||a,Vi.includeLog=n.checked,Vi.includeDyninfo=r.checked}).catch(function(e){F.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){Vi.includeLog=n.checked}),r.addEventListener("change",function(){Vi.includeDyninfo=r.checked}),a&&a.addEventListener("click",function(){ei(Jr).then(ii).then(function(t){Wi(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){ei(Kr).then(ni).then(function(t){Wi(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}P.feedbackUser=function(){return Hi.anonymous||_(Hi.userid)?null:Hi};const Ki={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},Yi={ErrorType:{},FeedbackState:{}};function $i(){return"undefined"!=typeof Quartz&&!!Quartz}function Xi(){return"undefined"!=typeof Quartz&&Quartz?Quartz:Ki}function Qi(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:Yi}function eo(e){return Mi(e).then(function(e){return e?(ro.handleStatusmsg(e.ok,e.message),e.ok&&setTimeout(()=>{ro.close()},2e3),e):null})}function to(e,t,n){var r=e.querySelector(".zasdk-selected").getAttribute("data-type"),i=e.querySelector("#zasdkFileInput").files;return{type:_(r)?1:ro.typeObj[r],message:t,attachment:i&&i.length>0?i:ro._opts.attachments||null,logsFiles:ro._opts.logFiles||null,includeLog:Vi.includeLog,includeDyninfo:Vi.includeDyninfo,quartzid:n}}function no(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return F.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const ro={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content">\n <div class="zasdk-header">\n <h2 class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close"><svg viewBox="0 0 24 24" style=" width: 20px; "><path d="M19.92,19.08c.23.23.23.61,0,.85-.12.12-.27.18-.42.18s-.31-.06-.42-.18l-7.08-7.08-7.08,7.08c-.12.12-.27.18-.42.18s-.31-.06-.42-.18c-.23-.23-.23-.61,0-.85l7.08-7.08-7.08-7.08c-.23-.23-.23-.61,0-.85s.61-.23.85,0l7.08,7.08,7.08-7.08c.23-.23.61-.23.85,0s.23.61,0,.85l-7.08,7.08,7.08,7.08Z"/></svg></span>\n </div>\n <div class="zasdk-feedback-types" data-type="">\n <div class="zasdk-feedback-type zasdk-selected" data-type="bug">\n <div class="zasdk-iconcnt zasdkfeedback__icon-report">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M15.6,6.58c-.13-.37-.3-.7-.5-.97l1.23-1.18c.24-.23.25-.61.02-.85-.23-.24-.61-.25-.85-.02l-1.26,1.21c-.66-.45-1.37-.62-1.79-.68-.25-.04-.51-.04-.76-.02-.83.08-1.45.35-1.93.7l-1.22-1.2c-.24-.23-.62-.23-.85,0-.23.24-.23.62,0,.85l1.21,1.19c-.24.34-.41.68-.51.96-2.02,1.37-3.27,3.82-3.27,6.44,0,4.18,3.08,7.58,6.87,7.58s6.87-3.4,6.87-7.58c0-2.62-1.25-5.06-3.26-6.44ZM11.82,5.27c.15-.02.31-.01.47.01.69.1,1.86.48,2.26,1.9-.17.17-.51.44-1.14.65-1.08.36-2.31.28-3.36-.23-.24-.11-.44-.23-.6-.36,0-.01,0-.03.01-.04.18-.65.73-1.77,2.36-1.93ZM12,19.4c-3.12,0-5.67-2.86-5.67-6.38,0-1.98.82-3.82,2.19-5.02.26.25.59.48,1.01.68.78.38,1.65.57,2.5.57.6,0,1.19-.09,1.76-.28.88-.29,1.39-.7,1.67-1,1.38,1.2,2.21,3.06,2.21,5.05,0,3.52-2.54,6.38-5.67,6.38ZM9.12,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM9.12,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM14.88,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM14.88,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM12,14.49c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM12,16.62c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47Z"/></svg></i>\n </div>\n <div>Bug</div>\n </div>\n <div class="zasdk-feedback-type" data-type="feedback">\n <div class="zasdk-iconcnt zasdkfeedback__icon-reqest">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M6.69,9.25h10.81c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M6.69,13.07h8.11c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M20.72,5.17c0-.68-.55-1.23-1.23-1.23H4.48c-.68,0-1.23.55-1.23,1.23v11.84c0,.68.55,1.23,1.23,1.23h13.49l1.25,1.51c.17.2.41.31.67.31.1,0,.2-.02.3-.05.34-.13.57-.46.56-.83l-.03-14.01ZM19.22,17.39l-.17-.2c-.24-.29-.58-.45-.95-.45H4.75V5.44h14.47v11.95Z"/></svg></i>\n </div>\n <div>Feedback</div>\n </div>\n <div class="zasdk-feedback-type" data-type="help">\n <div class="zasdk-iconcnt zasdkfeedback__icon-help">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M12.45,16.47c-.33,0-.6-.27-.6-.6v-2.7c0-.43.25-.82.64-.99.95-.42,3.15-1.62,3.15-3.51,0-1.6-1.01-3.03-2.51-3.55-.95-.33-1.97-.28-2.87.16-.91.43-1.59,1.2-1.92,2.14-.11.31-.45.48-.77.37-.31-.11-.48-.45-.37-.77.44-1.25,1.34-2.25,2.54-2.83,1.2-.57,2.54-.65,3.79-.21,1.99.7,3.32,2.58,3.31,4.69,0,2.46-2.34,3.91-3.79,4.57v2.63c0,.33-.27.6-.6.6ZM13.21,19.1c0-.66-.54-1.2-1.2-1.2h-.03c-.66,0-1.19.54-1.19,1.2s.55,1.2,1.21,1.2,1.2-.54,1.2-1.2Z"/></svg></i>\n </div>\n <div>Help</div>\n </div>\n <div class="zasdk-feedback-type" data-type="report">\n <div class="zasdk-iconcnt zasdkfeedback__icon-appreciate">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M20.47,16.72l-6.66-11.53c-.37-.65-1.07-1.05-1.81-1.05s-1.44.4-1.81,1.05l-6.66,11.53c-.37.65-.37,1.45,0,2.09.37.65,1.07,1.05,1.81,1.05h13.32c.75,0,1.44-.4,1.81-1.05.37-.64.37-1.45,0-2.09ZM19.17,18.06c-.11.18-.3.3-.51.3H5.34c-.21,0-.41-.11-.51-.3-.1-.18-.1-.41,0-.59l6.66-11.53h0c.11-.18.3-.3.51-.3s.41.11.51.3l6.66,11.53c.11.18.11.41,0,.59Z"/><path d="M12.35,13.9s.37-4.72.37-4.72c.05-1.08-1.58-1.06-1.5.02l.48,4.71c.03.38.62.37.64,0Z"/><path d="M11.97,15.06c-.52,0-.94.42-.94.94s.42.94.94.94.94-.42.94-.94-.42-.94-.94-.94Z"/></svg></i>\n </div>\n <div>Report</div>\n </div>\n </div>\n <div id="zasdkFeedbackForm" class="zasdk-form">\n <label class="zasdkdesclbl">User<span class="zasdkmadfeld">*</span></label>\n <div id="zasdkEmailDropdown" class="zasdk-custom-select">\n <div id="zasdkEmailTrigger" class="zasdk-select-trigger">\n <span id="zasdkEmailLabel" class="zasdk-select-label">Anonymous</span>\n <svg class="zasdk-select-arrow" viewBox="0 0 12 8" width="12" height="8"><path d="M1 1l5 5 5-5" stroke="#999" stroke-width="1.5" fill="none" stroke-linecap="round"/></svg>\n </div>\n <div id="zasdkEmailPanel" class="zasdk-select-panel" style="display:none">\n <ul id="zasdkEmailList" class="zasdk-select-list"></ul>\n </div>\n </div>\n <label class="zasdkdesclbl" for="zasdkDescription">Add details here<span class="zasdkmadfeld">*</span> <span class="zaleftcharspan"><span class="zaleftcharcnt">5000</span><span class="zaleftchartxt">character left</span></span></label>\n <textarea id="zasdkDescription" name="description" placeholder="Please provide more details for us to help you better." reqname="name" maxlength="5000"></textarea>\n <div id="zasdkreccheckcnt" class="zasdkqz-container">\n <div class="zasdkqz-checkbox-wrapper">\n <input type="checkbox" id="zasdkqz-consent" class="zasdkqz-checkbox">\n <label for="zasdkqz-consent">By agreeing to record screen, I allow the collection of the required information for further analysis.</label>\n </div>\n <div id="zasdkqz-content" class="zasdkqz-content">\n <div class="zasdkqz-prop-content">Data collected while screen recording.\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container zasdk_rec_hdr">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip-top zasdk-prop-info">\n <ul>\n <li>- A recording of the window or region specified.</li>\n <li>- Audio captured during recording. (You can mute or re-record)</li>\n <li>- IP address.</li>\n <li>- Browser console logs generated while recording.</li>\n <li>- Device details (screen resolution, OS, and browser version).</li>\n <li>- Client-side performance metrics (DNS lookup time, TCP connection time, etc.).</li>\n </ul>\n </div>\n </div>\n </div>\n <div id="zasdkqz_rec_button" class="zasdkqz-button">Start screen recording</div>\n </div>\n </div>\n <div id="editRecordedVideo" class="zasdk_recordedClipArea" style="">\n <div id="recordScreenDesc" class="zasdk_rec_hdr"> Recorded Clip\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip">This recording will be sent along with your feedback for further analysis.</div>\n </div>\n </div>\n <div class="zasdk_playEdit">\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="preivewPlayButton" class="zasdk_clipAreaButton" title="Preview">\n <svg viewBox="0 0 24 24"><path d="M6.24,20.6c-.2,0-.39-.05-.57-.15-.38-.21-.62-.61-.62-1.05V4.59c0-.44.24-.84.62-1.05.38-.21.85-.19,1.22.04l11.52,7.41c.34.22.55.6.55,1,0,.41-.2.78-.55,1l-11.52,7.41c-.2.13-.42.19-.64.19ZM6.56,4.1l-.33.5v14.81s11.52-7.41,11.52-7.41L6.23,4.6l.33-.5Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Preview</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoEditButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M20.6,7.18c0-.58-.23-1.13-.65-1.54l-1.53-1.51c-.83-.83-2.29-.83-3.12,0l-1.31,1.3h0S4.88,14.41,4.88,14.41c-.12.12-.21.27-.26.44l-1.19,4.4c-.09.34,0,.7.26.95.19.18.44.29.7.29.09,0,.17-.01.26-.04l4.44-1.2c.16-.05.31-.13.44-.25l8.54-8.43h0s1.88-1.86,1.88-1.86c.06-.06.12-.12.17-.19h0c.31-.39.48-.86.48-1.36ZM8.72,18.12l-4.03,1.09,1.08-3.98L13.97,7.12l2.88,2.97-8.13,8.03ZM17.71,9.25l-2.88-2.97,1.32-1.3c.38-.38,1.04-.38,1.43,0l1.53,1.51c.19.18.29.43.29.69,0,.22-.08.43-.21.6h0s-.04.05-.08.08l-1.4,1.39Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Edit</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoDelButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M19.2,6.6h-3.4v-1c0-1.21-.99-2.2-2.2-2.2h-3.2c-1.21,0-2.2.99-2.2,2.2v1h-3.4c-.33,0-.6.27-.6.6s.27.6.6.6h1v10.6c0,1.21.99,2.2,2.2,2.2h8c1.21,0,2.2-.99,2.2-2.2V7.8h1c.33,0,.6-.27.6-.6s-.27-.6-.6-.6ZM9.4,5.6c0-.55.45-1,1-1h3.2c.55,0,1,.45,1,1v1h-5.2v-1ZM17,18.4c0,.55-.45,1-1,1h-8c-.55,0-1-.45-1-1V7.8h10v10.6ZM11,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6ZM14.2,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Delete</div>\n </div>\n </div>\n <div class="zasdk_videoPrev">\n <video id="previewVideoElemId" width="320" height="240" src=""></video>\n </div>\n </div>\n\n <div class="zasdk-buttons">\n <div class="zasdk-btncnt">\n <div id="zasdkattachinfo" class="zasdkattachinf">Maximum 5 attachments with a total file size of 10MB is allowed</div>\n <input type="file" id="zasdkFileInput" class="zasdk-file-input" multiple accept=".png, .jpg, .txt">\n <label id="zasdkAttachBtn" class="zasdk-btn zasdk-attach-btn" for="zasdkFileInput">\n <svg id="Layer_2" viewBox="0 0 24 24" style=" width: 25px; "><path d="M12,20.6c-2.63,0-4.78-2.14-4.78-4.78V6.78c0-1.87,1.52-3.38,3.38-3.38s3.38,1.52,3.38,3.38v9.04c0,1.1-.9,1.99-2,1.99s-1.99-.89-1.99-1.99V7.48c0-.33.27-.6.6-.6h0c.33,0,.6.27.6.6v8.35c0,.44.35.79.79.79s.79-.36.79-.79V6.78c0-1.2-.98-2.18-2.18-2.18s-2.18.98-2.18,2.18v9.04c0,1.97,1.6,3.58,3.58,3.58s3.58-1.6,3.58-3.58V6.78c0-.33.27-.6.6-.6s.6.27.6.6v9.04c0,2.63-2.14,4.78-4.78,4.78Z"/></svg>\n <span>Attachments</span>\n </label>\n <div id="zasdkfilesizeinfo" class="zasdkfilesizeinf"></div>\n <ul id="zasakfileList" class="zasakfilelstcnt"></ul>\n </div>\n </div>\n </div>\n <div class="zasdk-toggles-section">\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include System Logs</span>\n <span class="zasdk-view-link" id="zasdkViewLogsBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeLogToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n <div class="zasdk-toggle-separator"></div>\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include Diagnostic Information</span>\n <span class="zasdk-view-link" id="zasdkViewDiagBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeDiagToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n </div>\n <div class="zasdk_submit_btncnt">\n <div id="zasdksubmitstatus" class="zasdkstsmsg" style="display:none;" ></div>\n <div id="zasdk_submit_btnsubcnt" class="zasdk_submit_btnsubcnt">\n <input type="button" id="zasdk_submit_btn" class="zasdk-btn zasdk-send-btn zasdkbtndisableclr" value="Send">\n </div>\n </div>\n <div id="zasdkDataViewer" class="zasdk-data-viewer" style="display:none">\n <div class="zasdk-viewer-hdr">\n <span id="zasdkViewerClose" class="zasdk-viewer-back"><svg viewBox="0 0 24 24" width="20" height="20" fill="none"><path d="M15 19l-7-7 7-7" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>\n <span id="zasdkViewerTitle" class="zasdk-viewer-title"></span>\n </div>\n <pre id="zasdkViewerContent" class="zasdk-viewer-content"></pre>\n </div>\n </div>',timerHtml:'<div id="zasdkrectimer" class="zasdk-timer-container zasdk-tooltip-container">\n <div class="zasdk-timer-control" id="zasdkRecordButton"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-timer-display" id="zasdkTimerDisplay">05:00</span>\n <div class="zasdk-tooltip-top">Stop Recording</div>\n </div>',uploadFileAry:[],fileInput:null,selectedFiles:null,isScaled:!1,isHidden:!1,timerDisplay:null,recordButton:null,TOTAL_TIME:300,remainingTime:300,isRecording:!1,timerInterval:null,uploadTotalSize:0,MaxFileSize:10485760,_opts:{},typeObj:{bug:0,feedback:1,help:2,report:3},init:function(e){if(ro._opts=e||{},!_(n=document.getElementById("zasdkFeedbackModal")))return;const t=document.createElement("div");ro.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.innerHTML=ro.feedbackUIHtml,document.body.appendChild(t);var n=document.getElementById("zasdkFeedbackModal"),r=z._defaultoptions,i=r.quartz_workspace_key,o=r.quartz_department_key,a=_(r.DC)||"-"===r.DC?"":{Local:"https://quartz.localzoho.com",US:"https://quartz.zoho.com",EU:"https://quartz.zoho.eu",IN:"https://quartz.zoho.in",AU:"https://quartz.zoho.com.au",CN:"https://quartz.zoho.com.cn",CA:"https://quartz.zohocloud.ca",JP:"https://quartz.zoho.jp",SA:"https://quartz.zoho.sa",AE:"https://quartz.zoho.ae"}[r.DC]||"",s=n.querySelector("#appticsfeedbackclose"),c=n.querySelectorAll(".zasdk-feedback-type");ro.fileInput=n.querySelector("#zasdkFileInput");var d=n.querySelector("#zasdkqz_rec_button"),u=n.querySelector("#zasdk_submit_btn"),l=n.querySelector("#zasdk_submit_btnsubcnt");const f=n.querySelector("#zasdkqz-consent"),p=n.querySelector("#zasdkqz-content"),g=n.querySelector("#preivewPlayButton"),m=n.querySelector("#videoEditButton"),v=n.querySelector("#videoDelButton"),h=n.querySelector("#zasdkFeedbackconatiner"),k=n.querySelector("#zasdkDescription");!function(e){var t=e.querySelector(".zasdk-header");if(t){var n=0,r=0,i=0,o=0,a=!1;t.addEventListener("mousedown",function(s){if(!s.target.closest(".zasdk-close")){if(!e.style.left||"auto"===e.style.left){var c=e.getBoundingClientRect();e.style.right="auto",e.style.bottom="auto",e.style.left=c.left+"px",e.style.top=c.top+"px"}a=!0,n=s.clientX,r=s.clientY,i=parseInt(e.style.left,10),o=parseInt(e.style.top,10),t.style.cursor="grabbing",s.preventDefault()}}),document.addEventListener("mousemove",function(t){if(a){var s=i+(t.clientX-n),c=o+(t.clientY-r);e.style.left=Math.max(0,Math.min(s,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(c,window.innerHeight-e.offsetHeight))+"px"}}),document.addEventListener("mouseup",function(){a&&(a=!1,t.style.cursor="grab")})}}(h),Zi(n,!0===ro._opts.isAnonymous),Ji(n,ro._opts),ro.isScaled=!1,ro.isHidden=!1,document.removeEventListener("quartz-feedback-state",ro.bindQuartzEvent),document.addEventListener("quartz-feedback-state",ro.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",ro.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",ro.handleErrorQuartzEvent);var y=$i()&&!_(a)&&!_(i)&&"-"!==i&&!_(o)&&"-"!==o;if(n.querySelector("#zasdkreccheckcnt").style.display=y?"block":"none",h.addEventListener("transitionend",function(e){"transform"===e.propertyName&&ro.isScaled&&ro.toggleWindowAnimation()}),d.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:i,departmentLinkName:o,recordingDomain:a};ro.handleStatusmsg(),$i()?_(i)||_(o)||_(a)?ro.handleStatusmsg(!1,"Screen recording is not configured for this app."):Xi().startRecording(t):ro.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},s.onclick=function(){ro.close()},g.addEventListener("click",function(){Xi().previewVideo()}),m.addEventListener("click",function(){Xi().editVideo({quartzBranding:!1})}),v.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");Xi().clearFeedback(),f.checked=!1,p.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",ro.validateFeedbackField()}),u.addEventListener("click",async()=>{ro.validateFeedbackField(),u.disabled=!0,l.classList.add("zasdkbtndisabled"),u.value="";try{let e=n.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)ro.submitRecording();else{let e=n.querySelector("#zasdkDescription").value.trim();e.length>0?eo(to(n,e,"")):ro.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){F.error("sendFeedbackData : "+e)}}),f.addEventListener("change",function(){this.checked?p.classList.add("zasdkqz-show"):p.classList.remove("zasdkqz-show")}),k.addEventListener("input",ro.validateFeedbackField),c.forEach(function(e){e.addEventListener("click",function(){c.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof ro._opts.type){var b=Object.keys(ro.typeObj).filter(function(e){return ro.typeObj[e]===ro._opts.type})[0],S=b?n.querySelector('.zasdk-feedback-type[data-type="'+b+'"]'):null;S&&(c.forEach(function(e){e.classList.remove("zasdk-selected")}),S.classList.add("zasdk-selected"))}_(ro._opts.message)||(k.value=String(ro._opts.message),ro.updateLeftCount(),ro.validateFeedbackField()),ro.selectedFiles=no(),ro.fileInput.onchange=function(){const e=this;var t=ro.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return ro.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),ro.fileInput.files=t.files,void(e.files=t.files);if(e.files.length>0){let n=0;for(let r of e.files){if(n+=r.size,n>10485760)return ro.handleStatusmsg(!1,"Maximum limit reached. The total file size cannot exceed 10MB."),void(e.files=t.files);t.items.add(r)}e.files=t.files,ro.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},ro.handleStatusmsg(),ro.updateLeftCount()},updateLeftCount:function(){document.querySelectorAll("[reqname]").forEach(function(e){let t=e.value,n=parseInt(e.getAttribute("maxlength")||"",10),r=e.parentElement?e.parentElement.querySelector(".zaleftcharcnt"):null;r&&(r.textContent=String(n-t.length))})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!_(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),o=n.querySelector("#zasdk_submit_btnsubcnt"),a="",s="";r.style.display="none",_(e)||(a=e?"zasdkstssucs":"zasdkstserror",s=_(t)?"":t,r.textContent=s,r.classList.add(a),r.style.display="block",o.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=Qi().ErrorType.RECORDING_INTERRUPTED&&t!=Qi().ErrorType.FEEDBACK_TIMEOUT||ro.stopRecording(),ro.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){if(e.detail.feedbackState==Qi().FeedbackState.RECORDING_IN_PROGRESS){_(t=document.getElementById("zasdkrectimer"))||t.remove();const e=document.createElement("div");e.innerHTML=ro.timerHtml;const n=e.firstElementChild;document.body.appendChild(n);var t=document.getElementById("zasdkrectimer");ro.timerDisplay=t.querySelector("#zasdkTimerDisplay"),ro.recordButton=t,ro.TOTAL_TIME=300,ro.remainingTime=ro.TOTAL_TIME,ro.isRecording=!0,ro.recordButton.addEventListener("click",ro.toggleRecording),ro.startRecording(),ro.toggleWindowAnimation()}},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("quartz-feedback-state",ro.bindQuartzEvent),Xi().clearFeedback(),_(e)||e.remove()},toggleWindowAnimation:function(){var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkFeedbackconatiner");ro.isHidden?(e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",ro.validateFeedbackField()},10),ro.isHidden=!1,ro.isScaled=!1):ro.isScaled?(e.style.display="none",ro.isHidden=!0):(t.style.transform="scale(0)",ro.isScaled=!0)},fileAttachment:function(){var e=ro.fileInput.files;ro.uploadTotalSize=0,ro.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return ro.fileLimitExceeded(!1,!0),void ro.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,o=0;o<e.length;o++){var a=e[o].name,s=a.substring(0,a.lastIndexOf(".")),c=a.substring(a.lastIndexOf(".")+1);i+=e[o].size;var d=ro.elementCreator("li");d.title=a;var u=ro.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=ro.elementCreator("span");l.innerText="."+c;var f=ro.elementCreator("span");f.className="zasdkFdBckFlCls",f.setAttribute("data-name",a),f.innerHTML="×",d.appendChild(u),d.appendChild(l),d.appendChild(f),r.appendChild(d)}var p=i>ro.MaxFileSize;ro.fileLimitExceeded(p),n.textContent=`${ro.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){ro.handleStatusmsg(),ro.removeFileFromList(this),ro.fileAttachment()})})}ro.validateFeedbackField()},elementCreator:function(e){return document.createElement(e)},fileLimitExceeded:function(e,t){var n="";(t||e)&&(n=t?"Maximum 5 attachments is allowed":"Maximum limit reached. The total file size cannot exceed 10MB."),ro.handleStatusmsg(!1,n)},removeFileFromList:function(e){e.getAttribute("data-name");const t=e.parentElement,n=Array.from(t.parentElement.children).indexOf(t);t.remove();let r=no();if(ro.selectedFiles=no(),null!==r&&null!==ro.selectedFiles){for(let e=0;e<ro.fileInput.files.length;e++)e!==n&&(r.items.add(ro.fileInput.files[e]),ro.selectedFiles.items.add(ro.fileInput.files[e]));ro.fileInput.files=r.files}},formatFileSize:function(e){if(0===e)return"0 KB";const t=1024,n=e/t,r=e/(t*t),i=e/(t*t*t);return i>=1?i.toFixed(2)+" GB":r>=1?r.toFixed(2)+" MB":n.toFixed(2)+" KB"},toggleRecording:function(){ro.isRecording=!ro.isRecording,ro.isRecording?ro.startRecording():ro.stopRecording()},startRecording:function(){ro.timerInterval||(ro.timerInterval=setInterval(ro.updateTimer,1e3))},stopRecording:function(){var e=document.getElementById("zasdkFeedbackModal");clearInterval(ro.timerInterval||void 0),ro.timerInterval=null,document.querySelector("#zasdkrectimer").remove(),ro.toggleWindowAnimation(),e.querySelector("#editRecordedVideo").style.display="block",e.querySelector("#zasdkreccheckcnt").style.display="none";let t=e.querySelector("#previewVideoElemId");Xi().endRecording(),Xi().setVideoContent(t)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=Hi.anonymous?"":String(Hi.userid||""),r=_(z._user_info.userid)?"":String(z._user_info.userid),i=_(n)?r:n,o=t.querySelector("#zasdkDescription").value.trim()||"-";i=/^[\w]([\w\-\.\+\'=]*)@([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/.test(i)&&Fe()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",Xi().submitRecording({email:i,subject:o}).then(e=>{var n=!k(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";eo(to(t,o,n))}).catch(e=>{F.error("submitRecording : "+e),ro.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){ro.remainingTime>0?(ro.remainingTime--,ro.updateDisplay()):ro.stopRecording()},updateDisplay:function(){const e=Math.floor(ro.remainingTime/60),t=ro.remainingTime%60;ro.timerDisplay.textContent=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`},validateFeedbackField:function(){ro.updateLeftCount();var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkDescription"),n=e.querySelector("#zasdkFileInput"),r=e.querySelector("#previewVideoElemId"),i=e.querySelector("#zasdk_submit_btn"),o=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const a=e.querySelectorAll(".zasdkmaxerror");!(ro.getVisibleErrorCount(a)>0)&&o?(i.classList.remove("zasdkbtndisableclr"),ro.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},io={feedbackOpen:W("feedbackOpen",function(e,t,n,r,i,o,a){const s={includeLog:!0===n,includeDyninfo:!0===r,isAnonymous:!0===a};"number"==typeof e&&(s.type=e),"string"==typeof t&&t.length>0&&(s.message=t),i&&i.length>0&&(s.attachments=i),o&&o.length>0&&(s.logFiles=o),ro.init(s)}),feedbackClose:W("feedbackClose",function(){ro.close()}),sendFeedback:W("sendFeedback",function(...e){return Hr().then(function(t){if(!t)throw new Error("apptics.sendFeedback: not sent, the SDK has not started; call init() first");return function(e,t,n,r,i,o){return eo({type:_(e)?1:e,message:t||"",attachment:n||null,logsFiles:r||null,includeDyninfo:i,includeLog:o,quartzid:""}).then(function(e){if(!e)throw new Error("apptics.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("apptics.sendFeedback: not sent, "+e.message)})}(...e)}).catch(function(e){throw F.error("apptics.sendFeedback failed:",e),e})})};var oo=!1,ao=0,so=[],co=0,uo=0,lo=0,fo=null,po=0,go=0;function mo(){var e=T("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(ao>=e)||(ao===e&&(ao++,F.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function vo(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function ho(e,t){if(!t||t<=0)return 0;var n=e/t;return n<0&&(n=0),n>1&&(n=1),Math.round(1e3*n)/1e3}function _o(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var i=t.getAttribute?t.getAttribute(n[r]):null;if(!_(i))return String(i).slice(0,80)}var o=t.tagName?t.tagName.toLowerCase():"element";if(Ze()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return _(a)?o:o+"["+a+"]"}var s=(t.textContent||"").replace(/\s+/g," ").trim();return _(s)?o:s.slice(0,80)}function ko(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,o=0;if(i)for(var a=i.children,s=0;s<a.length;s++)if(a[s]===n){o=s;break}t="/"+(n.tagName||"?")+":"+o+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function yo(e,t,n){return(so=so.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),so.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function bo(){return{id:A(),session_start_time:z._current_session.starttime||v(),triggered_time:v(),screen:String(Wn()).slice(0,500),url_path:String(window.location.pathname).slice(0,500),screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,content_height:vo(),orientation:Re(),network_status:De(),edge_type:z._device_info.connectionType||Ce(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function So(e){ao++,Oe(),Yt(),ye.add(e),F.dir(e)}function wo(e){if(Ve("heatmap")&&mo())try{var t=v(),n=e.target,r=function(e){for(var t=0;e&&t<10;){var n=e.tagName?e.tagName.toLowerCase():"",r=e.getAttribute?e.getAttribute("role"):null;if("a"===n||"button"===n||"input"===n||"select"===n||"textarea"===n||"summary"===n||"label"===n||"button"===r||"link"===r||"tab"===r||"menuitem"===r||e.hasAttribute&&e.hasAttribute("onclick"))return e;e=e.parentElement,t++}return null}(n),i=r||n,a=Math.round(e.clientX),s=Math.round(e.clientY),c=vo()||1,d=e.pointerType,u=Object.assign(bo(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:_(d)?"mouse":String(d),element_label:_o(i),triggered_id:ko(i),coordinate_x:a,coordinate_y:s,normalized_x:ho(a,window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1),normalized_y:ho((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:yo(a,s,t)?1:0,is_dead_click:0});So(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,n=window.location.href,r=new MutationObserver(function(){t=!0});try{r.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){r.disconnect(),t||window.location.href!==n||(e.is_dead_click=1,ye.update(e))},1500)}(u)}catch(e){B(o.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function Eo(){Ve("heatmap")&&mo()&&(null===fo?(co=v(),uo=po,lo=go):clearTimeout(fo),fo=setTimeout(Ao,150))}function Ao(){fo=null;try{var e=Math.round(window.scrollX||0),t=Math.round(window.scrollY||0),n=e-uo,r=t-lo;if(po=e,go=t,0===n&&0===r)return;var i=Math.max(1,v()-co),a=Math.sqrt(n*n+r*r),s=Math.abs(r)>=Math.abs(n)?r>0?"down-scroll":"up-scroll":n>0?"right-scroll":"left-scroll",c=vo()||1;So(Object.assign(bo(),{triggered_type:"default",gesture_type:s,gesture_duration:Math.round(i),element_label:"",triggered_id:0,coordinate_x:e,coordinate_y:t,normalized_x:0,normalized_y:ho(t+(window.innerHeight||0),c),velocity:Math.round(a/i*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){B(o.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function zo(e){var t="boolean"!=typeof e||e;if(t!==oo){if(t)return po=Math.round(window.scrollX||0),go=Math.round(window.scrollY||0),window.addEventListener("pointerdown",wo,{capture:!0,passive:!0}),window.addEventListener("scroll",Eo,{capture:!0,passive:!0}),oo=!0,void F.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",wo,!0),window.removeEventListener("scroll",Eo,!0),null!==fo&&(clearTimeout(fo),fo=null),oo=!1,F.log("apptics.heatmap: capture stopped")}}P.enableHeatmap=zo,P.resetHeatmap=function(){ao=0,so=[],po=0,go=0},P.sendHeatmaps=function e(t){return!je()&&Ue()&&z._heatmapTracking?0==navigator.onLine?(F.warn("sendHeatmapData: No Network"),Promise.resolve()):z._sending?(dr(e),Promise.resolve()):(z._sending=!0,ur(),lr("heatmaps",function(){return fr(ye,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return S(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),gr(function(e,t){return pr("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return ye.remove(r)},function(e){return ot(e)?(U("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),ye.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){F.log("sendHeatmapData:"+e)}).then(function(){z._sending=!1})):Promise.resolve()};const To={enableHeatmap:W("enableHeatmap",zo)},Oo="remoteconfig_custom";var Po={};function Io(){var e=we.item(Oo);return e&&"object"==typeof e?e:{}}const Co=Object.freeze({1:"in"}),Do=Object.freeze({appversion:function(){return String(z._defaultoptions.appversion||"")},platform:function(){return String(z._platform||"")},browser:function(){return String(z._device_info.browser||"")},browserversion:function(){return String(z._device_info.browserversion||"")},osversion:function(){return String(z._device_info.osversion||"")},devicetype:function(){return String(z._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},customergroupid:function(){return String(z._user_info.groupid||"")},userid:function(){return String(z._user_info.userid||"")}});var No={};function Ro(e,t){No[e]||(No[e]=!0,F.warn(t))}function Lo(){No={}}function xo(e){var t=String(e.key||"");if(void 0===Co[String(e.status)])return Ro("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var n=Do[t],r=void 0!==n?n():function(e){if(Object.prototype.hasOwnProperty.call(Po,e)){var t=Po[e];return null===t?void 0:t}var n=Io();return Object.prototype.hasOwnProperty.call(n,e)?n[e]:void 0}(t);return void 0===r?(Ro("key:"+t,'AppticsRemoteConfig: no value for criteria "'+t+'"; set one with setCustomConditionValue, or conditions using it will not match'),!1):""!==r&&-1!==function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):_(t)?[]:[String(t)]}(e).indexOf(r)}function qo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!xo(t[n]))return!1;return!0}function jo(e,t){for(var n=function(e){var t=e.conditions;return Array.isArray(t)?t.slice().sort(function(e,t){return Number(e.conditionorder||0)-Number(t.conditionorder||0)}):[]}(e),r=0;r<n.length;r++){var i=n[r],o=t[String(i.conditionid)];if(void 0!==o){if(qo(o))return String(void 0===i.value||null===i.value?"":i.value)}else Ro("missing:"+i.conditionid,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+i.conditionid+", which the server did not send")}return String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}function Mo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[],i={};return r.forEach(function(e){i[String(e.conditionid)]=e}),n.forEach(function(e){var n=String(e.paramname||"");""!==n&&(t[n]=jo(e,i))}),t}const Fo="remoteconfig";var Uo={},Bo=!1;function Ho(){var e=we.item(Fo);return e&&"object"==typeof e?e:null}function Vo(){var e=Ho();return e&&"number"==typeof e.flagtime?e.flagtime:0}function Go(e){var t=Array.isArray(e.version)?e.version:[],n=0;return t.forEach(function(e){var t=Number(e.date);isFinite(t)&&t>n&&(n=t)}),n}function Zo(){var e=Ho();Uo=e&&e.rules?Mo(e.rules):{},Bo=!0}function Wo(){return Bo||Zo(),Uo}const Jo="AppticsRemoteConfig",Ko=[Number(a.REMOTE_CONFIG)];var Yo=null,$o=0;var Xo=0,Qo=[];function ea(){if(null!==Yo)return Yo;if(!1===z._remoteConfigEnabled||!1===z._remoteConfigReported)return F.log(Jo+": switched off by the server, not asking"),Promise.resolve({});var e=lt(Jo)||pt(Jo);if(e)return e;var t,n,r=$o,i=st("getupdates",(t={appversionid:String(z._device_info.appversionid||""),moduleids:Ko,flagtime:Vo()},n=String(navigator.language||"").slice(0,10),""!==n&&(t.languagecode=n),JSON.stringify(t)),rt(),Jo).then(function(e){var t=e.data||{};if(r!==$o)return t;!function(e){var t=e.tracking_status;if(t&&"object"==typeof t){var n=t[a.REMOTE_CONFIG];n&&"object"==typeof n&&(z._remoteConfigReported=!1!==n.enabled)}}(t);var n=t.remoteconfig,i=v();return Xo=i,n&&"object"==typeof n?function(e,t){Lo();var n={flagtime:Go(e)||t,rules:e,fetchedat:t};we.add(Fo,n),Uo=Mo(e),Bo=!0,F.log("AppticsRemoteConfig: "+Object.keys(Uo).length+" parameters, published "+n.flagtime)}(n,i):(!function(e){var t=Ho();null!==t&&(t.fetchedat=e,we.add(Fo,t))}(i),F.log(Jo+": no changes since "+Vo())),t}).then(function(e){return o(),e},function(e){return o(),Promise.reject(e)});function o(){Yo===i&&(Yo=null)}return Yo=i}function ta(e){return Hr().then(function(t){if(!t)return!1;var n=v();if(!0!==e&&Xo>0&&n-Xo<3e5)return!0;if(!0===e){if((Qo=Qo.filter(function(e){return n-e<6e4})).length>=3)return F.warn(Jo+": coldFetch is limited to 3 a minute; this one is not sent"),!1;Qo.push(n)}return Ct().then(function(){return ea()}).then(function(){return!0},function(e){return F.log(Jo+": fetch failed: "+String(e)),!1})})}function na(){ta(!1)}function ra(e){var t=Wo();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0}P.resetRemoteConfig=function(){$o++,Yo=null,Xo=0,Qo=[],z._remoteConfigReported=!0,Po={},we.add(Fo,void 0),Uo={},Bo=!1,Lo()},P.remoteConfigStarted=na,P.remoteConfigUserChanged=Zo,z._ready&&na();var ia=!0;function oa(e,t){if("function"==typeof t)try{t(e)}catch(e){F.warn("AppticsRemoteConfig: the callback threw",e)}return e}const aa={fetchValue:W("AppticsRemoteConfig.fetchValue",function(e,t,n){return ta(n).then(function(n){var r=n||ia?ra(e):void 0;return oa(void 0===r?null:r,t)})}),fetchValues:W("AppticsRemoteConfig.fetchValues",function(e,t,n){return ta(n).then(function(n){var r={};return Object.keys(e||{}).forEach(function(t){var i=n||ia?ra(t):void 0;r[t]=void 0===i?e[t]:i}),oa(r,t)})}),setFallbackWithOfflineValue:W("AppticsRemoteConfig.setFallbackWithOfflineValue",function(e){ia="boolean"!=typeof e||e}),setCustomConditionValue:W("AppticsRemoteConfig.setCustomConditionValue",function(e,t){var n="string"==typeof e?e.trim():"";if(""!==n){var r=null==t?"":String(t).trim();Po[n]=""===r?null:r,ge().then(function(e){if(e){var t=Io();Object.keys(Po).forEach(function(e){var n=Po[e];null==n?delete t[e]:t[e]=n}),we.add(Oo,t),Zo()}})}else F.warn("AppticsRemoteConfig.setCustomConditionValue: a condition key is required")})};!function(e){try{if(!e||"undefined"==typeof document)return;for(var t=new URL("style.css",e).href,n=document.querySelectorAll('link[rel="stylesheet"]'),r=0;r<n.length;r++)if(n[r].href===t)return;var i=document.createElement("link");i.rel="stylesheet",i.href=t,i.setAttribute("data-apptics","style"),(document.head||document.documentElement).appendChild(i)}catch(e){}}(document.currentScript?document.currentScript.src:null);const sa=Object.assign(Li,io,To,{AppticsRemoteConfig:aa});window.apptics=sa,window.Apptics=sa.Apptics,window.AppticsEvents=sa.AppticsEvents,window.AppticsScreenTracker=sa.AppticsScreenTracker,window.AppticsApiTracker=sa.AppticsApiTracker,window.AppticsLogger=sa.AppticsLogger,window.AppticsTrackError=sa.AppticsTrackError,window.AppticsSetUser=sa.AppticsSetUser,window.AppticsRemoteConfig=aa,ai(sa.Apptics)}();
|
|
3
|
+
//# sourceMappingURL=apptics.min.js.map
|