@zoho_apptics/apptics-js-sdk 2.0.0-beta → 2.0.0-beta.2

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.
Files changed (236) hide show
  1. package/CHANGELOG.md +191 -21
  2. package/README.md +519 -333
  3. package/dist/apptics.esm.min.js +2 -2
  4. package/dist/apptics.esm.min.js.map +1 -1
  5. package/dist/apptics.min.js +2 -2
  6. package/dist/apptics.min.js.map +1 -1
  7. package/dist/chunks/lifecycle-C6m1W7jo.min.js +3 -0
  8. package/dist/chunks/lifecycle-C6m1W7jo.min.js.map +1 -0
  9. package/dist/chunks/send-CgUO82ne.min.js +3 -0
  10. package/dist/chunks/send-CgUO82ne.min.js.map +1 -0
  11. package/dist/cjs/core/attempts.js +1 -1
  12. package/dist/cjs/core/batch.js +2 -2
  13. package/dist/cjs/core/consent.d.ts +18 -4
  14. package/dist/cjs/core/consent.js +31 -15
  15. package/dist/cjs/core/constants.d.ts +57 -27
  16. package/dist/cjs/core/constants.js +52 -33
  17. package/dist/cjs/core/db.d.ts +12 -4
  18. package/dist/cjs/core/db.js +167 -34
  19. package/dist/cjs/core/debug.js +1 -1
  20. package/dist/cjs/core/env.d.ts +0 -3
  21. package/dist/cjs/core/env.js +1 -9
  22. package/dist/cjs/core/framework-id.d.ts +1 -1
  23. package/dist/cjs/core/framework-id.js +3 -3
  24. package/dist/cjs/core/guard.d.ts +9 -0
  25. package/dist/cjs/core/guard.js +27 -13
  26. package/dist/cjs/core/hooks.d.ts +7 -4
  27. package/dist/cjs/core/hooks.js +3 -3
  28. package/dist/cjs/core/locks.d.ts +9 -0
  29. package/dist/cjs/core/locks.js +22 -0
  30. package/dist/cjs/core/logger.d.ts +3 -4
  31. package/dist/cjs/core/logger.js +4 -40
  32. package/dist/cjs/core/state.d.ts +9 -6
  33. package/dist/cjs/core/state.js +3 -5
  34. package/dist/cjs/core/storage.d.ts +20 -5
  35. package/dist/cjs/core/storage.js +115 -20
  36. package/dist/cjs/core/stylesheet.d.ts +8 -0
  37. package/dist/cjs/core/stylesheet.js +29 -0
  38. package/dist/cjs/core/transport.d.ts +2 -0
  39. package/dist/cjs/core/transport.js +30 -18
  40. package/dist/cjs/core/utils.js +1 -1
  41. package/dist/cjs/core/validate.js +2 -2
  42. package/dist/cjs/device/appversion.d.ts +10 -6
  43. package/dist/cjs/device/appversion.js +38 -3
  44. package/dist/cjs/device/index.d.ts +28 -2
  45. package/dist/cjs/device/index.js +312 -44
  46. package/dist/cjs/engagement/api-rules.d.ts +32 -67
  47. package/dist/cjs/engagement/api-rules.js +144 -157
  48. package/dist/cjs/engagement/auto-api.js +2 -2
  49. package/dist/cjs/engagement/auto-screen.d.ts +2 -0
  50. package/dist/cjs/engagement/auto-screen.js +67 -3
  51. package/dist/cjs/engagement/defined-events.js +1 -1
  52. package/dist/cjs/engagement/send.js +12 -3
  53. package/dist/cjs/engagement/session.d.ts +29 -3
  54. package/dist/cjs/engagement/session.js +253 -26
  55. package/dist/cjs/engagement/track.d.ts +4 -4
  56. package/dist/cjs/engagement/track.js +58 -30
  57. package/dist/cjs/errors/send.js +2 -2
  58. package/dist/cjs/errors/track.d.ts +2 -1
  59. package/dist/cjs/errors/track.js +49 -7
  60. package/dist/cjs/feedback/controls.d.ts +12 -0
  61. package/dist/cjs/feedback/controls.js +104 -25
  62. package/dist/cjs/feedback/index.d.ts +8 -7
  63. package/dist/cjs/feedback/index.js +32 -13
  64. package/dist/cjs/feedback/logs.d.ts +13 -11
  65. package/dist/cjs/feedback/logs.js +57 -28
  66. package/dist/cjs/feedback/quartz.d.ts +18 -0
  67. package/dist/cjs/feedback/quartz.js +105 -0
  68. package/dist/cjs/feedback/send.d.ts +5 -2
  69. package/dist/cjs/feedback/send.js +30 -28
  70. package/dist/cjs/feedback/styles.d.ts +10 -0
  71. package/dist/cjs/feedback/styles.js +8 -0
  72. package/dist/cjs/feedback/template.d.ts +1 -1
  73. package/dist/cjs/feedback/template.js +20 -12
  74. package/dist/cjs/feedback/ui.d.ts +21 -6
  75. package/dist/cjs/feedback/ui.js +283 -70
  76. package/dist/cjs/heatmap/send.d.ts +2 -0
  77. package/dist/cjs/heatmap/send.js +3 -5
  78. package/dist/cjs/heatmap/track.d.ts +1 -1
  79. package/dist/cjs/heatmap/track.js +87 -16
  80. package/dist/cjs/index.d.ts +16 -63
  81. package/dist/cjs/index.js +144 -95
  82. package/dist/cjs/lifecycle.d.ts +21 -3
  83. package/dist/cjs/lifecycle.js +353 -89
  84. package/dist/cjs/remoteconfig/country.d.ts +4 -0
  85. package/dist/cjs/remoteconfig/country.js +73 -0
  86. package/dist/cjs/remoteconfig/custom.d.ts +7 -7
  87. package/dist/cjs/remoteconfig/custom.js +31 -51
  88. package/dist/cjs/remoteconfig/evaluate.d.ts +3 -3
  89. package/dist/cjs/remoteconfig/evaluate.js +56 -43
  90. package/dist/cjs/remoteconfig/fetch.d.ts +16 -9
  91. package/dist/cjs/remoteconfig/fetch.js +120 -39
  92. package/dist/cjs/remoteconfig/index.d.ts +19 -8
  93. package/dist/cjs/remoteconfig/index.js +81 -39
  94. package/dist/cjs/remoteconfig/store.d.ts +15 -7
  95. package/dist/cjs/remoteconfig/store.js +68 -35
  96. package/dist/cjs/remoteconfig/tz-countries.d.ts +8 -0
  97. package/dist/cjs/remoteconfig/tz-countries.js +13 -0
  98. package/dist/{esm/core → cjs/remotelog}/callsite.d.ts +11 -4
  99. package/dist/cjs/{core → remotelog}/callsite.js +30 -7
  100. package/dist/cjs/remotelog/gate.d.ts +2 -11
  101. package/dist/cjs/remotelog/gate.js +9 -35
  102. package/dist/cjs/remotelog/index.d.ts +4 -21
  103. package/dist/cjs/remotelog/logger.d.ts +11 -17
  104. package/dist/cjs/remotelog/logger.js +31 -59
  105. package/dist/cjs/remotelog/send.js +11 -11
  106. package/dist/cjs/remotelogger/index.d.ts +12 -0
  107. package/dist/cjs/remotelogger/index.js +18 -0
  108. package/dist/cjs/scheduler.d.ts +3 -1
  109. package/dist/cjs/scheduler.js +25 -22
  110. package/dist/cjs/types.d.ts +208 -90
  111. package/dist/cjs/user/index.js +16 -7
  112. package/dist/esm/core/attempts.js +1 -1
  113. package/dist/esm/core/batch.js +2 -2
  114. package/dist/esm/core/consent.d.ts +18 -4
  115. package/dist/esm/core/consent.js +32 -17
  116. package/dist/esm/core/constants.d.ts +57 -27
  117. package/dist/esm/core/constants.js +51 -33
  118. package/dist/esm/core/db.d.ts +12 -4
  119. package/dist/esm/core/db.js +164 -35
  120. package/dist/esm/core/debug.js +1 -1
  121. package/dist/esm/core/env.d.ts +0 -3
  122. package/dist/esm/core/env.js +2 -9
  123. package/dist/esm/core/framework-id.d.ts +1 -1
  124. package/dist/esm/core/framework-id.js +3 -3
  125. package/dist/esm/core/guard.d.ts +9 -0
  126. package/dist/esm/core/guard.js +27 -14
  127. package/dist/esm/core/hooks.d.ts +7 -4
  128. package/dist/esm/core/hooks.js +3 -3
  129. package/dist/esm/core/locks.d.ts +9 -0
  130. package/dist/esm/core/locks.js +20 -0
  131. package/dist/esm/core/logger.d.ts +3 -4
  132. package/dist/esm/core/logger.js +4 -40
  133. package/dist/esm/core/state.d.ts +9 -6
  134. package/dist/esm/core/state.js +3 -5
  135. package/dist/esm/core/storage.d.ts +20 -5
  136. package/dist/esm/core/storage.js +113 -21
  137. package/dist/esm/core/stylesheet.d.ts +8 -0
  138. package/dist/esm/core/stylesheet.js +27 -0
  139. package/dist/esm/core/transport.d.ts +2 -0
  140. package/dist/esm/core/transport.js +30 -19
  141. package/dist/esm/core/utils.js +1 -1
  142. package/dist/esm/core/validate.js +2 -2
  143. package/dist/esm/device/appversion.d.ts +10 -6
  144. package/dist/esm/device/appversion.js +37 -4
  145. package/dist/esm/device/index.d.ts +28 -2
  146. package/dist/esm/device/index.js +313 -49
  147. package/dist/esm/engagement/api-rules.d.ts +32 -67
  148. package/dist/esm/engagement/api-rules.js +143 -155
  149. package/dist/esm/engagement/auto-api.js +3 -3
  150. package/dist/esm/engagement/auto-screen.d.ts +2 -0
  151. package/dist/esm/engagement/auto-screen.js +67 -4
  152. package/dist/esm/engagement/defined-events.js +1 -1
  153. package/dist/esm/engagement/send.js +12 -3
  154. package/dist/esm/engagement/session.d.ts +29 -3
  155. package/dist/esm/engagement/session.js +251 -30
  156. package/dist/esm/engagement/track.d.ts +4 -4
  157. package/dist/esm/engagement/track.js +65 -37
  158. package/dist/esm/errors/send.js +2 -2
  159. package/dist/esm/errors/track.d.ts +2 -1
  160. package/dist/esm/errors/track.js +49 -7
  161. package/dist/esm/feedback/controls.d.ts +12 -0
  162. package/dist/esm/feedback/controls.js +103 -26
  163. package/dist/esm/feedback/index.d.ts +8 -7
  164. package/dist/esm/feedback/index.js +34 -13
  165. package/dist/esm/feedback/logs.d.ts +13 -11
  166. package/dist/esm/feedback/logs.js +59 -30
  167. package/dist/esm/feedback/quartz.d.ts +18 -0
  168. package/dist/esm/feedback/quartz.js +99 -0
  169. package/dist/esm/feedback/send.d.ts +5 -2
  170. package/dist/esm/feedback/send.js +31 -31
  171. package/dist/esm/feedback/styles.d.ts +10 -0
  172. package/dist/esm/feedback/styles.js +4 -0
  173. package/dist/esm/feedback/template.d.ts +1 -1
  174. package/dist/esm/feedback/template.js +20 -12
  175. package/dist/esm/feedback/ui.d.ts +21 -6
  176. package/dist/esm/feedback/ui.js +283 -71
  177. package/dist/esm/heatmap/send.d.ts +2 -0
  178. package/dist/esm/heatmap/send.js +3 -5
  179. package/dist/esm/heatmap/track.d.ts +1 -1
  180. package/dist/esm/heatmap/track.js +87 -16
  181. package/dist/esm/index.d.ts +16 -63
  182. package/dist/esm/index.js +148 -83
  183. package/dist/esm/lifecycle.d.ts +21 -3
  184. package/dist/esm/lifecycle.js +359 -98
  185. package/dist/esm/remoteconfig/country.d.ts +4 -0
  186. package/dist/esm/remoteconfig/country.js +70 -0
  187. package/dist/esm/remoteconfig/custom.d.ts +7 -7
  188. package/dist/esm/remoteconfig/custom.js +32 -52
  189. package/dist/esm/remoteconfig/evaluate.d.ts +3 -3
  190. package/dist/esm/remoteconfig/evaluate.js +57 -44
  191. package/dist/esm/remoteconfig/fetch.d.ts +16 -9
  192. package/dist/esm/remoteconfig/fetch.js +120 -39
  193. package/dist/esm/remoteconfig/index.d.ts +19 -8
  194. package/dist/esm/remoteconfig/index.js +82 -40
  195. package/dist/esm/remoteconfig/store.d.ts +15 -7
  196. package/dist/esm/remoteconfig/store.js +68 -36
  197. package/dist/esm/remoteconfig/tz-countries.d.ts +8 -0
  198. package/dist/esm/remoteconfig/tz-countries.js +11 -0
  199. package/dist/{cjs/core → esm/remotelog}/callsite.d.ts +11 -4
  200. package/dist/esm/{core → remotelog}/callsite.js +30 -8
  201. package/dist/esm/remotelog/gate.d.ts +2 -11
  202. package/dist/esm/remotelog/gate.js +10 -32
  203. package/dist/esm/remotelog/index.d.ts +4 -21
  204. package/dist/esm/remotelog/logger.d.ts +11 -17
  205. package/dist/esm/remotelog/logger.js +33 -61
  206. package/dist/esm/remotelog/send.js +13 -13
  207. package/dist/esm/remotelogger/index.d.ts +12 -0
  208. package/dist/esm/remotelogger/index.js +13 -0
  209. package/dist/esm/scheduler.d.ts +3 -1
  210. package/dist/esm/scheduler.js +26 -24
  211. package/dist/esm/types.d.ts +208 -90
  212. package/dist/esm/user/index.js +18 -8
  213. package/dist/feedback.esm.min.js +2 -2
  214. package/dist/feedback.esm.min.js.map +1 -1
  215. package/dist/remoteconfig.esm.min.js +3 -0
  216. package/dist/remoteconfig.esm.min.js.map +1 -0
  217. package/dist/remotelogger.esm.min.js +3 -0
  218. package/dist/remotelogger.esm.min.js.map +1 -0
  219. package/package.json +16 -17
  220. package/dist/chunks/batch-BU_mTpm1.min.js +0 -3
  221. package/dist/chunks/batch-BU_mTpm1.min.js.map +0 -1
  222. package/dist/chunks/logs-Bea5zUW_.min.js +0 -3
  223. package/dist/chunks/logs-Bea5zUW_.min.js.map +0 -1
  224. package/dist/cjs/auto-init.d.ts +0 -8
  225. package/dist/cjs/auto-init.js +0 -32
  226. package/dist/cjs/heatmap/index.d.ts +0 -16
  227. package/dist/cjs/heatmap/index.js +0 -22
  228. package/dist/cjs/remotelog/index.js +0 -55
  229. package/dist/esm/auto-init.d.ts +0 -8
  230. package/dist/esm/auto-init.js +0 -29
  231. package/dist/esm/heatmap/index.d.ts +0 -16
  232. package/dist/esm/heatmap/index.js +0 -17
  233. package/dist/esm/remotelog/index.js +0 -51
  234. package/dist/heatmap.esm.min.js +0 -3
  235. package/dist/heatmap.esm.min.js.map +0 -1
  236. package/dist/style.css +0 -1
@@ -1,3 +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="&times;",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)}();
1
+ /*! @zoho_apptics/apptics-js-sdk v2.0.0-beta.2 | (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"}),a=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),o=Object.freeze({REMOTE_CONFIG:"2",EVENT:"5",API:"6",SCREEN:"10",SESSION:"11",FEEDBACK:"12",JS_ERROR:"15",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,debug:!1,ignore_do_not_track:!1,track_api:!1,track_screen:!0,track_error:!0,track_click:!0,screen_routes:[],feedback_theme:"auto",min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["base_url","auth_key","app_domain","appversion"]),u=Object.freeze({base_url:"serviceUrl",auth_key:"zak",app_domain:"identifier"}),l=Object.freeze({engagement:!0,error:!0,consolelog:!0}),f=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),p=Object.freeze({addversion:!0}),g=Object.freeze({serviceUrl:"base_url",base_domain:"base_url",zak:"auth_key",token:"auth_key",identifier:"app_domain"}),m=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"]),v={};function h(){return Math.round((new Date).getTime())}function k(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function b(e){return null==e||""===e}function _(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 z(e){return JSON.parse(JSON.stringify(e))}function A(e){let t=0;return function e(value){if(null!==value&&"object"==typeof value)for(const key in value)Object.prototype.hasOwnProperty.call(value,key)&&(t+=2*key.length,e(value[key]));else"string"==typeof value?t+=2*value.length:"number"==typeof value?t+=8:"boolean"==typeof value&&(t+=4)}(e),t}function w(e,t){return-1!==e.indexOf(t)}function S(){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 a(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=a(i,r),r=[]);return r.length>0&&(i=a(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const E={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:6003,_platform:n.BROWSER,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_shouldTrack:!0,_engagementTracking:{event:!0,screen:!0,session:!0,api:!0},_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartz:{enabled:!1,workspace:"",department:"",domain:"",cdnUrl:""},_trackinfo:{}};function x(key){return E._config[key]}function T(e){return!("number"!=typeof e||!isFinite(e))&&(e<h()-24*x("batch_request_timeout")*60*60*1e3||e>h()+6e4)}const P="undefined"!=typeof console?console:null;function C(method){return function(...e){if(E._config.debug&&P)try{P[method].apply(P,e)}catch(t){!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)===v)return}else for(var key in e)if(Object.prototype.hasOwnProperty.call(e,key)&&t.call(n,e[key],key,e)===v)return}(e,function(e){P[method](e)})}}}const O={log:C("log"),warn:C("warn"),error:C("error"),info:C("info"),dir(e){E._config.debug&&P&&P.dir(e)}};function I(...e){P&&P.warn(...e)}function R(e,...t){O.error.apply(null,t)}const N={"Apptics.init":!0,"Apptics.ready":!0,"Apptics.reset":!0,"AppticsUser.getUser":!0,"AppticsSettings.getTrackingStatus":!0,"AppticsFeedback.sendFeedback":!0,"AppticsFeedback.addFeedbackLog":!0,"AppticsFeedback.addDiagnosticsInfo":!0,"AppticsFeedback.setFeedbackTheme":!0,"AppticsApi.configure":!0,"AppticsApi.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,"Apptics.enableDebug":!0,"Apptics.disableDebug":!0},M={"AppticsEvent.addEvent":!0,"AppticsScreen.inScreen":!0,"AppticsScreen.outScreen":!0,"AppticsApi.endTrackApi":!0,"AppticsError.trackError":!0,"AppticsUser.setUser":!0,"Apptics.flush":!0,AppticsLogger:!0,"AppticsFeedback.sendFeedback":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function L(name){return 0===name.indexOf("Apptics")?name:"apptics."+name}var D=!1;function q(name,e){const t=function(...n){if(E._initialised||!M[name]||D||(D=!0,I(L(name)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!E._initialised||E._ready||N[name])try{return e(...n)}catch(e){return I(L(name)+" failed:",e),void R(0,e)}else E._pending.push(function(){t(...n)})};return t}function F(e,t){return e.apply(null,Array.prototype.slice.call(t))}const j="apptics",B=["engagements","errors","feedbacklogs","remotelogs","heatmaps"],U="queue",H="seq",G=[["logs","feedbacklogs"],["consolelogs","remotelogs"]],V="feedbacklog",K="feedbackdiagnostics",W=Object.freeze({log:V,diagnostics:K});function Z(e){var t=e&&"string"==typeof e.type?W[e.type]:void 0;return t?{...e,type:t}:e}const J=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions"}),Y=Object.freeze({settings:J.settings,engagements:J.engagements,errors:J.errors,feedbacklogs:"apptics-feedbacklog-transactions",remotelogs:"apptics-remotelog-transactions",heatmaps:"apptics-heatmap-transactions"});function Q(value){return Array.isArray(value)?value:[]}function $(value){return value&&"object"==typeof value&&!Array.isArray(value)?value:{}}function X(key){try{const e=localStorage.getItem(key);return null===e||""===e?null:JSON.parse(e)}catch(e){return O.warn("apptics: could not read "+key+", treating it as empty"),null}}function ee(key,value){try{localStorage.setItem(key,JSON.stringify(value))}catch(e){O.warn("apptics: could not write "+key+": "+String(e))}}function te(){return[[J.logs,Y.feedbacklogs],[J.consolelogs,Y.remotelogs]].forEach(function(e){try{var t=e[0],n=e[1],r=localStorage.getItem(t);if(null===r)return;if(null===localStorage.getItem(n)){var i=Q(JSON.parse(r));localStorage.setItem(n,JSON.stringify(n===Y.feedbacklogs?i.map(Z):i))}localStorage.removeItem(t)}catch(e){}}),{kind:"localstorage",loadSettings:()=>Promise.resolve($(X(Y.settings))),putSetting(key,value){const e=$(X(Y.settings));return e[key]=value,ee(Y.settings,e),Promise.resolve()},deleteSetting(key){const e=$(X(Y.settings));return delete e[key],ee(Y.settings,e),Promise.resolve()},clearSettings:()=>(ee(Y.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve(Q(X(Y[e]))),queuePut(e,t){const n=Q(X(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(X(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())}}let ne=0;function re(){const e=1e3*h();return ne=e>ne?e:ne+1,ne}function ie(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function ae(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}const oe=Object.freeze({engagements:"engagement",errors:"error",feedbacklogs:V,remotelogs:"remotelog",heatmaps:"heatmap"});function se(e,t){return t&&"string"==typeof t.type&&""!==t.type?t.type:oe[e]||e}function ce(e,t,n){const id=String(t.id),r=e.get(id);r.onsuccess=function(){const i=r.result;i&&n||e.put({id:id,queue:i?i.queue:re(),type:se(e.name,t),item:t})}}function de(e){return e.objectStoreNames.contains("settings")&&B.every(function(name){return e.objectStoreNames.contains(name)})}function ue(e=indexedDB,t=3e3){return le(e,t).then(function(n){return de(n)?n:(O.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 le(e,t)}).then(function(e){if(!de(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function le(e,t){return new Promise(function(n,r){let i=!1;const a=function(e){i||(i=!0,clearTimeout(o),r(e))},o=setTimeout(function(){a(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(j,4)}catch(e){return void a(e)}s.onupgradeneeded=function(){!function(e,t){e.objectStoreNames.contains("settings")||e.createObjectStore("settings");B.forEach(function(name){e.objectStoreNames.contains(name)||e.createObjectStore(name,{keyPath:"id"}).createIndex(U,U)}),B.forEach(function(name){const e=t.objectStore(name);e.indexNames.contains(H)&&(e.deleteIndex(H),e.indexNames.contains(U)||e.createIndex(U,U),fe(e,function(e,t){t.update(pe(e,!1,name))}))}),G.forEach(function(n){const r=n[0],i=n[1];if(!e.objectStoreNames.contains(r))return;const a=t.objectStore(r),o=t.objectStore(i);fe(a,function(e){o.put(pe(e,"feedbacklogs"===i,i))},function(){e.deleteObjectStore(r)})})}(s.result,s.transaction)},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(o),s.result.onversionchange=function(){O.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){a(s.error)},s.onblocked=function(){O.warn("apptics: waiting for another tab to release the database")}})}function fe(e,t,n){const r=e.openCursor();r.onsuccess=function(){const e=r.result;e?(t(e.value,e),e.continue()):n&&n()}}function pe(e,t,n){const r="number"==typeof e[U]?e[U]:"number"==typeof e[H]?e[H]:re(),i=t?Z(e.item):e.item;return{id:String(e.id),queue:r,type:se(n,i),item:i}}function ge(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([ie(t.getAllKeys()),ie(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(key,e){n[String(key)]=t[e]}),n})},putSetting(key,value){const t=e.transaction("settings","readwrite");return t.objectStore("settings").put(value,key),ae(t)},deleteSetting(key){const t=e.transaction("settings","readwrite");return t.objectStore("settings").delete(key),ae(t)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),ae(t)},queueAll:t=>ie(e.transaction(t,"readonly").objectStore(t).index(U).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){ce(i,e,!1)}),ae(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(id){i.delete(id)}),ae(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),ae(n)},importAll(t,n){const r=e.transaction(["settings"].concat(B),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(key){const e=i.get(key);e.onsuccess=function(){void 0===e.result&&i.put(t[key],key)}}),B.forEach(function(name){const e=r.objectStore(name);n[name].forEach(function(t){ce(e,t,!0)})}),ae(r)}}}function me(){const e=function(e){return O.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}}()?te():null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?ue(t).then(ge,e):Promise.resolve(e("not supported"))}var ve=null,he={};function ke(e,t,n){return be().then(function(e){return e?n(e):t}).catch(function(n){return O.warn("apptics: storage "+e+" failed: "+String(n)),t})}function be(){return ve||(ve=me().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(J.settings),engagements:localStorage.getItem(J.engagements),errors:localStorage.getItem(J.errors),logs:localStorage.getItem(J.logs),consolelogs:localStorage.getItem(J.consolelogs)}}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:Q(n(t.engagements)),errors:Q(n(t.errors)),feedbacklogs:Q(n(t.logs)).map(Z),remotelogs:Q(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.feedbacklogs,r.remotelogs).forEach(function(e){e.id||(e.id=S())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i($(n(t.settings)),r)}).then(function(){Object.values(J).forEach(function(key){try{localStorage.removeItem(key)}catch(e){}}),O.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){O.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return he=Object.assign({},t,he),function(){var e=he.device_info&&"object"==typeof he.device_info?he.device_info:null;void 0===he.uuid&&void 0===he.hadsession||(b((e=Object.assign({},e||{})).uuid)&&!b(he.uuid)&&(e.uuid=he.uuid),!0===he.hadsession&&(e.hadsession=!0),Te("device_info",e),Te("uuid",void 0),Te("hadsession",void 0));if(void 0!==he.tracking_status){var t=Object.assign({},he.trackinfo&&"object"==typeof he.trackinfo?he.trackinfo:{});void 0===t.tracking_status&&(t.tracking_status=he.tracking_status),Te("trackinfo",t),Te("tracking_status",void 0)}void 0!==he.token&&Te("token",void 0)}(),e}):null}).catch(function(e){return O.warn("apptics: storage unavailable: "+String(e)),null})),ve}function _e(e){let t=0;const n=[];for(const r of e.slice(0,x("batch_size"))){const e=A(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ye(name){const e={name:name,all:()=>ke("read "+name,[],function(e){return e.queueAll(name)}),payload:()=>e.all().then(_e),add:e=>(e.id||(e.id=S()),T(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(e))?(O.warn("apptics: dropping a "+name+" item older than "+x("batch_request_timeout")+" days"),Promise.resolve()):ke("add "+name,void 0,function(t){return t.queuePut(name,[e])})),update:e=>ke("update "+name,void 0,function(t){return t.queuePut(name,[e])}),remove(e){const t=(e||[]).map(function(e){return String(e.id)});return ke("remove "+name,void 0,function(e){return e.queueDelete(name,t)})},clear:()=>ke("clear "+name,void 0,function(e){return e.queueClear(name)})};return e}const ze=ye("engagements"),Ae=ye("errors"),we=ye("feedbacklogs"),Se=ye("heatmaps"),Ee=ye("remotelogs");function xe(e,key){return void 0===he[key]?e.deleteSetting(key):e.putSetting(key,he[key])}function Te(key,value){void 0===value?delete he[key]:he[key]=z(value),ke("save "+key,void 0,function(e){return xe(e,key)})}function Pe(key,value){var e=Object.assign({},he.device_info&&"object"==typeof he.device_info?he.device_info:{});e[key]=value,E._device_info&&"object"==typeof E._device_info&&(E._device_info[key]=value),Te("device_info",e)}const Ce={all:()=>z(he),item(key){const value=he[key];return void 0===value?void 0:z(value)},add(key,value){Te(key,value)},save:(key,value)=>(void 0===value?delete he[key]:he[key]=z(value),ke("save "+key,void 0,function(e){return xe(e,key)})),clear(){he={},ke("clear settings",void 0,function(e){return e.clearSettings()})}};function Oe(e){return ke("reload settings",void 0,function(t){return t.loadSettings().then(function(t){e.forEach(function(key){void 0!==t[key]&&(he[key]=t[key])})})})}function Ie(){var t=he.trackinfo,status=t&&"object"==typeof t?t.tracking_status:void 0;return status===e.USAGE_TRACKING_WITH_PII||status===e.USAGE_TRACKING_WITHOUT_PII||status===e.NO_TRACKING?status:void 0}const Re={_tracking_status:"tracking_status",all:()=>Ce.all(),opt_in_status:()=>Ie()||e.USAGE_TRACKING_WITHOUT_PII,update_status(e){E._devicestatus=e;var t=Object.assign({},he.trackinfo&&"object"==typeof he.trackinfo?he.trackinfo:{});t.tracking_status=e,E._trackinfo&&"object"==typeof E._trackinfo&&(E._trackinfo.tracking_status=e),Te("trackinfo",t)}};function Ne(key){var e=he.device_info;return null!=e&&""!==e&&void 0!==e[key]&&null!==e[key]&&""!==e[key]?z(e[key]):null}const Me={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),trackHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{},askServerSettings:()=>{}};function Le(){return!0===E._config.debug_api&&!De()}function De(){return E._debugUntil>0&&h()>E._debugUntil}function qe(){!0===E._config.debug_api&&(E._debugUntil=h()+s)}var Fe=null;function je(on){E._config.debug_api=on,E._debugUntil=on?h()+s:0,O.log("apptics: debug mode "+(on?"on":"off"))}function Be(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function Ue(){return window.navigator.onLine?0:-1}function He(){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 Ge(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return w(e,"portrait-primary")?0:w(e,"landscape-primary")?1:w(e,"landscape-secondary")?2:w(e,"portrait-secondary")?3:-1}function Ve(){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 Ke(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||w(e," OPR/")?w(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":w(e,"IEMobile")||w(e,"WPDesktop")?"Internet Explorer Mobile":w(e,"SamsungBrowser/")?"Samsung Internet":w(e,"Edge")||w(e,"Edg/")?"Microsoft Edge":w(e,"FBIOS")?"Facebook Mobile":w(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":w(e,"CriOS")?"Chrome iOS":w(e,"UCWEB")||w(e,"UCBrowser")?"UC Browser":w(e,"FxiOS")?"Firefox iOS":w(t,"Apple")?w(e,"Mobile")?"Mobile Safari":"Safari":w(e,"Android")?"Android Mobile":w(e,"Konqueror")?"Konqueror":w(e,"Firefox")?"Firefox":w(e,"MSIE")||w(e,"Trident/")?"Internet Explorer":w(e,"Gecko")?"Mozilla":""}function We(){var e=Ke(),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 Ze(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Je(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<m.length;t++)if(-1!==e.indexOf(m[t]))return!0;return!1}(navigator.userAgent||"")}function Ye(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-"+name,function(){return e()}):e()}function Qe(){return!E._ignoreDnt&&(e=window.navigator||{},t=[!0,1,"1","yes"],!![e.doNotTrack,e.msDoNotTrack,window.doNotTrack].some(function(e){return w(t,e)})&&(O.warn("hasDoNotTrackEnabled: DoNotTrack is enabled, so nothing is tracked"),!0));var e,t}function $e(){if(Qe())return O.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 status=Re.opt_in_status();return-1==status&&O.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),status}function Xe(){return $e()>-1&&E._shouldTrack}function et(e){return E._token?!Je()&&Xe():(O.warn("apptics."+e+": You must call Apptics.init() first"),!1)}function tt(e,t){return!!et(e)&&(!!E._engagementTracking[t]||(O.log("apptics."+e+": "+t+" tracking is turned off by the server"),!1))}function nt(e){return!!et(e)&&(!!E._heatmapTracking||(O.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function rt(e){return Re.opt_in_status()!=e&&(Re.update_status(e),E._devicestatus=Re.opt_in_status(),!0)}function getTrackingStatus(){return $e()}const it="sendstate";function at(){var e=Ce.item(it);return e&&"object"==typeof e?e:{}}function ot(e){var t=at()[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 st(e,t){var n=at();n[e]=t,Ce.add(it,n)}function ct(e){if(!f[e])return{};var t=ot(e),n=h();(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),st(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function dt(url,method,e,t){return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(method,url),t&&Object.keys(t).forEach(key=>{i.setRequestHeader(key,t[key])}),i.withCredentials=!1,i.timeout=3e4,i.onreadystatechange=function(){4===i.readyState&&(200==i.status?n(i.responseText):r(i.statusText))},i.onerror=function(){r("makeRequest: Network Error")},i.ontimeout=function(){r("makeRequest: timed out after 30000 ms")},i.send(e)})}function ut(key){return"zak"==key?E._defaultoptions.zak:"uuid"==key?E._uuid:"apid"==key?E._apid||Ne(key):"mapid"==key?E._mapid||Ne(key):""}function lt(e){var t="",n=E._device_info.appversionid,r=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return b(n)||(t+="&appversionid="+encodeURIComponent(String(n))),b(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function ft(e,t){if(!l[e])return"";var n=x("device_name"),name=b(n)?Le()?function(){var e=E._device_info,t=b(e.browser)?"":String(e.browser),n=b(e.browserversion)?"":String(e.browserversion),r=b(e.osversion)?"":String(e.osversion),name=""===t?"":""===n?t:t+" "+n;return""===r?name:""===name?r:name+" on "+r}():"":String(n);return""===name?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(name.slice(0,100)))}function pt(t,n){var url=E._defaultoptions.base_domain+x("endpoint")+i[t]+"/"+(p[t]?"":E._defaultoptions.zsoid+"/"+E._defaultoptions.projectID+"/")+((function(e){return Le()&&!0===l[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return"?version="+encodeURIComponent(E._defaultoptions.appversion)+"&platform="+encodeURIComponent(E._platform)+"&identifier="+encodeURIComponent(E._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired=false&devicestatus="+E._devicestatus,b(E._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(E._device_info.deviceid))),n+lt(n);if("sdkconfig"!=t){if(b(E._device_info.deviceid))return Me.refreshDeviceInfo(),n+lt(n);n="?deviceid="+encodeURIComponent(String(E._device_info.deviceid))}if("feedback"===t){var i=Me.feedbackUser();return i&&(n+="&userid="+encodeURIComponent(String(i.userid)),b(i.groupid)||(n+="&customergroupid="+encodeURIComponent(String(i.groupid)))),n+lt(n)}return"reguser"!=t&&"getupdates"!=t&&$e()==e.USAGE_TRACKING_WITH_PII&&(E._user_info.hasOwnProperty("userid")&&!b(E._user_info.userid)&&(n+=(""===n?"?":"&")+"userid="+encodeURIComponent(String(E._user_info.userid))),E._user_info.hasOwnProperty("groupid")&&!b(E._user_info.groupid)&&(n+=(""===n?"?":"&")+"customergroupid="+encodeURIComponent(String(E._user_info.groupid)))),n+=ft(t,n),n+lt(n)}(t);if(!n)return url;var a=-1===url.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(key){void 0!==n[key]&&null!==n[key]&&""!==n[key]&&(url+=a+key+"="+encodeURIComponent(String(n[key])),a="&")}),url}function gt(){return{apid:ut("apid"),mapid:ut("mapid")}}const mt={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function vt(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!b(n)&&!0===mt[String(n)]}function ht(e,t,n){var r=JSON.parse(n);if(k(r))return function(e){f[e]&&st(e,{attempt:1,firstattempttime:0,lst:h()})}(e),function(e,t){var n=t.data;n&&!b(n.req_id)&&O.log(e+": req_id "+String(n.req_id)+(b(n.path)?"":", path "+String(n.path))+(b(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!b(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 kt(e,t,n,r,i){return dt(pt(e,Object.assign(ct(e),{})),x("method"),t,n).then(function(t){return ht(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var bt=0;function _t(e,t,n,r,i){var a=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&&bt+a>61440)return O.log(r+": "+a+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var url=pt(e,Object.assign(ct(e),{}));if("function"==typeof fetch){var o;try{o=fetch(url,{method:x("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))}bt+=a;var s=function(){bt=Math.max(0,bt-a)};return o.then(function(t){if(s(),!t||!0!==t.ok){var status=t?String(t.status):"";return Promise.reject(r+": "+status)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return b(t)?ht(e,r,JSON.stringify({result:"success"})):ht(e,r,t)})},function(e){return s(),Promise.reject(r+": "+String(e))})}return dt(url,x("method"),t,n).then(function(t){return ht(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function yt(e){return Je()?Promise.reject(e+": apptics is disabled for this client"):null}function zt(e){return 0==navigator.onLine?(O.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function At(){return{frameworkid:E._device_info.frameworkid||Ne("frameworkid"),aaid:E._device_info.aaid||Ne("aaid"),apid:E._device_info.apid||Ne("apid"),appversionid:E._device_info.appversionid||Ne("appversionid"),modelid:E._device_info.modelid||Ne("modelid"),appreleaseversionid:E._device_info.appreleaseversionid||Ne("appreleaseversionid"),osversionid:E._device_info.osversionid||Ne("osversionid"),timezoneid:E._device_info.timezoneid||Ne("timezoneid"),platformid:E._device_info.platformid||Ne("platformid"),devicetypeid:E._device_info.devicetypeid||Ne("devicetypeid")}}function wt(e){return b(ut("apid"))&&b(ut("mapid"))?(Me.refreshDeviceInfo(),Promise.reject(e+": You must call Apptics.init() first")):St()?null:(Me.refreshDeviceInfo(),Promise.reject(e+": the device is not registered yet, kept for the next send"))}function St(){return!b(E._device_info&&E._device_info.deviceid)||!b(Ne("deviceid"))}const Et="registerAppVersion",xt="app_version_info",Tt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var Pt=null;function Ct(){var e=Ce.item(xt);return e&&"object"==typeof e?e:{}}const Ot=["aaid","portalid","projectid","apid","mapid","appversionid"];function It(e){return Ot.filter(function(key){return b(e[key])})}function Rt(key){var e=b(key)?"":String(key);if(""===e)return"";for(var t=2166136261,n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return("0000000"+t.toString(16)).slice(-8)}function Nt(e){Tt.forEach(function(key){b(e[key])||(E._device_info[key]=e[key])}),b(e.aaid)||(E._defaultoptions.aaid=e.aaid),b(e.portalid)||(E._defaultoptions.zsoid=String(e.portalid)),b(e.projectid)||(E._defaultoptions.projectID=String(e.projectid)),b(e.apid)||(E._apid=String(e.apid)),b(e.mapid)||(E._mapid=String(e.mapid))}var Mt=!1;function Lt(){return Mt}function Dt(){if(Mt=!1,0===It(e=Ct()).length&&e.appversion===E._defaultoptions.appversion&&e.identifier===E._defaultoptions.identifier&&e.serviceUrl===E._defaultoptions.serviceUrl&&e.zakhash===Rt(E._defaultoptions.zak))return Nt(Ct()),O.log(Et+": reusing the ids stored for "+E._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==Pt)return Pt;var t=b(E._device_info.frameworkid)?E._frameworkID:E._device_info.frameworkid;return 0===t&&I(Et+": this build has no registered framework id; build the package with npm pack"),b(t)||b(E._defaultoptions.identifier)||b(E._defaultoptions.zak)?(I(Et+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):Pt=kt("addversion","",{zak:ut("zak")},Et).then(function(e){if(!k(e)||!e.data)return I(Et+": the server did not return the app ids"),!1;var t=e.data,n=It(t);if(n.length>0)return I(Et+": the answer has no "+n.join(", ")),!1;Nt(t);var r={appversion:E._defaultoptions.appversion,identifier:E._defaultoptions.identifier,serviceUrl:E._defaultoptions.serviceUrl,zakhash:Rt(E._defaultoptions.zak)};return Tt.forEach(function(key){b(t[key])||(r[key]=t[key])}),Ce.add(xt,r),O.log(Et+": registered "+E._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return Mt=!(e&&e.serverResult)||!1===navigator.onLine,I(Et+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return Pt=null,e})}const qt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Ft=["screenheight","screenwidth","donottrackenabled","platformid"];function jt(e){var t={};return qt.forEach(function(key){var value=e[key],n=-1!==Ft.indexOf(key);t[key]=b(value)?n?0:"":value}),JSON.stringify(t)}const Bt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Ut(e){var t={};return Bt.forEach(function(key){t[key]=e?e[key]:void 0}),t}function Ht(){var e,t,n=Ce.item("device_info");E._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:Ke(),browserversion:String(We()),donottrackenabled:Qe()?1:0,devicetype:Ve(),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:Be(),referringdomain:window.location.hostname||"",deviceid:Ne("deviceid"),anonymousid:Ne("anonymousid"),frameworkid:E._frameworkID,mapid:Ne("mapid"),aaid:Ne("aaid"),apid:Ne("apid"),appversionid:Ne("appversionid"),platformid:Ne("platformid"),devicetypeid:Ne("devicetypeid"),osversionid:Ne("osversionid"),timezoneid:Ne("timezoneid"),modelid:Ne("modelid"),appreleaseversionid:Ne("appreleaseversionid"),timezone:Ze(),uuid:E._uuid||Ne("uuid"),hadsession:!0===Ne("hadsession")||void 0},Nt(Ct()),Ce.add("device_info",E._device_info),function(e,t){var n=void 0!==t?t:Ce.item("device_info")||{};Gt(e)&&null!=e.frameworkid?b(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let key in e)if(!t.hasOwnProperty(key))return!1;for(let key in e)if(!y(e[key],t[key]))return!1;return!0}(Ut(e),Ut(n))||(O.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),O.dir(Ut(e)),Qt(e).catch(function(e){O.log("addOrUpdateDeviceID: Error updating the device: "+e)})):(e.frameworkid=E._frameworkID,O.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=yt(e);if(t)return t;if(!E._token)return O.warn(e+": You must call Apptics.init() first"),Promise.reject(e+": You must call Apptics.init() first");var n=zt(e);if(n)return n;if(Gt(E._device_info))return Promise.resolve(E._device_info);return new Promise((t,n)=>{if(E._regDeviceSending)return E._regDeviceResolve.push(t),void E._regDeviceReject.push(n);E._regDeviceSending=!0,Oe(["device_info"]).then(function(){var e=Ce.item("device_info")||{};return Gt(e)?(b(e.uuid)||(E._uuid=e.uuid),O.log("registerDeviceWithApptics: another tab registered this browser, using its device "+e.deviceid),Kt(e).then(function(){return{result:"success",data:e}})):null}).then(function(t){return t||kt("regdevice",jt(E._device_info),{zak:ut("zak"),uuid:ut("uuid"),...gt()},e).then(function(e){return Kt(e.data||{}).then(function(){return e})})}).then(function(e){Yt(!0,e),t(e),ln()}).catch(function(e){Yt(!1,e),n(e)})})}().then(function(e){k(e)?(O.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),O.dir(e.data)):O.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){O.log("addOrUpdateDeviceID: Error registering the device: "+e)}))}(E._device_info,n)}function Gt(e){return!!e&&!b(e.deviceid)}const Vt=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function Kt(e){return Vt.forEach(function(key){b(e[key])||(E._device_info[key]=e[key])}),b(e.apid)||(E._apid=e.apid),b(e.mapid)||(E._mapid=e.mapid),Ce.save("device_info",E._device_info)}function Wt(){var e=Ne("uuid");b(e)&&Pe("uuid",e=S()),E._uuid=e}function Zt(){return Gt(Ce.item("device_info")||{})?(Wt(),Ht(),Promise.resolve()):new Promise(function(e){Ye("device",function(){return Oe(["device_info"]).then(function(){return Wt(),Ht(),e(),Jt()})}).catch(function(e){O.log("prepareDevice: "+e)}).then(function(){e()})})}function Jt(){return E._regDeviceSending?new Promise(function(e){E._regDeviceResolve.push(function(){e()}),E._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Yt(e,value){var t=e?E._regDeviceResolve:E._regDeviceReject;E._regDeviceSending=!1,E._regDeviceResolve=[],E._regDeviceReject=[],t.forEach(function(e){e(value)})}function Qt(e){var t="updateDeviceWithApptics",n=yt(t)||zt(t);return n||kt("regdevice",jt(e),{zak:ut("zak"),uuid:ut("uuid"),...gt()},t).then(function(e){return Kt(e.data||{}),e})}function $t(status,id){var e=status[id];return!e||"object"!=typeof e||!1!==e.enabled}function Xt(e){var status=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},t=Object.keys(status).length>0;if(e.hasOwnProperty("tracking_enabled"))E._shouldTrack=!1!==e.tracking_enabled;else if(e.hasOwnProperty("shouldtrack"))E._shouldTrack=!1!==e.shouldtrack;else{var n=!(e.hasOwnProperty("versionarchivestatus")&&!b(e.versionarchivestatus))||e.versionarchivestatus,r=!(e.hasOwnProperty("customergrouptracking")&&!b(e.customergrouptracking))||e.customergrouptracking;E._shouldTrack=n||!r}if(t)E._engagementTracking={event:$t(status,o.EVENT),api:$t(status,o.API),screen:$t(status,o.SCREEN),session:$t(status,o.SESSION)},E._errorTracking=$t(status,o.JS_ERROR),E._heatmapTracking=$t(status,o.HEATMAP),E._remoteLoggerEnabled=$t(status,o.REMOTE_LOGGER),E._feedbackEnabled=$t(status,o.FEEDBACK),E._remoteConfigEnabled=$t(status,o.REMOTE_CONFIG);else{var i=e.engagement&&"object"==typeof e.engagement?e.engagement:null,a=function(t){return i?!1!==i[t]:!1!==e.engagementtracking};E._engagementTracking={event:a("event"),api:a("api"),screen:a("screen"),session:a("session")};var s=function(key,t){return!1!==(e.hasOwnProperty(key)?e[key]:e[t])};E._errorTracking=s("error","errortracking"),E._heatmapTracking=s("heatmap","heatmaptracking"),E._remoteLoggerEnabled=s("remotelogger","remoteloggerenabled"),E._feedbackEnabled=s("feedback","feedbackenabled")}var c=e.quartz&&"object"==typeof e.quartz?e.quartz:{},d=function(value){return"string"==typeof value?value.trim():""};E._quartz={enabled:c.hasOwnProperty("quartz_enabled")?!0===c.quartz_enabled:!0===e.quartzenabled,workspace:d(c.quartz_workspace),department:d(c.quartz_department),domain:d(c.quartz_domain),cdnUrl:d(c.quartz_cdn_url)},E._nextConfigCheck=function(value,e){if("number"!=typeof value||!(value>0))return 0;return value>=1e12?value:e+value}(e.next_check_after,h()),E._trackinfo={engagement:E._engagementTracking,error:E._errorTracking,heatmap:E._heatmapTracking,remotelogger:E._remoteLoggerEnabled,feedback:E._feedbackEnabled,quartz:{quartz_enabled:E._quartz.enabled,quartz_workspace:E._quartz.workspace,quartz_department:E._quartz.department,quartz_domain:E._quartz.domain,quartz_cdn_url:E._quartz.cdnUrl},shouldtrack:E._shouldTrack,next_check_after:E._nextConfigCheck}}var en=["engagementtracking","errortracking","heatmaptracking","remoteloggerenabled","feedbackenabled"];var tn=2147483647,nn=null,rn=!1,an=0,sn=!1,cn=!1,dn=0;function un(){if(!(rn||!St()||b(ut("apid"))&&b(ut("mapid")))){null!==nn&&(clearTimeout(nn),nn=null),rn=!0,sn=!0,function(){try{sessionStorage.setItem(fn,"1")}catch(e){}}();var e,t=an,n=h();(e="getUpdatesFromServer",zt(e)||wt(e)||kt("sdkconfig","",gt(),e).then(function(e){var t=e.data||{};Xt(t),0===E._nextConfigCheck&&(E._nextConfigCheck=h()+x("getupdates_interval"),E._trackinfo.next_check_after=E._nextConfigCheck);var n=Ie();return Ce.add("trackinfo",void 0===n?E._trackinfo:Object.assign({},E._trackinfo,{tracking_status:n})),O.log("getUpdatesFromServer: "+JSON.stringify(E._trackinfo)),t})).catch(function(e){O.log(e)}).then(function(){if(t===an){if(rn=!1,cn)return cn=!1,void un();dn=E._nextConfigCheck>h()?E._nextConfigCheck:n+x("getupdates_interval"),pn()}})}}function ln(){if(!sn)return function(){try{return"1"===sessionStorage.getItem(fn)}catch(e){return!1}}()&&E._nextConfigCheck>h()?(O.log("getsdkconfig: the saved answer is still current"),sn=!0,dn=E._nextConfigCheck,void pn()):void un()}var fn="_apptics_sdkconfig_asked";function pn(){null!==nn&&clearTimeout(nn);var e=Math.min(Math.max(dn-h(),0),tn);O.log("getsdkconfig: next check in "+e+" ms"),nn=setTimeout(function(){nn=null,un()},e)}function gn(id,e){return b(id)?Promise.resolve():(E._current_screen&&E._current_screen.id===id&&!E._current_screen.endtime&&(E._current_screen=Object.assign({},E._current_screen,{endtime:e})),ze.all().then(function(t){var r=t.filter(function(e){return e.type==n.SCREEN&&e.id===id&&0===e.endtime})[0];if(r)return ze.update(Object.assign({},r,{endtime:Math.max(e,r.starttime)}))}))}function mn(){var e=E._current_screen;return e&&e.id?gn(e.id,h()):Promise.resolve()}function vn(e,t){return ze.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 ze.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function hn(e){if(!tt("trackSession",n.SESSION))return Promise.resolve();if(e&&"object"!=typeof e)return R(a.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=ze.add(e);return O.log("apptics.trackSession("+JSON.stringify(e||{})+")"),O.dir(e),t}function kn(){var e=Tn();return ze.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e&&0===t.endtime})[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)})}Me.updateDevice=Qt,Me.refreshDeviceInfo=Ht,Me.askServerSettings=function(){rn?cn=!0:un()};var bn="";function _n(){return""===bn&&(bn=S()),bn}function yn(e){return Array.isArray(e.tabs)?e.tabs.slice():[]}const zn="apptics-tab-";function An(){var e="undefined"!=typeof navigator?navigator.locks:void 0;return e&&"function"==typeof e.request&&"function"==typeof e.query?e:void 0}var wn=!1;function Sn(){var e=An();if(!e)return Promise.resolve();var t=_n();return e.query().then(function(e){var r={};(e.held||[]).concat(e.pending||[]).forEach(function(e){e.name&&0===e.name.indexOf(zn)&&(r[e.name.slice(12)]=!0)});var i=h();return ze.all().then(function(e){var a=e.filter(function(e){return e.type==n.SCREEN&&0===e.endtime&&"string"==typeof e.tab&&e.tab!==t&&!r[e.tab]&&i-e.starttime>5e3});return a.length&&O.log("closeScreensOfGoneTabs: ending "+a.length+" screen view(s) left open by a tab that is gone"),a.reduce(function(e,t){var n=Math.max(t.starttime,Number(t.lastseen)||t.starttime);return e.then(function(){return ze.update(Object.assign({},t,{endtime:n}))})},Promise.resolve())})}).catch(function(e){O.log("closeScreensOfGoneTabs: "+e)})}function En(e){return Ye("session",e)}const xn="apptics-session";function Tn(){try{return sessionStorage.getItem(xn)||""}catch(e){return""}}const Pn="hadsession";var Cn=null,On=null;function In(){null!==On&&(clearTimeout(On),On=null)}function Rn(){if(!Cn)return Promise.resolve();var e=Cn;return Cn=null,In(),e.firstsession&&Pe(Pn,!0),hn(e)}function Nn(e){E._current_session={id:S(),type:n.SESSION,starttime:e,endtime:0,edge:Be(),orientation:Ge(),firstsession:!0!==Ne(Pn),networkstatus:Ue(),lastactivetime:e,tabs:[_n()]};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";b(r)||(E._current_session.ram=r),function(id){try{sessionStorage.setItem(xn,id)}catch(e){}}(E._current_session.id);var i=Number(x("min_session_duration"));return i>0?(Cn=E._current_session,In(),On=setTimeout(function(){On=null,Rn()},i),Promise.resolve()):function(e){e.firstsession&&Pe(Pn,!0);return hn(e)}(E._current_session)}var Mn=!1,Ln=null;function Dn(e){var t=!Mn;return Mn=!0,null!==Ln&&clearTimeout(Ln),Ln=setTimeout(function(){Ln=null,function(){if(!E._token||Je())return Promise.resolve(!1);var e=!1;return En(function(){return kn().then(function(t){if(t&&0===t.endtime){var n=Number(t.lastactivetime)||h();if(!(h()-n<60*E.inactiveduration*1e3)){var r=yn(t).filter(function(e){return e!==_n()});if(r.length>0){var i=Object.assign({},t,{tabs:r});return E._current_session=i,ze.update(i)}var a=Math.max(n,Number(t.starttime)||n),o=Object.assign({},t,{endtime:a,tabs:[]});return E._current_session=o,e=!0,O.log("session: inactive for "+E.inactiveduration+" minutes, so it ends when the user left, "+a),ze.update(o).then(function(){return vn(o,a)})}}})}).then(function(){return e})}().then(function(t){t&&e()})},60*E.inactiveduration*1e3+1e3),t?En(Bn):Promise.resolve()}function qn(){Mn=!1,null!==Ln&&(clearTimeout(Ln),Ln=null)}function Fn(){var e=h(),t=Mn;return qn(),Cn&&(O.log("session: dropped, shorter than the minimum with nothing tracked in it"),Cn=null,In(),1)?Promise.resolve():En(function(){return function(e,t){return kn().then(function(n){if(n&&0===n.endtime){var r=Number(n.lastactivetime)||0,i=t&&r>0?Math.max(Math.min(r,e),Number(n.starttime)||0):e,a=yn(n).filter(function(e){return e!==_n()});if(a.length>0){var o=Object.assign({},n,{tabs:a,lastactivetime:i});return E._current_session=o,O.log("endCurrentSession: "+a.length+" other tab(s) still on this session, so it stays open"),ze.update(o)}var s=Object.assign({},n,{endtime:i,lastactivetime:i,tabs:[]});return E._current_session=s,O.log("endCurrentSession: closing the session opened at "+s.starttime),ze.update(s).then(function(){return vn(s,i)})}})}(e,t)})}function jn(){if(!E._token)return R(a.SESSION,"checkAndUpdateSession: You must call Apptics.init() first"),Promise.resolve();if(Je())return Promise.resolve();var e=h();return En(function(){return function(e){return function(){var e=h()-60*E.inactiveduration*1e3,t=Tn();return ze.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?(O.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return ze.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return vn(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(Sn).then(kn).then(function(t){if(!t||0!==t.endtime)return Nn(e);if(E._current_session=t,e-t.lastactivetime>1e3*E.inactiveduration*60){O.log("checkAndUpdateSession: User is inactive for the past "+E.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return O.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),O.dir(n),ze.update(n).then(function(){return vn(n,n.endtime)}).then(function(){return Nn(e)})}return O.log("checkAndUpdateSession: User is back before "+E.inactiveduration+" minutes so updating the lastactivitytime - "+e),Bn()})}(e)})}function Bn(){var e=h();return Cn?(Cn.lastactivetime=e,E._current_session=Cn,Promise.resolve()):kn().then(function(t){if(t){O.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n,r,i=Object.assign({},t,{lastactivetime:e,tabs:(n=t,r=yn(n),-1===r.indexOf(_n())&&r.push(_n()),r)});return E._current_session=i,ze.update(i)}}).then(function(){return function(e){var t=E._current_screen;return t&&t.id&&!t.endtime?ze.all().then(function(r){var i=r.filter(function(e){return e.type==n.SCREEN&&e.id===t.id&&0===e.endtime})[0];return i?ze.update(Object.assign({},i,{lastseen:e})):void 0}):Promise.resolve()}(e)})}const Un=/^ap_/i;function Hn(e){if(!e||""===e)return O.warn("validateEventOrGroup: Invalid event or group name"),!1;return Un.test(e)?(O.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 Gn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function Vn(e){if(b(e)||_(e))return{};var t=e,n={},r={},i=[],a=[],o=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(key){if(!Gn.test(key)||Un.test(key))return O.warn("validateJSON: dropped the property '"+key+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),a.push(key.substring(0,50)),void s(103);var e=function(value){if("number"==typeof value&&isFinite(value))return{value:value,type:"Number"};if("boolean"==typeof value)return{value:value?1:0,type:"Boolean"};if("string"==typeof value)return{value:value,type:"String"};var e;try{e=void 0===value?"undefined":JSON.stringify(value)}catch(t){e=String(value)}return{value:void 0===e?String(value):e,type:"String"}}(t[key]);if(String(e.value).length>250)return O.warn("validateJSON: dropped the property '"+key+"': its value is longer than 250 characters"),o.push(key),void s(104);if(Object.keys(n).length>=24)return O.warn("validateJSON: dropped the property '"+key+"': at most 24 properties"),void s(102);var i=Object.assign({},n);if(i[key]=e.value,JSON.stringify(i).length>7666)return O.warn("validateJSON: dropped the property '"+key+"': properties are at most 7666 characters in all"),void s(101);n[key]=e.value,r[key]=e.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:a,valuekeys:o}}}function Kn(e){const t={},n={},message=[],r={101:[],102:[],103:[],104:[]},i=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let o=0;const s=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],c=["engagement_score","date_of_birth"];for(const[key,value]of Object.entries(e))if(o++,"string"!=typeof key||key.length>50||!i.test(key))r[103].push(key);else if(s.includes(key)){if("string"!=typeof value||value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else if("email_address"!==key)if(c.includes(key)){if("number"!=typeof value||!Number.isFinite(value)){r[103].push(key);continue}t[key]=value,n[key]="Number"}else if("boolean"==typeof value)t[key]=value,n[key]="Boolean";else if("string"==typeof value){if(value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else{if("number"!=typeof value){r[104].push(key);continue}if(!Number.isFinite(value)){r[104].push(key);continue}t[key]=value,n[key]="Number"}else{if("string"!=typeof value||value.length>255||!a.test(value)){r[103].push(key);continue}t[key]=value,n[key]="String"}o>45&&(r[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(r[101]=Object.keys(e));for(const e of[101,102,103,104])r[e].length>0&&message.push({code:e,keys:r[e]});return{data:t,datatype:n,message:message}}function Wn(e){if(!e||""===e)return O.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:*]{0,99}$/.test(e)}function Zn(e){try{var url=new URL(String(e).trim());if("http:"!==url.protocol&&"https:"!==url.protocol)return"";var t=url.pathname.length>1?url.pathname.replace(/\/+$/,""):url.pathname;return url.protocol+"//"+url.host.toLowerCase()+t}catch(e){return""}}function Jn(method,e){var t=[];return e.forEach(function(value){var url="string"==typeof value?Zn(value):"";""!==url?-1===t.indexOf(url)&&t.push(url):I("ApiTrackingBuilder."+method+": "+JSON.stringify(value)+" is not a full http(s) URL, as https://api.example.com/health, and is left out")}),t}function Yn(method,e){var t=[];return e.forEach(function(value){if(value instanceof RegExp)t.push(value);else{if("string"==typeof value&&""!==value)try{return void t.push(new RegExp(value))}catch(e){}I("ApiTrackingBuilder."+method+": "+String(value)+" is not a regular expression, and is left out")}}),t}class Qn{constructor(){this.rules={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}allowEquals(...e){return this.rules.allowEquals.push(...Jn("allowEquals",e)),this}ignoreEquals(...e){return this.rules.ignoreEquals.push(...Jn("ignoreEquals",e)),this}allowRegex(...e){return this.rules.allowRegex.push(...Yn("allowRegex",e)),this}ignoreRegex(...e){return this.rules.ignoreRegex.push(...Yn("ignoreRegex",e)),this}build(){return{allowEquals:this.rules.allowEquals.slice(),ignoreEquals:this.rules.ignoreEquals.slice(),allowRegex:this.rules.allowRegex.slice(),ignoreRegex:this.rules.ignoreRegex.slice()}}}const $n=Object.freeze({ignoreDomains:"ignoreRegex",allowOnlyDomains:"allowRegex",allowOnlyTLDs:"allowRegex",ignoreTLDs:"ignoreRegex",ignoreDomainPrefixes:"ignoreRegex",ignoreDomainSuffixes:"ignoreRegex",groupDomains:"",ignoreEndpoint:"ignoreEquals or ignoreRegex",addPattern:"",preserveSegments:"",autoDetection:""});Object.keys($n).forEach(function(name){Object.defineProperty(Qn.prototype,name,{configurable:!0,value:function(){var e=$n[name];throw new TypeError("ApiTrackingBuilder."+name+"() is no longer supported: "+(e?"use "+e+", which match the URL without its query":"ids, UUIDs and tokens in a path become * on their own"))}})});var Xn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]};function er(value,e){return Array.isArray(value)?value.filter(e):[]}function tr(e,url){return e.lastIndex=0,e.test(url)}function nr(url){var e=Zn(url);return""!==e&&(-1===Xn.ignoreEquals.indexOf(e)&&!Xn.ignoreRegex.some(function(t){return tr(t,e)})&&(0===Xn.allowEquals.length&&0===Xn.allowRegex.length||(-1!==Xn.allowEquals.indexOf(e)||Xn.allowRegex.some(function(t){return tr(t,e)}))))}const rr=/^\d+$/,ir=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ar=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;function or(e){return function(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}(e).split("/").map(function(e){return""!==e&&(rr.test(e)||ir.test(e)||ar.test(e))?"*":e}).join("/")}const sr={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 cr=(dr={},Object.keys(sr).forEach(function(e){sr[e].forEach(function(t){dr[t]=Object.freeze({event:t,group:e})})}),Object.freeze(dr));var dr;function ur(e){var t=String(e||"").split(/[?#]/)[0]||"/";return t.length>1?t.replace(/\/+$/,""):t}const lr=/[^\w\s.\-&/:*]/g;var fr=!1,pr="",gr=null,mr=300,vr="",hr=null,kr=!1,br=0,_r=null,yr=null,zr=null,Ar=null;function wr(e){return"*"===e||/^\{[^/]*\}$/.test(e)||/^:[^/]+$/.test(e)}function Sr(e,t){var n=ur(e).split("/"),r=t.split("/");if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++){var a=n[i];if(!wr(a)&&a!==r[i])return!1}return!0}function Er(){try{return function(e){var name=e;try{name=decodeURIComponent(e)}catch(e){}return name.replace(lr,"_").trim().slice(0,99)}(function(e){var t=E._config.screen_routes;if(!t||0===t.length)return e;for(var n=ur(e),r=0;r<t.length;r++){var i=t[r];if("equals"===i.kind&&i.path===n)return i.name;if("regex"===i.kind&&(i.regex.lastIndex=0,i.regex.test(n)))return i.name;if("pattern"===i.kind&&Sr(i.pattern,n))return ur(i.pattern).split("/").map(e=>wr(e)?"*":e).join("/")}return e}(function(url){var e=url.pathname,t=url.hash;if(/^#!?\//.test(t)){var n=t.replace(/^#!?/,"").split("?")[0];e=e.replace(/\/+$/,"")+n}return e}(new URL(window.location.href))))}catch(e){return""}}function xr(){if(gr=null,fr){var name=Er();""!==name&&name!==pr&&(pr=name,kr||(E._current_screen=Object.assign({},E._current_screen,{screen:name}),vr=name,br=h(),hr=setTimeout(Tr,mr)))}}function Tr(){hr=null;var name=vr;if(vr="",fr&&!kr&&""!==name)try{Mr(name,void 0,void 0,br||void 0)}catch(e){O.log("automatic screen tracking: "+String(e))}}function Pr(){null!==hr&&(clearTimeout(hr),hr=null),vr=""}function Cr(){var name=Er();""!==name&&(name===vr||""===vr&&name===pr)||null===gr&&(kr=!1,Pr(),gr=setTimeout(xr,0))}function Or(enabled,e){var on="boolean"!=typeof enabled||enabled;if(on&&(mr=300),on!==fr){if(on)return pr="",t=history.pushState,n=history.replaceState,zr=t,Ar=n,_r=function(){var e=t.apply(this,arguments);return Cr(),e},yr=function(){var e=n.apply(this,arguments);return Cr(),e},history.pushState=_r,history.replaceState=yr,window.addEventListener("popstate",Cr),window.addEventListener("hashchange",Cr),fr=!0,O.log("automatic screen tracking: on"),void(null===gr&&(gr=setTimeout(xr,0)));var t,n;_r&&history.pushState===_r&&zr&&(history.pushState=zr),yr&&history.replaceState===yr&&Ar&&(history.replaceState=Ar),_r=yr=zr=Ar=null,window.removeEventListener("popstate",Cr),window.removeEventListener("hashchange",Cr),null!==gr&&(clearTimeout(gr),gr=null),Pr(),fr=!1,pr="",kr=!1,O.log("automatic screen tracking: off")}}Me.screenTrackedByApp=function(){kr=!0,Pr()};var Ir={};function Rr(e,message){R(0,message),Ir[message]||(Ir[message]=!0,I(message))}function Nr(eventName,groupName,e){if(tt("trackEvent",n.EVENT)){var t=function(value){if(value&&"object"==typeof value){var e=value.event;return"string"==typeof e&&cr[e]===value?value:void 0}}(eventName);if(t)e=groupName&&"object"==typeof groupName?groupName:e,groupName=t.group,eventName=t.event;else{if("string"!=typeof eventName||!Hn(eventName))return void Rr(a.EVENT,"AppticsEvent.addEvent: Invalid eventName: "+String(eventName));if(null==groupName||""===groupName||"object"==typeof groupName)return void Rr(a.EVENT,'AppticsEvent.addEvent: groupName is required for "'+eventName+'": addEvent(eventName, groupName, properties?)');if("string"!=typeof groupName||!Hn(groupName))return void Rr(a.EVENT,'AppticsEvent.addEvent: Invalid groupName for "'+eventName+'": '+String(groupName))}var r=Vn(e=e||{}),i=h(),o={id:S(),type:n.EVENT,group:groupName,event:eventName,starttime:i,endtime:i,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),screen:E._current_screen.screen||"",sessionstarttime:E._current_session.starttime||i,customproperties:r};Rn(),qe(),ze.add(o),O.log("AppticsEvent.addEvent('"+eventName+"','"+groupName+"',"+JSON.stringify(r||{})+")"),O.dir(o)}}function Mr(screenName,e,id,t,r){if(tt("inScreen",n.SCREEN))if(Wn(screenName)){var i=Vn(e=e||{}),o="number"==typeof t?t:h(),s={id:id||S(),type:n.SCREEN,screen:screenName,starttime:o,endtime:0,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),orientation:Ge(),sessionstarttime:E._current_session.starttime||o,customproperties:i,tab:_n()},c=E._current_screen&&E._current_screen.id;c&&c!==s.id&&gn(c,o),Rn(),qe(),ze.add(s),E._current_screen=r?Object.assign({},s,{implicit:!0}):s,O.log("AppticsScreen.inScreen('"+screenName+"',"+JSON.stringify(i||{})+")"),O.dir(s)}else Rr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}function Lr(){var e=E._current_screen;if(e&&!b(e.screen)&&!e.implicit)return String(e.screen);var name=Er()||"/";return e&&e.id&&e.screen===name&&!e.endtime||Mr(name,void 0,void 0,void 0,!0),name}function Dr(){var e=E._current_screen;e&&e.id&&e.endtime&&!b(e.screen)&&Mr(String(e.screen))}const qr=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Fr=/[^a-zA-Z0-9\-._*\/]+/g;function jr(e){if(tt("trackApi",n.API)){var t,r=(e=e||{}).url||e.path||"",method=(e.method||"GET").toString(),i="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,o=e.responsemessage||e.statusText||e.error||"-",s=h(),c="number"==typeof e.starttime?e.starttime:s;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?c+e.duration:s;var d=e.scheme||"",u=e.hostname||"",l="number"==typeof e.port?e.port:0,f=e.path||"",p=b(e.url)&&!b(e.hostname);if(!b(r))try{var g=new URL(r,window.location.origin);b(d)&&!p&&(d=g.protocol.replace(":","")),b(u)&&(u=g.hostname),l||p||(l=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),b(f)&&(f=g.pathname)}catch(e){b(f)&&(f=r)}if(d="https"===d||"http"===d?d:"https",l||(l="https"===d?443:80),qr.test(u))if(nr(d+"://"+u+(l&&!("https"===d&&443===l||"http"===d&&80===l)?":"+l:"")+("/"===String(f).charAt(0)?"":"/")+f)){f=function(e){if(b(e))return"/";var t=e.replace(Fr,"*");return"/"===t.charAt(0)?t:"/"+t}(or(f));var m=E._current_session.starttime||c,v={id:S(),type:n.API,scheme:d,port:l,hostname:u,path:f,method:method,responsecode:i,responsemessage:o,starttime:c,endtime:t,sessionstarttime:m,networkstatus:Ue(),edge:E._device_info.connectionType||Be()};Rn(),qe(),ze.add(v),O.log("AppticsApi('"+method+" "+d+"://"+u+f+"')"),O.dir(v)}else O.log("AppticsApi: "+u+function(e){return String(e||"").split(/[?#]/)[0]}(f)+" is left out by configureApiTracking");else R(a.API,"AppticsApi: hostname not accepted by the server: "+String(u))}}var Br={},Ur=[];var Hr=!1,Gr=null,Vr=null,Kr=null;function Wr(e){if(b(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(url,e){for(var t=[E._defaultoptions.base_domain,E._defaultoptions.serviceUrl],n=0;n<t.length;n++)if(!b(t[n])&&0===url.indexOf(t[n]))return!0;var r=x("endpoint");return!b(r)&&0===e.indexOf(r)}(t.href,t.pathname)&&nr(t.href))}function Zr(method,url,e,t,n){try{jr({url:url,method:method,responsecode:t,responsemessage:n,starttime:e,endtime:h()})}catch(e){O.log("auto api tracking: "+String(e))}}function Jr(){"function"==typeof fetch&&(Kr=fetch,window.fetch=function(e,t){var url,method,n;try{url=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),method=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),n=h()}catch(n){return Kr(e,t)}return Wr(url)?Kr(e,t).then(function(e){return Zr(method,url,n,e.status,e.statusText||"-"),e},function(e){throw Zr(method,url,n,0,String(e&&e.message?e.message:e)||"Network Error"),e}):Kr(e,t)})}function enableApiTracking(enabled){var on="boolean"!=typeof enabled||enabled;if(on!==Hr){if(on)return"function"==typeof XMLHttpRequest&&(Gr=XMLHttpRequest.prototype.open,Vr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(method,url){try{var e=String(url);Wr(e)?this._ap_api={method:String(method||"GET"),url:e,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return Gr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=h(),this.addEventListener("loadend",function(){var message=0===this.status?"Network Error":this.statusText||"-";Zr(e.method,e.url,e.starttime,this.status,message)})),Vr.apply(this,arguments)}),Jr(),Hr=!0,void O.log("automatic api tracking: on");Gr&&(XMLHttpRequest.prototype.open=Gr),Vr&&(XMLHttpRequest.prototype.send=Vr),Kr&&(window.fetch=Kr),Gr=Vr=Kr=null,Hr=!1,O.log("automatic api tracking: off")}}function trackError(e,t){var r;if(et(r="trackError")&&(E._errorTracking||(O.log("apptics."+r+": error tracking is turned off by the server"),0)))if(b(e))O.warn("AppticsError.trackError: Invalid error");else{var i=Vn(t),a=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!b(t))return t;var n=e.filename||e.fileName||"";if(b(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(b(r)?"":":"+r)+(b(i)?"":":"+i)}(e),o=function(e){let t="";if(b(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),a=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),url=r?r[1]:"Unknown URL";t=n[1],url.split("/").pop();break}if(a&&a[1]){t=a[1],e.split("@")[1].split("/").pop();break}}return t}(a)||"",s=e.type||"",c=function(e){if(null==e)return"";if("object"!=typeof e)return String(e);if(e instanceof Error||"string"==typeof e.message&&"string"==typeof e.name)return String(e);if("undefined"!=typeof Event&&e instanceof Event)return'Event "'+e.type+'"'+function(e){var t=e;if(!t||"string"!=typeof t.tagName)return"";var n=t.tagName.toLowerCase(),url=t.currentSrc||t.src||t.href||"";return" on <"+n+(url?(t.href&&!t.src?' href="':' src="')+url+'"':"")+">"}(e.target);var t=String(e);if("[object Object]"!==t)return t;try{return JSON.stringify(e).slice(0,300)}catch(e){return t}}(e.reason||e.error||e.message||""),message=(b(String(c))?b(s)?"Unknown error":String(s):String(c))+(b(o)?"":" at "+o),d=h(),u={id:S(),type:n.ERROR,edge:E._device_info.connectionType||Be(),networkstatus:Ue(),happenedat:d,issuename:message,message:b(a)?b(String(c))?"no stack available":String(c):a,screenname:E._current_screen.screen||window.location.pathname,sessionstarttime:E._current_session.starttime||d,customproperties:i};Rn(),qe(),Ae.add(u),O.log("AppticsError.trackError('"+s+"','"+message+"',"+JSON.stringify(i||{})+")"),O.dir(u)}}function Yr(e){E._deferSendTimer&&clearTimeout(E._deferSendTimer),E._deferSendTimer=setTimeout(e,500)}function Qr(){E._deferSendTimer&&(clearTimeout(E._deferSendTimer),E._deferSendTimer=null)}function $r(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-send-"+name,{ifAvailable:!0},function(t){return t?e():void 0}).then(function(){}):e()}function Xr(e,t,n){return e.payload().then(function(r){var i=[],a=[];return r.forEach(function(e){t(e)&&(T(n(e))?a:i).push(e)}),a.length?e.remove(a).then(function(){return i}):i})}function ei(e,t,n,r){var i=yt(t);if(i)return i;if(!Xe())return Promise.reject(t+": tracking is off");if(_(n))return Promise.reject(t+": nothing to send");var a=wt(t);if(a)return a;if(n.hasOwnProperty("meta")||(n.meta=At()),function(e){return ot(e).attempt>5}(e))return I("apptics: dropping a "+t+" batch after 5 attempts"),function(e){f[e]&&st(e,{attempt:1,firstattempttime:0,lst:ot(e).lst})}(e),Promise.resolve({result:"success"});O.log(t+": Payload size : "+A(n)/1024);var o=JSON.stringify(n);return r?_t(e,o,gt(),t):kt(e,o,gt(),t)}function ti(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){O.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function ni(e){return Je()||!Xe()?Promise.resolve():0==navigator.onLine?(O.warn("sendEngagementData: No Network"),Promise.resolve()):E._sending?(Yr(ni),Promise.resolve()):(E._sending=!0,Qr(),$r("engagements",function(){return Xr(ze,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],a=[],o=[];var s={},c=[];return z(t).forEach(function(e){if(!1===E._engagementTracking[e.type])return;const t={...e};if(e.type==n.EVENT)a.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;o.push(e)}c.push(t),delete e.id,delete e.type,delete e.tabs,delete e.tab,delete e.lastseen}),a.length>0&&(s.events=a),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),o.length>0&&(s.apis=o),_(s)?void 0:ti(function(e,t){return ei("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return ze.remove(c)},function(e){return vt(e)?(I("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),ze.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){R(a.API,"sendEngagementData: "+e)}).then(function(){E._sending=!1}))}function ri(e){return!Je()&&Xe()&&E._errorTracking?0==navigator.onLine?(O.warn("sendErrorData: No Network"),Promise.resolve()):E._sending?(Yr(ri),Promise.resolve()):(E._sending=!0,Qr(),$r("errors",function(){return Xr(Ae,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return z(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),ti(function(e,t){return ei("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return Ae.remove(r)},function(e){return vt(e)?(I("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),Ae.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){O.log("sendErrorData:"+e)}).then(function(){E._sending=!1})):Promise.resolve()}function flush(e){return et("flush")?(E._sending=!1,ni(e).then(function(){return ri(e)}).then(function(){return Me.sendHeatmaps(e)})):Promise.resolve()}var ii=0;var ai=null;function oi(){null===ai&&(ai=setInterval(function(){De()&&(O.log("apptics: debug mode has been idle for an hour, switching it off"),je(!1)),O.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),ni().then(function(){return ri()}).then(function(){return Me.sendHeatmaps()})},x("batch_flush_interval")))}function si(){null!==ai&&clearInterval(ai),ai=null,Qr(),null!==nn&&clearTimeout(nn),nn=null,an++,rn=!1,sn=!1,cn=!1,dn=0,ii=0}function ci(){return!(!E._token||Je())&&(!!E._remoteLoggerEnabled&&Xe())}const di="remoteLog";let ui=!1,li=!1;function fi(e){var t={sessionstarttime:E._current_session.starttime||e.happenedat||h(),logtime:e.happenedat||h(),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 b(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function pi(e){return JSON.stringify({logs:e.map(fi),meta:At()})}function gi(){return li||!ci()||!1===navigator.onLine?Promise.resolve():(li=!0,Ee.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:(Ee.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return kt("consolelog",pi(t),gt(),di).then(function(){return Ee.remove(t)},function(e){if(vt(e))return I("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),Ee.remove(t);O.log(di+": "+String(e))})}).then(function(){li=!1}).catch(function(){li=!1}))}function mi(){var e=Ce.item("user_info");if(!e||"object"!=typeof e||b(e.userid)){var t=Ce.item("users")||[],n={};t.length>0&&(n=t.filter(e=>1===e.status)[0]||{}),E._user_info=n}else E._user_info=e}let vi=!1,hi=null,ki=0;function bi(config){var e=Object.assign({},config);return Object.keys(u).forEach(function(key){var t=u[key];b(config[key])?(delete e[t],Object.keys(g).forEach(function(n){g[n]!==key||b(config[n])||(I("Apptics.init: "+n+" is now "+key+"; rename it in your config"),b(e[t])&&(e[t]=config[n]))})):e[t]=config[key]}),b(e.serviceUrl)||(e.serviceUrl=String(e.serviceUrl).replace(/\/+$/,"")),e.appversion=function(value){if("number"==typeof value)return isFinite(value)?String(value):"";return"string"==typeof value?value.trim():""}(e.appversion),e}const _i=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function yi(e){return e.serviceUrl+"|"+e.identifier}var zi="";const Ai=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 wi(){return Ce.add(it,void 0),Ce.clear(),Promise.all([ze,Ae,Se,Ee,we].map(function(e){return e.clear()})).then(function(){})}function init(config){if(!config||"object"!=typeof config)return I("Apptics.init: a config object is required, e.g. Apptics.init({ base_url, auth_key, app_domain, appversion })"),!1;if(E._initialised)return O.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 I("Apptics.init: skipped, no browser with storage and Promise support"),!1;var e,t,n=bi(config),r=d.filter(function(key){return b(n[u[key]||key])});if(r.length>0)return I("Apptics.init: missing required config: "+r.join(", ")),!1;if(e=n.appversion,-1!==_i.indexOf(e.toUpperCase()))return I('Apptics.init: appversion is still the placeholder "'+n.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;E._defaultoptions=n,E._defaultoptions.base_domain=n.serviceUrl,E._frameworkID=function(e){var t=e;try{t=new URL(e).hostname}catch(e){}return-1!==t.indexOf("localzoho")?5970:6003}(n.serviceUrl),E._token=n.identifier,b(config.console_log)||(E._config.debug=!!config.console_log),"boolean"==typeof config.ignore_do_not_track&&(E._config.ignore_do_not_track=config.ignore_do_not_track),E._config.debug_api="boolean"==typeof config.debug?config.debug:"boolean"==typeof config.debug_api?config.debug_api:c.debug_api,t=E._config.debug_api,je(null!==Fe?Fe:t),E._config.device_name="string"==typeof config.device_name?config.device_name:c.device_name,void 0!==config.remote_log&&I("Apptics.init: remote_log is no longer read; the Remote Logger page shows the lines your app logs with AppticsLogger"),void 0!==config.show_logs&&I("Apptics.init: show_logs is no longer read; AppticsLogger lines are not printed to the browser console"),E._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(key){void 0!==config[key]&&I("Apptics.init: "+key+" is no longer supported; use AppticsApi.configure(new AppticsApi.ApiTrackingBuilder()."+("track_api_hosts"===key?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),["DC","quartz_workspace_key","quartz_department_key"].forEach(function(key){void 0!==config[key]&&I("Apptics.init: "+key+" is no longer read; screen recording in the feedback form is set up from the Apptics console")}),void 0!==config.track_session&&I("Apptics.init: track_session is no longer read; sessions are always recorded. To stop tracking, use AppticsSettings.setTrackingStatus(AppticsSettings.AP_TRACKING_STATUS.NO_TRACKING)"),"boolean"==typeof config.track_api&&(E._config.track_api=config.track_api),enableApiTracking(E._config.track_api),E._config.track_heatmap="boolean"==typeof config.track_heatmap?config.track_heatmap:c.track_heatmap,Me.trackHeatmap(E._config.track_heatmap),E._config.track_screen="boolean"==typeof config.track_screen?config.track_screen:c.track_screen,E._config.screen_routes=function(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(e){if("string"!=typeof e){var n=e&&"object"==typeof e?e:null,name=n&&"string"==typeof n.name?n.name.trim():"";if(n&&""!==name&&"string"==typeof n.equals&&""!==n.equals.trim())t.push({kind:"equals",path:ur(n.equals.trim()),name:name});else{if(n&&""!==name&&void 0!==n.regex){var r=null;if(n.regex instanceof RegExp)r=n.regex;else if("string"==typeof n.regex&&""!==n.regex)try{r=new RegExp(n.regex)}catch(e){r=null}if(r)return void t.push({kind:"regex",regex:r,name:name})}I("Apptics.init: screen_routes entry "+function(value){try{return JSON.stringify(value,function(e,t){return t instanceof RegExp?String(t):t})||String(value)}catch(e){return String(value)}}(e)+" is left out: give a route pattern, { equals, name } or { regex, name }")}}else""!==e.trim()&&t.push({kind:"pattern",pattern:e.trim()})}),t}(config.screen_routes),E._config.track_error="boolean"==typeof config.track_error?config.track_error:c.track_error,E._config.track_click="boolean"==typeof config.track_click?config.track_click:c.track_click,"light"!==config.feedback_theme&&"dark"!==config.feedback_theme&&"auto"!==config.feedback_theme||(E._config.feedback_theme=config.feedback_theme),function(config){if(Ai.forEach(function(e){var value=config[e.key];if(E._config[e.key]=c[e.key],!b(value)){var t=Number(value);!isFinite(t)||t<e.min||t>e.max?I("Apptics.init: "+e.key+" must be between "+e.min+" and "+e.max+", keeping "+E._config[e.key]):(E._config[e.key]=t,O.log("Apptics.init: "+e.key+" set to "+t))}}),E.inactiveduration=30,!b(config.inactiveduration)){var e=Number(config.inactiveduration);!isFinite(e)||e<1||e>1440?I("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+E.inactiveduration):(E.inactiveduration=e,O.log("Apptics.init: inactiveduration set to "+e))}}(config),hi=config,E._initialised=!0,E._ready=!1,E._pending=[];var i=++ki;return E._readyPromise=be().then(function(e){return i===ki&&(e?function(e){var t=Ce.item("app_version_info")||{},n=b(t.serviceUrl)||b(t.identifier)?Ce.item("appkey"):yi(t);zi=String((b(t.appversion)?Ce.item("appversion"):t.appversion)||""),Ce.add("appkey",void 0),Ce.add("appversion",void 0);var r=!b(n)&&n!==yi(e),i=!b(t.zakhash)&&t.zakhash!==Rt(e.zak);return r||i?(O.log("init: stored data was registered with another "+(r?"base_url or app_domain":"auth_key")+", clearing it and starting as a first visit"),zi="",Me.resetRemoteConfig(),wi()):Promise.resolve()}(E._defaultoptions).then(function(){return i===ki&&function(config,e){return Dt().then(function(t){return e===ki&&(!t&&Lt()?(I("Apptics.init: offline, so app/addversion is tried again when the browser is back online; calls made until then are kept"),function(e){return new Promise(function(t){var n=null,r=!1;function i(e){window.removeEventListener("online",a),null!==n&&clearInterval(n),t(e)}function a(){e===ki?r||!1===navigator.onLine||(r=!0,Dt().then(function(e){r=!1,e?i(!0):Lt()||(I("Apptics.init: app/addversion did not return the app ids, not starting"),i(!1))})):i(!1)}window.addEventListener("online",a),n=setInterval(a,Si)})}(e).then(function(t){return e===ki&&(t?Ei(config,e):(E._initialised=!1,E._token="",E._pending=[],!1))})):t?Ei(config,e):(I("Apptics.init: app/addversion did not return the app ids, not starting"),E._initialised=!1,E._token="",E._pending=[],!1))})}(config,i)}):(I("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),E._initialised=!1,E._token="",E._pending=[],!1))}).catch(function(e){return O.error("Apptics.init: start-up failed",e),!1}),!0}const Si=6e4;function ready(){return E._readyPromise||Promise.resolve(!1)}function Ei(config,e){var t,n;(t=An())&&!wn&&(wn=!0,t.request(zn+_n(),function(){return new Promise(function(){})}).catch(function(){wn=!1})),E._token=String(E._defaultoptions.aaid),(n=Ce.item("trackinfo"))&&"object"==typeof n&&(Xt(n),en.some(function(key){return n.hasOwnProperty(key)})&&Ce.add("trackinfo",void 0===n.tracking_status?E._trackinfo:Object.assign({},E._trackinfo,{tracking_status:n.tracking_status})),O.log("restoreServerSettings: "+JSON.stringify(E._trackinfo))),mi();var r=""!==zi&&zi!=E._defaultoptions.appversion;return E._ignoreDnt=E._config.ignore_do_not_track,Re.update_status(Re.opt_in_status()),Zt().then(function(){return e===ki&&function(e,t){ln(),e&&(E._device_info.appversionid="",Qt(E._device_info).then(function(e){k(e)&&O.log("init: appversion updated to "+E._defaultoptions.appversion)}).catch(function(e){O.log("init: error updating appversion: "+e)}));return E._device_info.connectionType=Be(),function(){if(vi)return;vi=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){E._device_info.connectionType=Be()});window.addEventListener("blur",function(){xi()&&(document.activeElement&&"IFRAME"===document.activeElement.tagName||(O.log("Window lost focus, user switched to another window or application"),Dn(Oi)))}),window.addEventListener("focus",function(){xi()&&(O.log("Window regained focus, user switched back to the window"),qn(),jn(),oi())}),window.addEventListener("pagehide",Ii),window.addEventListener("pageshow",function(e){xi()&&e.persisted&&(O.log("restored from the back/forward cache: starting a new session"),qn(),jn().then(Dr),oi())}),document.addEventListener("visibilitychange",function(){xi()&&("hidden"!==document.visibilityState?(qn(),jn().then(Dr)):function(){if(!xi())return;Dn(Oi),mn(),flush(!0),O.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){xi()&&jn()},{passive:!0}),window.addEventListener("online",function(){if(xi()){if(b(ut("apid"))&&b(ut("mapid"))||!St())return O.log("back online: registering this device before sending"),void Zt().then(Jt).then(function(){xi()&&(flush(),gi())});flush(),gi()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){E._properties.orientation=Ge()});window.addEventListener("unhandledrejection",function(e){xi()&&E._config.track_error&&trackError(e)}),window.addEventListener("error",function(e){if(xi()&&E._config.track_error){var t=e.target;t&&t!==window&&"string"==typeof t.tagName?trackError({type:"error",reason:e}):trackError(e)}},!0),window.addEventListener("click",Ci,!0)}(),E._properties.orientation=Ge(),jn().then(function(){if(t!==ki)return!1;oi(),gi(),E._ready=!0;var e=E._pending;return E._pending=[],e.forEach(function(e){try{e()}catch(e){O.error("apptics: buffered call failed",e)}}),Or(E._config.track_screen),Me.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(r,e)})}function xi(){return E._ready}function Ti(e,name){var value=e.getAttribute(name);return null!==value&&""!==value?value:e.getAttribute("data-"+name)}function Pi(name){return"["+name+"]:not(["+name+'=""]),[data-'+name+"]:not([data-"+name+'=""])'}function Ci(e){if(window.appticsReadyStatus&&xi()&&E._config.track_click){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest(Pi("apeventaction"));if(n){var eventName=Ti(n,"apeventaction")||"",r=n.closest(Pi("apgroupaction")),groupName=r&&Ti(r,"apgroupaction")||void 0,i={},a=Ti(n,"apeventprops");if(!b(a))try{i=JSON.parse(a)}catch(e){O.warn('apptics: invalid JSON in apeventprops for "'+eventName+'", sending no properties'),i={}}b(eventName)||Nr(eventName,groupName,i)}}}}function Oi(){xi()&&flush()}function Ii(){xi()&&(O.log("page closing: ending the session and sending what is queued"),mn(),ci()?Ee.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);_t("consolelog",pi(t),gt(),di).then(function(){return Ee.remove(t)},function(e){if(vt(e))return Ee.remove(t);O.log(di+": "+String(e))})}}):Promise.resolve(),Fn().then(function(){return flush(!0)}))}var Ri=!1,Ni=0,Mi=[],Li=0,Di=0,qi=0,Fi=null,ji=null,Bi=new WeakMap,Ui=0,Hi=0;function Gi(){var e=x("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(Ni>=e)||(Ni===e&&(Ni++,O.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function Vi(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function Ki(e,t){if(!t||t<=0)return 0;var value=e/t;return value<0&&(value=0),value>1&&(value=1),Math.round(1e3*value)/1e3}function Wi(){return window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1}function Zi(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","data-apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var value=t.getAttribute?t.getAttribute(n[r]):null;if(!b(value))return String(value).slice(0,80)}var i=t.tagName?t.tagName.toLowerCase():"element";if(getTrackingStatus()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return b(a)?i:i+"["+a+"]"}var o=(t.textContent||"").replace(/\s+/g," ").trim();return b(o)?i:o.slice(0,80)}function Ji(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,a=0;if(i)for(var o=i.children,s=0;s<o.length;s++)if(o[s]===n){a=s;break}t="/"+(n.tagName||"?")+":"+a+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function Yi(e,t,n){return(Mi=Mi.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),Mi.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function Qi(){return{id:S(),session_start_time:E._current_session.starttime||h(),triggered_time:h(),screen:String(Lr()).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:Vi(),orientation:Ge(),network_status:Ue(),edge_type:E._device_info.connectionType||Be(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function $i(e){Ni++,qe(),Rn(),Se.add(e),O.dir(e)}function Xi(e){if(nt("heatmap")&&Gi())try{var t=h(),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,o=Math.round(e.clientX),s=Math.round(e.clientY),c=Vi()||1,d=e.pointerType,u=Object.assign(Qi(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:b(d)?"mouse":String(d),element_label:Zi(i),triggered_id:Ji(i),coordinate_x:o,coordinate_y:s,normalized_x:Ki(o,Wi()),normalized_y:Ki((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:Yi(o,s,t)?1:0,is_dead_click:0});$i(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,url=window.location.href,n=new MutationObserver(function(){t=!0});try{n.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){n.disconnect(),t||window.location.href!==url||(e.is_dead_click=1,Se.update(e))},1500)}(u)}catch(e){R(a.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function ea(e){if(nt("heatmap")&&Gi()){var t=function(e){var t=document;if(!e||1!==e.nodeType||e===t.documentElement||e===t.body)return null;var n=e;return n.clientHeight>=.5*(window.innerHeight||0)&&n.clientWidth>=.5*Wi()?n:void 0}(e?e.target:null);if(void 0!==t){if(null!==Fi&&t!==ji&&(clearTimeout(Fi),ta()),null===Fi){ji=t;var n=function(e){return null===e?{x:Ui,y:Hi}:Bi.get(e)||{x:0,y:0}}(t);Li=h(),Di=n.x,qi=n.y}else clearTimeout(Fi);Fi=setTimeout(ta,150)}}}function ta(){Fi=null;var e=ji;ji=null;try{var t=function(e){return null===e?{x:Math.round(window.scrollX||window.pageXOffset||0),y:Math.round(window.scrollY||window.pageYOffset||0)}:{x:Math.round(e.scrollLeft||0),y:Math.round(e.scrollTop||0)}}(e),n=t.x,r=t.y,i=n-Di,o=r-qi;if(null===e?(Ui=n,Hi=r):Bi.set(e,t),0===i&&0===o)return;var s=Math.max(1,h()-Li),c=Math.sqrt(i*i+o*o),d=Math.abs(o)>=Math.abs(i)?o>0?"down-scroll":"up-scroll":i>0?"right-scroll":"left-scroll",u=(null===e?Vi():e.scrollHeight)||1,l=null===e?window.innerHeight||0:e.clientHeight;$i(Object.assign(Qi(),null===e?{}:{content_height:e.scrollHeight,scroll_offset_x:n,scroll_offset_y:r},{triggered_type:"default",gesture_type:d,gesture_duration:Math.round(s),element_label:"",triggered_id:0,coordinate_x:n,coordinate_y:r,normalized_x:0,normalized_y:Ki(r+l,u),velocity:Math.round(c/s*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){R(a.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function trackHeatmap(status){var e="boolean"!=typeof status||status;if(e!==Ri){if(e)return Ui=Math.round(window.scrollX||0),Hi=Math.round(window.scrollY||0),window.addEventListener("pointerdown",Xi,{capture:!0,passive:!0}),window.addEventListener("scroll",ea,{capture:!0,passive:!0}),Ri=!0,void O.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",Xi,!0),window.removeEventListener("scroll",ea,!0),null!==Fi&&(clearTimeout(Fi),ta()),ji=null,Ri=!1,O.log("apptics.heatmap: capture stopped")}}Me.trackHeatmap=trackHeatmap,Me.resetHeatmap=function(){Ni=0,Mi=[],Ui=0,Hi=0,Bi=new WeakMap},Me.sendHeatmaps=function e(t){return!Je()&&Xe()&&E._heatmapTracking?0==navigator.onLine?(O.warn("sendHeatmapData: No Network"),Promise.resolve()):E._sending?(Yr(e),Promise.resolve()):(E._sending=!0,Qr(),$r("heatmaps",function(){return Xr(Se,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return z(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),ti(function(e,t){return ei("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return Se.remove(r)},function(e){return vt(e)?(I("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),Se.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){O.log("sendHeatmapData:"+e)}).then(function(){E._sending=!1})):Promise.resolve()};const na=q("Apptics.init",init),ra=q("Apptics.ready",ready),ia=q("Apptics.flush",function(){var e=h();return ii>0&&e-ii<15e3?(O.log("Apptics.flush: sent "+(e-ii)+" ms ago; it sends at most once every 15000 ms, and the timer sends the rest"),Promise.resolve()):(ii=e,flush())}),aa=q("Apptics.reset",function reset(){ki++,si(),qn(),enableApiTracking(!1),Or(!1),Pt=null,Ce.add(xt,void 0),Me.trackHeatmap(!1),Me.resetHeatmap(),Me.resetRemoteConfig(),wi(),E._initialised=!1,E._ready=!1,E._pending=[],E._readyPromise=null,E._device_info={},E._user_info={},E._current_screen={},E._current_session={},E._uuid="",E._apid="",E._mapid="",E._sending=!1,O.log("Apptics.reset()"),hi&&init(hi)}),oa=q("Apptics.enableDebug",function enableDebug(){Fe=!0,je(!0)}),sa=q("Apptics.disableDebug",function disableDebug(){Fe=!1,je(!1)});var ca={};function da(e,t){ca[e]||(ca[e]=!0,I(e+" is now "+t+"; rename it in your code"))}const ua={init:function init(config){return F(na,arguments)},ready:function ready(){return F(ra,arguments)},flush:function flush(){return F(ia,arguments)},reset:function reset(){return F(aa,arguments)},enableDebug:function enableDebug(){return F(oa,arguments)},disableDebug:function disableDebug(){return F(sa,arguments)}},la=q("AppticsEvent.addEvent",Nr),fa=q("AppticsEvent.setClickTracking",function setClickTracking(enabled){E._config.track_click="boolean"!=typeof enabled||enabled,O.log("click tracking: "+(E._config.track_click?"on":"off"))}),pa={DefinedEvents:cr,addEvent:function addEvent(eventName,groupName,properties){return F(la,arguments)},setClickTracking:function setClickTracking(enabled){return F(fa,arguments)}},ga=q("AppticsScreen.inScreen",function(screenName,e,id,t){Wn(screenName)?(Me.screenTrackedByApp(),Mr(screenName,e,id,t)):Rr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}),ma=q("AppticsScreen.outScreen",function(id,e){b(id)?R(a.SCREEN,"AppticsScreen.outScreen: no screen id given"):gn(id,e)}),va=q("AppticsScreen.setScreenTracking",function setScreenTracking(enabled){E._config.track_screen="boolean"!=typeof enabled||enabled,xi()&&Or(E._config.track_screen)}),ha={inScreen:function inScreen(screenName,properties){if(!Wn(screenName))return ga(screenName,properties,"",h()),"";var id=S();return ga(screenName,properties,id,h()),id},outScreen:function outScreen(id){ma(id,h())},setScreenTracking:function setScreenTracking(enabled){return F(va,arguments)}},ka=q("AppticsApi.endTrackApi",function(id,responseCode,responseMessage,e){var t=Br[id];t?(delete Br[id],Ur=Ur.filter(function(e){return e!==id}),jr({url:t.url,method:t.method,responsecode:"number"==typeof responseCode?responseCode:0,responsemessage:responseMessage,starttime:t.starttime,endtime:e})):R(a.API,"AppticsApi.endTrackApi: no call started with id "+String(id))}),ba=q("AppticsApi.startTrackApi",function startTrackApi(url,method){var id=S();return Br[id]={url:String(url||""),method:String(method||"GET").toUpperCase(),starttime:h()},Ur.push(id),Ur.length>500&&delete Br[Ur.shift()],id}),_a=q("AppticsApi.configure",function(config){var e=config instanceof Qn?config.build():config;if(e&&"object"==typeof e){var t=function(e){return"string"==typeof e},n=function(e){return e instanceof RegExp};Xn={allowEquals:Jn("allowEquals",er(e.allowEquals,t)),ignoreEquals:Jn("ignoreEquals",er(e.ignoreEquals,t)),allowRegex:er(e.allowRegex,n).concat(Yn("allowRegex",er(e.allowRegex,t))),ignoreRegex:er(e.ignoreRegex,n).concat(Yn("ignoreRegex",er(e.ignoreRegex,t)))}}else Xn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}),ya=q("AppticsApi.setApiTracking",enableApiTracking),za={startTrackApi:function startTrackApi(url,method){return F(ba,arguments)},endTrackApi:function endTrackApi(id,responseCode,responseMessage){ka(id,responseCode,responseMessage,h())},ApiTrackingBuilder:Qn,configure:function configure(config){return F(_a,arguments)},setApiTracking:function setApiTracking(enabled){return F(ya,arguments)},enableApiTracking:function enableApiTracking(enabled){return da("AppticsApi.enableApiTracking","AppticsApi.setApiTracking"),F(ya,arguments)}},Aa=q("AppticsError.trackError",trackError),wa=q("AppticsError.setErrorTracking",function setErrorTracking(status){E._config.track_error="boolean"!=typeof status||status,O.log("automatic error tracking: "+(E._config.track_error?"on":"off"))}),Sa={trackError:function trackError(error,properties){return F(Aa,arguments)},setErrorTracking:function setErrorTracking(enabled){return F(wa,arguments)},trackGlobalErrorHandler:function trackGlobalErrorHandler(enabled){return da("AppticsError.trackGlobalErrorHandler","AppticsError.setErrorTracking"),F(wa,arguments)}},Ea=q("AppticsUser.setUser",function setUser(userid,groupid,t){let n=t||{};if(userid=userid||"",groupid=groupid||"",et("setUser"))if(b(userid))R(a.PROPERTIES,"AppticsUser.setUser: Invalid userid");else{var r={mam:userid,customergroupid:groupid,appversionid:E._device_info.appversionid||"",status:1,happendat:h()};_(n)||(r.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:Kn(e);return n.message.forEach(function(e){R(a.PROPERTIES,"AppticsUser.setUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(n)),function(t){var n="registerUserWithApptics",r=yt(n)||zt(n);if(r)return r;if(_(t))return Promise.reject(n+": nothing to register");var i=wt(n);if(i)return i;var a=JSON.stringify(function(e,t){const n={};for(let key in e)t.includes(key)||(n[key]=e[key]);return n}(t,["userid","groupid","happendat"]));return kt("reguser",a,gt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,rt(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=Ce.item("users")||[],n=(t=t.map(e=>({...e,status:0}))).findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);Ce.add("users",t),Ce.add("user_info",t[-1!==n?n:t.length-1])}(t),mi(),Me.remoteConfigUserChanged(),Me.askServerSettings(),r})}(r).then(function(e){O.log("setUser: "+JSON.stringify(e))}).catch(function(e){O.log(e)})}}),xa=q("AppticsUser.getUser",function getUser(){return E._user_info||{}}),Ta={setUser:function setUser(userid,groupid,properties){return F(Ea,arguments)},getUser:function getUser(){return F(xa,arguments)},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(key,value){return"string"==typeof value&&(this[key]=value),this}addBooleanProperty(key,value){return"boolean"==typeof value&&(this[key]=value),this}addNumberProperty(key,value){return"number"==typeof value&&Number.isFinite(value)&&(this[key]=value),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[key,value]of Object.entries(e))this[key]=value;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(([key,value])=>{-1===t.indexOf(key)&&"function"!=typeof value&&(e[key]=value)}),Kn(e)}}},Pa=q("AppticsHeatmap.setHeatmapTracking",trackHeatmap),Ca={setHeatmapTracking:function setHeatmapTracking(enabled){return F(Pa,arguments)},trackHeatmap:function trackHeatmap(on){return da("AppticsHeatmap.trackHeatmap","AppticsHeatmap.setHeatmapTracking"),F(Pa,arguments)}},Oa=q("AppticsSettings.setTrackingStatus",function setTrackingStatus(t){b(t)?O.warn("setTrackingStatus: trackingStatus is Empty"):rt(t)&&Re.opt_in_status()!=e.NO_TRACKING&&(O.log("setTrackingStatus: Updating device info with new tracking status"),Me.updateDevice(E._device_info).then(function(e){k(e)?(O.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),O.dir(e.data)):O.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){O.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}))}),Ia=q("AppticsSettings.getTrackingStatus",getTrackingStatus),Ra={AP_TRACKING_STATUS:e,setTrackingStatus:function setTrackingStatus(status){return F(Oa,arguments)},getTrackingStatus:function getTrackingStatus(){return F(Ia,arguments)}},Na={Apptics:ua,AppticsEvent:pa,AppticsScreen:ha,AppticsApi:za,AppticsError:Sa,AppticsUser:Ta,AppticsSettings:Ra,AppticsHeatmap:Ca},Ma=2097152,La=V,Da=K;let qa=!1;function Fa(){qa||(qa=!0,setTimeout(function(){qa=!1,we.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return O.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),we.remove(e.slice(0,t))})},2e3))}function ja(e){we.add(e),Fa()}function Ba(e){return e.length>1e4?e.slice(0,1e4)+"…":e}const Ua={};function Ha(message){Ua[message]||(Ua[message]=!0,I("AppticsFeedback.addDiagnosticsInfo: "+message+", so the entry is not recorded"))}function Ga(e){return we.all().then(function(t){return t.filter(function(t){return t.type===e&&!T(t.happenedat)})})}function Va(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:h()).toISOString()}function Ka(e){return e.map(function(e){return String(e.id)})}function Wa(e){const t=[],n={};return e.forEach(function(e){const heading=String(e.heading);n[heading]||(n[heading]=[],t.push(heading)),n[heading].push(e.key+": "+e.value)}),t.map(function(heading){return"["+heading+"]\n"+n[heading].join("\n")}).join("\n\n")}function Za(name,e,t){const n=new File([e],name,{type:"text/plain"});return n.size>Ma?(O.warn("apptics: "+name+" is over 2 MB, not sending it"),null):{file:n,ids:Ka(t)}}function Ja(){return Ga(La).then(function(e){return 0===e.length?null:Za("feedbacklog.txt",function(e){return e.map(function(e){return"["+Va(e)+"] "+e.message}).join("\n")}(e),e)})}function Ya(){return Ga(La).then(function(e){return e.map(function(e){return"["+function(e){var t=Va(e),n=new Date(t);return isNaN(n.getTime())?t:n.toLocaleDateString(void 0,{day:"2-digit",month:"short",year:"numeric"})+", "+n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}(e)+"] "+e.message}).join("\n")})}const Qa="Feedback sent successfully",$a="Something went wrong. Send feedback again";function Xa(e){if(Je())return Promise.resolve(null);if(0==navigator.onLine)return O.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=b(e.attachment)?null:e.attachment,n=t?t.length:0,r=function(e){if(!e||0===e.length)return"";if(e.length>5)return"Maximum 5 attachments is allowed";for(var t=0,n=0;n<e.length;n++)t+=Number(e[n].size)||0;return t>10485760?"Maximum limit reached. The total file size cannot exceed 10MB.":""}(t);if(""!==r)return Promise.reject(new Error("sendFeedback: "+r));var i=e&&e.logsFiles?e.logsFiles:null,a=i&&i.length?i.length:0,o=h();return Promise.all([eo(e),He()]).then(function([r,s]){var c=new FormData,d={networkstatus:Ue(),orientation:Ge(),edge:Be(),screenname:E._current_screen.screen||"",sessionstarttime:E._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:a+(r.logFile?1:0),happendat:o};b(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:At()}));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,i,r),a=c,o=r.ids,(e=a,t="requestToFeedback",n=yt(t)||wt(t),n||(O.log(t+": Feedback Payload size : "+A(e)/1024),kt("feedback",e,gt(),t))).then(function(){return E._sending=!1,o.length>0&&function(e){we.remove(e.map(function(id){return{id:id}}))}(o),{ok:!0,message:Qa}}).catch(function(e){return E._sending=!1,O.log("sendFeedbackData:"+e),{ok:!1,message:$a}});var e,t,n,a,o})}).catch(function(e){return O.error("sendFeedbackData: "+e),{ok:!1,message:$a}})}function eo(e){var t=!1!==e.includeLog,n=!1!==e.includeDyninfo;return Promise.all([t?Ja():Promise.resolve(null),n?Ga(Da).then(function(e){return 0===e.length?null:Za("dyninfo.txt",Wa(e),e)}):Promise.resolve(null)]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const to="anonymous",no="Anonymous",ro={anonymous:!0,userid:"",groupid:""},io={};function ao(){ro.anonymous=!0,ro.userid="",ro.groupid=""}function oo(){var e=Ce.item("users");return Array.isArray(e)?e:[]}const so="http://www.w3.org/2000/svg";function co(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),a=e.querySelector("#zasdkEmailList"),o=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&a&&o){var s=oo(),c=function(e){var t=[{value:to,label:no}],n={};return e.forEach(function(e){var r=e&&e.mam;b(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=to;if(ao(),!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||b(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()}),a.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),o.setAttribute("tabindex","0"),o.addEventListener("focusout",function(e){o.contains(e.relatedTarget)||(r.style.display="none")}),f()}function l(value){d=value,ro.anonymous=value===to;var e=null;ro.anonymous||s.forEach(function(t){!e&&t&&t.mam===value&&(e=t)}),ro.userid=e?String(e.userid||""):"",ro.groupid=e?String(e.groupid||""):"",i.textContent=ro.anonymous?no:value,f()}function f(){if(a.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void a.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(so,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(so,"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}()),a.appendChild(n)})}}function uo(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),a=e.querySelector("#zasdkViewerContent");r&&i&&a&&(i.textContent=t,a.textContent=n||"(No data available)",r.style.display="flex")}function lo(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),a=e.querySelector(".zasdk-toggle-separator"),o=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");io.includeLog=!0===t.includeLog||void 0,io.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([Ga(La).then(function(e){return e.length>0}),Ga(Da).then(function(e){return e.length>0})]).then(function([e,o]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=o?"":"none"),a&&(a.style.display=e&&o?"":"none"),i.style.display=e||o?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||o,io.includeLog=n.checked,io.includeDyninfo=r.checked}).catch(function(e){O.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){io.includeLog=n.checked}),r.addEventListener("change",function(){io.includeDyninfo=r.checked}),o&&o.addEventListener("click",function(){Ya().then(function(t){uo(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){Ga(Da).then(Wa).then(function(t){uo(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}var fo=null;function po(e,t,n){e.style.right="auto",e.style.bottom="auto",e.style.left=Math.max(0,Math.min(t,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(n,window.innerHeight-e.offsetHeight))+"px"}function go(e,t,n,r){var i=0,a=0,o=0,s=0,c=!1,d=!1;function u(){c&&(c=!1,t.style.cursor="",d&&r&&r(parseInt(e.style.left,10),parseInt(e.style.top,10)))}t.addEventListener("pointerdown",function(r){if(!(0!==r.button||n&&n(r.target))){var u=e.getBoundingClientRect();c=!0,d=!1,i=r.clientX,a=r.clientY,o=u.left,s=u.top,t.style.cursor="move";try{t.setPointerCapture(r.pointerId)}catch(e){}r.preventDefault()}}),t.addEventListener("pointermove",function(t){if(c){var n=t.clientX-i,r=t.clientY-a;!d&&Math.abs(n)<4&&Math.abs(r)<4||(d=!0,po(e,o+n,s+r))}}),t.addEventListener("pointerup",u),t.addEventListener("pointercancel",u),e.addEventListener("click",function(e){d&&(d=!1,e.stopImmediatePropagation(),e.preventDefault())},!0)}Me.feedbackUser=function(){return ro.anonymous||b(ro.userid)?null:ro};const mo=/(^|\.)(zohocdn\.com|zohostatic\.com|localzohocdn\.com|localzoho\.com|zoho\.(com|eu|in|jp|sa|ae|com\.au|com\.cn)|zohocloud\.ca)$/;function vo(e,t){return e&&""!==e.trim()?e.trim():function(e){var t="";try{t=new URL(e).hostname}catch(n){t=e||""}return"https://"+(-1!==t.indexOf("localzoho")?"static.localzohocdn.com":"static.zohocdn.com")+"/quartz/feedback/v2/quartz.js"}(t)}function ho(){return"undefined"!=typeof Quartz&&!!Quartz}var ko=null,bo=!1;function _o(url){if(ho())return Promise.resolve(!0);var e=function(url){try{var e=new URL(url);return"https:"===e.protocol&&mo.test(e.hostname)?e.href:""}catch(e){return""}}(url);return""===e?(url&&!bo&&(bo=!0,I("AppticsFeedback: screen recording is off; its script url is not an https url on a Zoho host: "+url)),Promise.resolve(!1)):ko||(ko=new Promise(function(t){var n=document.createElement("script");n.src=e,n.async=!0,n.setAttribute("data-apptics","quartz"),n.onload=function(){O.log("AppticsFeedback: Quartz loaded from "+e),t(ho())},n.onerror=function(){O.warn("AppticsFeedback: the Quartz script did not load: "+e),ko=null,n.remove(),t(!1)},(document.head||document.documentElement).appendChild(n)}),ko)}const yo={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},zo={ErrorType:{},FeedbackState:{}};var Ao=!1,wo=!1;function So(){return"undefined"!=typeof Quartz&&!!Quartz}function Eo(){return"undefined"!=typeof Quartz&&Quartz?Quartz:yo}function xo(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:zo}function To(e){return Xa(e).then(function(e){return e?(e.ok?No.close():No.handleStatusmsg(e.ok,e.message),e):null})}function Po(value){return null!==value&&"object"==typeof value&&!Array.isArray(value)}var Co=!1;function sendFeedback(options){if(void 0!==options&&!Po(options))return Promise.reject(new Error("AppticsFeedback.sendFeedback: takes one options object, as sendFeedback({ type, message, attachments, logFiles, includeDiagnostics, includeLog, isAnonymous })"));const e=options||{},t={type:b(e.type)?1:e.type,message:e.message||"",attachment:e.attachments||null,logsFiles:e.logFiles||null,includeDyninfo:e.includeDiagnostics,includeLog:e.includeLog,quartzid:""};var n=function(e){var t={anonymous:ro.anonymous,userid:ro.userid,groupid:ro.groupid};if(ao(),!e){var n=b(E._user_info.userid)?null:E._user_info;oo().forEach(function(e){n||!e||1!=e.status||b(e.userid)||(n=e)}),n&&(ro.anonymous=!1,ro.userid=String(n.userid),ro.groupid=String(n.groupid||""))}return function(){ro.anonymous=t.anonymous,ro.userid=t.userid,ro.groupid=t.groupid}}(!0===e.isAnonymous);return To(t).then(function(e){return n(),e},function(e){throw n(),e}).then(function(e){if(!e)throw new Error("AppticsFeedback.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("AppticsFeedback.sendFeedback: not sent, "+e.message)})}function Oo(e,message,t){var n=e.querySelector(".zasdk-selected").getAttribute("data-type"),r=e.querySelector("#zasdkFileInput").files;return{type:b(n)?1:No.typeObj[n],message:message,attachment:r&&r.length>0?r:No._opts.attachments||null,logsFiles:No._opts.logFiles||null,includeLog:io.includeLog,includeDyninfo:io.includeDyninfo,quartzid:t}}function Io(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return O.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const Ro=["light","dark","auto"];const No={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content" role="dialog" aria-modal="true" aria-labelledby="zasdkFeedbackTitle">\n <div class="zasdk-header">\n <h2 id="zasdkFeedbackTitle" class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close" role="button" tabindex="0" aria-label="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="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="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="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 class="zasdk-body">\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">characters 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="zasdkrecstatus" class="zasdk-recstatus" style="display:none">\n <div class="zasdk-timer-control"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-recstatus-text">Recording in progress</span>\n <span id="zasdkRecStatusTime" class="zasdk-timer-display">05:00</span>\n <div id="zasdkRecStatusStop" class="zasdkqz-button zasdk-recstatus-stop" role="button" tabindex="0">Stop recording</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>\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(No._opts=e||{},!b(r=document.getElementById("zasdkFeedbackModal")))return void((No.isHidden||No.isScaled)&&No.showForm());const t=document.createElement("div");No.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.setAttribute("data-zasdk-theme",E._config.feedback_theme),t.innerHTML=No.feedbackUIHtml,document.body.appendChild(t);var n,name,r=document.getElementById("zasdkFeedbackModal"),i=E._quartz,a=i.workspace,o=i.department,s=(n=i.domain,name=(n||"").trim().replace(/^\.+|\.+$/g,""),/^https:\/\//i.test(name)?name.replace(/\/+$/,""):/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(name)?"https://quartz."+name:""),c=r.querySelector("#appticsfeedbackclose"),d=r.querySelectorAll(".zasdk-feedback-type");No.fileInput=r.querySelector("#zasdkFileInput");var u=r.querySelector("#zasdkqz_rec_button"),l=r.querySelector("#zasdk_submit_btn"),f=r.querySelector("#zasdk_submit_btnsubcnt");const p=r.querySelector("#zasdkqz-consent"),g=r.querySelector("#zasdkqz-content"),m=r.querySelector("#preivewPlayButton"),v=r.querySelector("#videoEditButton"),h=r.querySelector("#videoDelButton"),k=r.querySelector("#zasdkFeedbackconatiner"),_=r.querySelector("#zasdkDescription");var y,z;(z=(y=k).querySelector(".zasdk-header"))&&go(y,z,function(e){return!!e.closest(".zasdk-close")}),co(r,!0===No._opts.isAnonymous),lo(r,No._opts),No.isScaled=!1,No.isHidden=!1,document.removeEventListener("quartz-feedback-state",No.bindQuartzEvent),document.addEventListener("quartz-feedback-state",No.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",No.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",No.handleErrorQuartzEvent);var A=i.enabled&&!b(s)&&!b(a)&&!b(o),w=r.querySelector("#zasdkreccheckcnt");w.style.display=A&&So()?"block":"none",A&&!So()&&_o(vo(i.cdnUrl,String(E._defaultoptions.serviceUrl||""))).then(function(e){e&&w.isConnected&&(w.style.display="block")}),k.addEventListener("transitionend",function(e){"transform"===e.propertyName&&No.finishHiding()});const S=r.querySelector("#zasdkRecStatusStop");S.onclick=function(){No.stopRecording()},S.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),No.stopRecording())},u.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:a,departmentLinkName:o,recordingDomain:s};No.handleStatusmsg(),So()?b(a)||b(o)||b(s)?No.handleStatusmsg(!1,"Screen recording is not configured for this app."):Eo().startRecording(t):No.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},c.onclick=function(){No.dismiss()},c.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),No.dismiss())},document.addEventListener("keydown",No.onEscape),m.addEventListener("click",function(){Eo().previewVideo()}),v.addEventListener("click",function(){Eo().editVideo({quartzBranding:!1})}),h.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");Eo().clearFeedback(),p.checked=!1,g.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",No.validateFeedbackField()}),l.addEventListener("click",async()=>{No.validateFeedbackField(),l.disabled=!0,f.classList.add("zasdkbtndisabled"),l.value="";try{if(Ao)return wo=!0,void No.stopRecording();let e=r.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)No.submitRecording();else{let message=r.querySelector("#zasdkDescription").value.trim();message.length>0?To(Oo(r,message,"")):No.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){O.error("sendFeedbackData : "+e)}}),p.addEventListener("change",function(){this.checked?g.classList.add("zasdkqz-show"):g.classList.remove("zasdkqz-show")}),_.addEventListener("input",No.validateFeedbackField);try{_.focus({preventScroll:!0})}catch(e){}if(d.forEach(function(e){e.addEventListener("click",function(){d.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof No._opts.type){var x=Object.keys(No.typeObj).filter(function(name){return No.typeObj[name]===No._opts.type})[0],T=x?r.querySelector('.zasdk-feedback-type[data-type="'+x+'"]'):null;T&&(d.forEach(function(e){e.classList.remove("zasdk-selected")}),T.classList.add("zasdk-selected"))}b(No._opts.message)||(_.value=String(No._opts.message),No.updateLeftCount(),No.validateFeedbackField()),No.selectedFiles=Io(),No.fileInput.onchange=function(){const e=this;var t=No.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return No.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),No.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 No.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,No.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},No.handleStatusmsg(),No.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;if(r){r.textContent=String(n-t.length);var i=r.parentElement?r.parentElement.querySelector(".zaleftchartxt"):null;i&&(i.textContent=n-t.length===1?"character left":"characters left")}})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!b(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),a=n.querySelector("#zasdk_submit_btnsubcnt"),o="",s="";r.style.display="none",b(e)||(o=e?"zasdkstssucs":"zasdkstserror",s=b(t)?"":t,r.textContent=s,r.classList.add(o),r.style.display="block",a.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=xo().ErrorType.RECORDING_INTERRUPTED&&t!=xo().ErrorType.FEEDBACK_TIMEOUT||No.stopRecording(),No.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){let t=e.detail.feedbackState;if(t!=xo().FeedbackState.RECORDING_COMPLETED){if(t==xo().FeedbackState.RECORDING_IN_PROGRESS){Ao=!0,b(n=document.getElementById("zasdkrectimer"))||n.remove();const e=document.createElement("div");e.innerHTML=No.timerHtml;const t=e.firstElementChild;var n;t.setAttribute("data-zasdk-theme",E._config.feedback_theme),document.body.appendChild(t),!function(e){fo&&po(e,fo.left,fo.top),go(e,e,void 0,function(e,t){fo={left:e,top:t}})}(n=document.getElementById("zasdkrectimer")),No.timerDisplay=n.querySelector("#zasdkTimerDisplay"),No.recordButton=n,No.TOTAL_TIME=300,No.remainingTime=No.TOTAL_TIME,No.isRecording=!0,No.recordButton.addEventListener("click",No.toggleRecording),No.startRecording(),No.updateDisplay(),No.showRecordingStatus(!0),No.toggleWindowAnimation()}}else No.recordingEnded()},onEscape:function(e){"Escape"===e.key&&No.dismiss()},dismiss:function(){Ao?No.isScaled||No.isHidden||No.toggleWindowAnimation():No.close()},showRecordingStatus:function(on){var e=document.getElementById("zasdkFeedbackModal");e&&(e.querySelector("#zasdkrecstatus").style.display=on?"flex":"none",on&&(e.querySelector("#zasdkreccheckcnt").style.display="none"))},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("keydown",No.onEscape),document.removeEventListener("quartz-feedback-state",No.bindQuartzEvent),Eo().clearFeedback(),Ao=!1,wo=!1,No.isRecording=!1,clearInterval(No.timerInterval||void 0),No.timerInterval=null;var t=document.getElementById("zasdkrectimer");t&&t.remove(),b(e)||e.remove()},toggleWindowAnimation:function(){const e=document.getElementById("zasdkFeedbackModal").querySelector("#zasdkFeedbackconatiner");No.isHidden?No.showForm():No.isScaled?No.finishHiding():(e.style.transform="scale(0)",e.style.opacity="0",No.isScaled=!0,setTimeout(No.finishHiding,350))},finishHiding:function(){var e=document.getElementById("zasdkFeedbackModal");e&&No.isScaled&&!No.isHidden&&(e.style.display="none",No.isHidden=!0)},fileAttachment:function(){var e=No.fileInput.files;No.uploadTotalSize=0,No.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return No.fileLimitExceeded(!1,!0),void No.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,a=0;a<e.length;a++){var o=e[a].name,s=o.substring(0,o.lastIndexOf(".")),c=o.substring(o.lastIndexOf(".")+1);i+=e[a].size;var d=No.elementCreator("li");d.title=o;var u=No.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=No.elementCreator("span");l.innerText="."+c;var f=No.elementCreator("span");f.className="zasdkFdBckFlCls",f.setAttribute("data-name",o),f.innerHTML="&times;",d.appendChild(u),d.appendChild(l),d.appendChild(f),r.appendChild(d)}var p=i>No.MaxFileSize;No.fileLimitExceeded(p),n.textContent=`${No.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){No.handleStatusmsg(),No.removeFileFromList(this),No.fileAttachment()})})}No.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."),No.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=Io();if(No.selectedFiles=Io(),null!==r&&null!==No.selectedFiles){for(let e=0;e<No.fileInput.files.length;e++)e!==n&&(r.items.add(No.fileInput.files[e]),No.selectedFiles.items.add(No.fileInput.files[e]));No.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(){No.isRecording=!No.isRecording,No.isRecording?No.startRecording():No.stopRecording()},startRecording:function(){No.timerInterval||(No.timerInterval=setInterval(No.updateTimer,1e3))},stopRecording:function(){Ao&&(clearInterval(No.timerInterval||void 0),No.timerInterval=null,Promise.resolve(Eo().endRecording()).catch(function(e){O.log("stopRecording: "+e)}).then(No.recordingEnded))},recordingEnded:function(){if(!Ao)return;Ao=!1,No.isRecording=!1,clearInterval(No.timerInterval||void 0),No.timerInterval=null;var e=document.getElementById("zasdkrectimer");e&&e.remove();var t=document.getElementById("zasdkFeedbackModal");if(!t)return;var n=wo;wo=!1,No.showRecordingStatus(!1),No.showForm(),t.querySelector("#editRecordedVideo").style.display="block",t.querySelector("#zasdkreccheckcnt").style.display="none";let r=t.querySelector("#previewVideoElemId");Promise.resolve(Eo().setVideoContent(r)).catch(function(e){O.warn("AppticsFeedback: the recording could not be shown: "+e)}).then(function(){n&&document.getElementById("zasdkFeedbackModal")&&No.submitRecording()})},showForm:function(){var e=document.getElementById("zasdkFeedbackModal");if(!e)return;const t=e.querySelector("#zasdkFeedbackconatiner");No.isHidden=!1,No.isScaled=!1,e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",t.style.opacity="1",No.validateFeedbackField()},10)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=ro.anonymous?"":String(ro.userid||""),r=b(E._user_info.userid)?"":String(E._user_info.userid),i=b(n)?r:n,a=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)&&$e()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",Eo().submitRecording({email:i,subject:a}).then(e=>{var n=!_(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";To(Oo(t,a,n))}).catch(error=>{O.error("submitRecording : "+error),No.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){No.remainingTime>0?(No.remainingTime--,No.updateDisplay()):No.stopRecording()},updateDisplay:function(){const e=Math.floor(No.remainingTime/60),t=No.remainingTime%60,n=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`;No.timerDisplay&&(No.timerDisplay.textContent=n);var r=document.getElementById("zasdkRecStatusTime");r&&(r.textContent=n)},validateFeedbackField:function(){No.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"),a=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const o=e.querySelectorAll(".zasdkmaxerror");!(No.getVisibleErrorCount(o)>0)&&a?(i.classList.remove("zasdkbtndisableclr"),No.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},Mo=q("AppticsFeedback.feedbackFormOpen",function feedbackFormOpen(options){void 0===options||Po(options)||Co||(Co=!0,I("AppticsFeedback.feedbackFormOpen: takes one options object, as feedbackFormOpen({ type, message, includeLog, includeDiagnostics, attachments, logFiles, isAnonymous }); opening it with its defaults"));const e=Po(options)?options:{},t={includeLog:!0===e.includeLog,includeDyninfo:!0===e.includeDiagnostics,isAnonymous:!0===e.isAnonymous};"number"==typeof e.type&&(t.type=e.type),"string"==typeof e.message&&e.message.length>0&&(t.message=e.message),e.attachments&&e.attachments.length>0&&(t.attachments=e.attachments),e.logFiles&&e.logFiles.length>0&&(t.logFiles=e.logFiles),function(e){try{if(!e||"undefined"==typeof document)return;if(document.querySelector('[data-apptics="style"]'))return;var t=document.createElement("style");t.setAttribute("data-apptics","style"),t.textContent=e,(document.head||document.documentElement).appendChild(t)}catch(e){}}('.zasdk-modal{color:var(--zasdk-text-color);margin:0;padding:0;font-family:inherit;line-height:normal}.zasdk-modal p{margin:0}.zasdk-modal ul{margin:0;padding:0;list-style:none}.zasdk-modal,.zasdk-timer-container{--zasdk-background-color:#fff;--zasdk-text-color:#333;--zasdk-border-color:#ddd;--zasdk-modal-background:#0006;--zasdk-close-color:#aaa;--zasdk-close-hover-color:#000;--zasdk-input-background:#fff;--zasdk-button-background:#f0f0f0;--zasdk-primary-color:#007bff;--zasdk-primary-text-color:#000;--zasdk-button-text-color:#fff;--zasdk-secondary-background:#ddd;--zasdk-icon-border-color:#ccc;--zasdk-dropdown-hover:#f0f0f0;--zasdk-selected-background:#f0f0f0;--zasdk-selected-border:#ddd;--zasdk-muted-text:#999;--zasdk-link-color:#0078d4;--zasdk-switch-off:#ccc;--zasdk-viewer-background:#f8f8f8;--zasdk-placeholder-color:#757575;--zasdk-shadow:#0000002e}.zasdk-modal[data-zasdk-theme=dark],.zasdk-timer-container[data-zasdk-theme=dark],.zasdk-modal.zasdk-dark-theme,.zasdk-timer-container.zasdk-dark-theme{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}@media (prefers-color-scheme:dark){.zasdk-modal[data-zasdk-theme=auto],.zasdk-timer-container[data-zasdk-theme=auto]{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}}.zasdk-modal-content *{box-sizing:border-box;font-size:14px}.zasdk-modal{z-index:214748364;pointer-events:none;width:100%;height:100%;color:var(--zasdk-primary-text-color);background:0 0;position:fixed;top:0;left:0;overflow:visible}.zasdk-modal-content{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);width:500px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);box-shadow:0 8px 24px var(--zasdk-shadow);transform-origin:100% 100%;pointer-events:auto;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;padding:10px 0 20px;transition:transform .3s,opacity .3s;display:flex;position:fixed;inset:auto 20px 20px auto}.zasdk-header{touch-action:none;cursor:move;flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:20px;padding:0 20px;display:flex}.zasdk-title{margin:0;font-size:24px;font-weight:700}.zasdk-close{color:var(--zasdk-close-color);cursor:pointer;font-size:28px;font-weight:700}.zasdk-close svg path{fill:var(--zasdk-primary-text-color)}.zasdk-close:hover,.zasdk-close:focus{color:var(--zasdk-close-hover-color);cursor:pointer;text-decoration:none}.zasdk-feedback-types{text-align:center;flex-shrink:0;justify-content:space-evenly;margin-bottom:20px;font-size:14px;display:flex}.zasdk-feedback-type{cursor:pointer;display:inline-block}.zasdk-iconcnt{background-color:var(--zasdk-background-color);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:5px;font-weight:700;display:inline-block}.zasdk-body{flex:auto;min-height:0;overflow-y:auto}.zasdk-form{padding:0 20px;position:relative}.zasdk-form select,.zasdk-form input,.zasdk-form textarea{border:1px solid var(--zasdk-border-color);background-color:var(--zasdk-input-background);width:100%;color:var(--zasdk-text-color);border-radius:4px;margin-bottom:15px;padding:8px;font-family:inherit;font-size:14px}.zasdk-form textarea::placeholder,.zasdk-form input::placeholder{color:var(--zasdk-placeholder-color);opacity:1}.zasdk-form textarea{resize:none;height:100px}.zasdkdesclbl{margin-bottom:5px;font-weight:700;display:block}.zasdkmadfeld{color:#f33558;padding-left:3px}.zaleftcharspan{float:right}.zaleftchartxt{margin-left:3px;font-weight:400}.zasdk_submit_btncnt{flex-shrink:0;justify-content:end;align-items:center;margin-top:20px;padding:0 20px;display:flex}.zasdkstsmsg{text-align:end;margin-right:20px;font-size:14px;display:none}.zasdkstserror{color:#f33155}.zasdkstssucs{color:#009c08}.zasdk-buttons{margin-top:20px}.zasdk-btn{cursor:pointer;text-align:center;border:none;border-radius:4px;padding:7px 20px;font-size:14px}.zasdk-send-btn{background-color:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);min-width:81px;height:34px}.zasdk-attach-btn{background-color:var(--zasdk-button-background);vertical-align:middle;justify-content:center;align-items:center;height:40px;margin-bottom:0;margin-right:10px;padding:10px 15px 10px 5px;font-size:14px;font-weight:400;display:inline-flex}.zasdkfilesizeinf{vertical-align:middle;margin-top:10px;font-size:13px;display:inline-block}.zasdkattachinf{vertical-align:middle;margin-bottom:10px;font-size:13px;display:inline-block}input[type=file].zasdk-file-input{display:none}.zasdkfeedback__icon{border:1px solid var(--zasdk-icon-border-color);vertical-align:middle;text-align:center;box-sizing:border-box;border-radius:100%;width:32px;height:32px;transition:all .5s;display:inline-block}.zasdk-feedback-types svg{width:inherit;height:inherit;vertical-align:middle;display:inline-block}.zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#ff4122}.zasdkfeedback__icon-report svg{width:28px;height:100%}.zasdk-feedback-type{text-align:center;border:1px solid #0000;width:90px;padding:10px 0;transition:all .5s}.zasdk-selected{border:1px solid var(--zasdk-selected-border);background-color:var(--zasdk-selected-background);border-radius:6px}.zasdk-selected .zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#fff;background:#ff4122;border-color:#ff4122}.zasdk-feedback-type:hover .zasdkfeedback__icon-report .zasdkfeedback__icon{border-color:#ff4122}.zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#a63cff}.zasdkfeedback__icon-reqest svg{width:24px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-reqest .zasdkfeedback__icon{border-color:#a63cff}.zasdk-selected .zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#fff;background:#a63cff;border-color:#a63cff}.zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fba400}.zasdkfeedback__icon-help svg{width:28px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-help .zasdkfeedback__icon{border-color:#fba400}.zasdk-selected .zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fff;background:#fba400;border-color:#fba400}.zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#ff297a}.zasdkfeedback__icon-appreciate svg{width:25px;height:28px}.zasdk-feedback-type:hover .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{border-color:#ff297a}.zasdk-selected .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#fff;background:#ff297a;border-color:#ff297a}.zasdk-btncnt{margin-bottom:10px}.zasdk-dropdown{width:100%;margin-bottom:15px;position:relative}.zasdk-dropdown-header{border:1px solid var(--zasdk-border-color);cursor:pointer;background-color:var(--zasdk-input-background);color:var(--zasdk-text-color);border-radius:4px;padding:5px 10px}.zasdk-dropdown-options{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);z-index:1;border-radius:5px;display:none;position:absolute;top:35px;left:0;right:0}.zasdk-dropdown-option{cursor:pointer;padding:5px 10px}.zasdk-dropdown-option:hover{background-color:var(--zasdk-dropdown-hover)}.zasdkqz-container{width:100%;color:var(--zasdk-text-color);background:var(--zasdk-secondary-background);box-sizing:border-box;border-radius:8px;padding:15px;font-size:14px}.zasdkqz-checkbox-wrapper{align-items:flex-start;display:flex;position:relative}input[type=checkbox].zasdkqz-checkbox{opacity:0;width:auto;margin:0;position:absolute}.zasdkqz-checkbox+label{cursor:pointer;margin:0;padding-left:30px;font-weight:400;line-height:1.5;display:inline-block;position:relative}.zasdkqz-checkbox+label:before{content:"";border:1px solid var(--zasdk-primary-color);border-radius:4px;width:18px;height:18px;position:absolute;top:2px;left:0}.zasdkqz-checkbox:focus+label:before{border:2px solid var(--zasdk-primary-color)}.zasdkqz-content .zasdkqz-prop-content{margin-top:10px;padding-left:30px}.zasdkqz-checkbox:checked+label:before{background:var(--zasdk-primary-color)}.zasdkqz-checkbox:checked+label:after{content:"";border:0 solid #fff;border-width:0 0 1px 1px;width:10px;height:5px;transition:transform .3s;position:absolute;top:6px;left:10px;transform:rotate(-40deg)translate(-50%,-50%)scale(1)}.zasdkqz-content{max-height:0;transition:max-height .5s;overflow:hidden}.zasdkqz-content.zasdkqz-show{max-height:250px;display:block}.zasdkqz-button{background:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);cursor:pointer;border:none;border-radius:4px;margin-top:16px;padding:10px 20px;text-decoration:none;transition:background-color .3s;display:inline-block}.zasdkqz-button:hover{background:var(--zasdk-primary-color)}.zasdkqz-info{margin-top:5px;font-size:14px}.zasdkqz-icon{vertical-align:middle;width:20px;height:20px;margin-left:4px;display:inline-block}.zasdk-modal .zasakfilelstcnt{margin-top:10px;list-style:none}.zasdk-modal .zasakfilelstcnt li{border:1px solid var(--zasdk-border-color);vertical-align:middle;cursor:default;background:var(--zasdk-secondary-background);border-radius:3px;margin:0 5px 5px 0;padding:2px 20px 2px 5px;font-size:1.1rem;display:inline-flex;position:relative}.zaskFdBckFlName{box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;max-width:120px;display:inline-block;overflow:hidden}.zasdkFdBckFlCls{background:var(--zasdk-secondary-background);cursor:pointer;border-radius:0 3px 3px 0;padding:0 3px;font-size:14px;line-height:22px;position:absolute;top:0;bottom:0;right:2px}.zasdkmaxerror{color:#f33155;font-size:14px}.zasdk-timer-container{background-color:var(--zasdk-secondary-background);z-index:11111;cursor:move;touch-action:none;border-radius:50px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex;position:fixed;bottom:10px;right:10px;box-shadow:0 4px 15px #0000001a}.zasdk-timer-stopcricle{cursor:pointer;background-color:#f33155;border:none;border-radius:50%;width:12px;height:12px;padding:0;animation:1s infinite alternate blink}@keyframes blink{0%{opacity:1}to{opacity:.3}}.zasdk-timer-control{cursor:pointer;border:1px solid #f33155;border-radius:100%;padding:3px}.zasdk-timer-display{color:var(--zasdk-text-color);text-align:left;min-width:55px;font-size:14px;font-weight:500}.zasdk_videoPrev{justify-content:center;display:flex}.zasdk_videoPrev video{opacity:.4}.zasdk-recstatus{background:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:8px;align-items:center;gap:8px;margin-bottom:15px;padding:10px 15px;display:flex}.zasdk-recstatus-text{flex:1;font-weight:500}.zasdk-recstatus .zasdk-timer-display{min-width:0}.zasdk-recstatus-stop{background:#f33155;margin-top:0;padding:6px 14px}.zasdk-recstatus-stop:hover{background:#f33155}.zasdk_recordedClipArea{border:1px solid var(--zasdk-border-color);border-radius:6px;display:none;position:relative}.zasdk_recordedClipArea .zasdk_rec_hdr{background-color:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:3px 3px 0 0;padding:5px 10px}.zasdk_rec_hdr_icon{vertical-align:middle;display:inline-block;position:relative}.zasdk_rec_hdr i{vertical-align:middle;line-height:normal}.zasdk_rec_hdr svg{width:20px}.zasdk_playEdit{z-index:1;justify-content:space-between;align-items:stretch;width:180px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zasdk_clipAreaButtonCnt,.zasdk_submit_btnsubcnt{position:relative}.zasdk_clipAreaButton{background:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);box-sizing:border-box;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:50px;height:40px;display:flex;box-shadow:0 0 9px #0003}.zasdk_clipAreaButton:hover{background:var(--zasdk-dropdown-hover)}.zasdk_clipAreaButton svg{width:28px}.zasdk-send-btn.zasdkbtndisableclr{filter:grayscale();pointer-events:none;opacity:.5}.zasdk-send-btn.zasdkbtndisabled{cursor:not-allowed;position:relative}.zasdkbtndisabled:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;margin:auto;animation:1s ease-in-out infinite zasdkbuttonspin;position:absolute;inset:0}@keyframes zasdkbuttonspin{to{transform:rotate(360deg)}}.zasdk-tooltip,.zasdk-tooltip-top{visibility:hidden;color:#fff;opacity:0;z-index:111111;background-color:#000;border-radius:4px;width:max-content;max-width:200px;margin-top:8px;padding:8px 12px;font-size:14px;transition:opacity .2s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip:after,.zasdk-tooltip-top:after{content:"";border:5px solid #0000;border-bottom-color:#000;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip-container:hover .zasdk-tooltip,.zasdk-tooltip-container:hover .zasdk-tooltip-top{visibility:visible;opacity:1}.zasdk-tooltip-top{margin-top:0;margin-bottom:8px;top:auto;bottom:100%}.zasdk-tooltip-top:after{border-color:#000 #0000 #0000;top:100%}.zasdk-prop-info{max-width:320px}.zasdk-prop-info li{font-size:13px}.zasdkqz-content:has(.zasdk_rec_hdr:hover){overflow:visible}@media (width<=450px){.zasdk-modal-content{width:calc(100% - 10px);bottom:5px;left:5px;right:5px}}@media (height<=600px){.zasdk-modal-content{max-height:100%;top:auto}}@media (width<=370px){.zasdk-feedback-type{width:70px}.zasdk-iconcnt,.zasdkfeedback__icon{width:25px;height:25px}.zasdkfeedback__icon-report svg{width:20px;height:100%}.zasdkfeedback__icon-reqest svg{width:18px}.zasdkfeedback__icon-help svg{width:18px;height:22px}.zasdkfeedback__icon-appreciate svg{width:20px;height:20px}.zasdk-feedback-type *{word-break:break-word;font-size:12px}.zasdk-buttons{margin-top:0}}.zasdk-custom-select{width:100%;margin-bottom:15px;font-size:14px;position:relative}.zasdk-select-trigger{border:1px solid var(--zasdk-border-color);background:var(--zasdk-input-background);cursor:pointer;color:var(--zasdk-text-color);-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;padding:9px 12px;display:flex}.zasdk-select-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.zasdk-select-arrow{flex-shrink:0;margin-left:8px}.zasdk-select-panel{background:var(--zasdk-input-background);border:1px solid var(--zasdk-border-color);box-shadow:0 6px 20px var(--zasdk-shadow);z-index:99;border-radius:8px;position:absolute;top:calc(100% + 3px);left:0;right:0;overflow:hidden}.zasdk-select-list{max-height:180px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.zasdk-select-option{cursor:pointer;color:var(--zasdk-text-color);justify-content:space-between;align-items:center;padding:10px 16px;font-size:14px;display:flex}.zasdk-select-option:hover{background:var(--zasdk-dropdown-hover)}.zasdk-select-option.zasdk-option-selected{color:var(--zasdk-link-color);font-weight:500}.zasdk-select-empty{color:var(--zasdk-muted-text);text-align:center;padding:10px 16px;font-size:13px;font-style:italic}.zasdk-toggles-section{margin:5px 16px}.zasdk-toggle-row{border-top:1px solid var(--zasdk-border-color);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.zasdk-toggle-info{flex-direction:row;flex:1;align-items:center;gap:8px;display:flex}.zasdk-toggle-label{color:var(--zasdk-text-color);font-size:14px;font-weight:600}.zasdk-view-link{color:var(--zasdk-link-color);cursor:pointer;white-space:nowrap;font-size:12px}.zasdk-view-link:hover{text-decoration:underline}.zasdk-toggle-separator{background:var(--zasdk-border-color);margin:0 16px}.zasdk-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.zasdk-switch input{opacity:0;width:0;height:0}.zasdk-slider{cursor:pointer;background:var(--zasdk-switch-off);border-radius:24px;transition:all .3s;position:absolute;inset:0}.zasdk-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px}.zasdk-switch input:checked+.zasdk-slider{background:var(--zasdk-link-color)}.zasdk-switch input:checked+.zasdk-slider:before{transform:translate(20px)}.zasdk-data-viewer{background:var(--zasdk-background-color);z-index:100;border-radius:12px;flex-direction:column;position:absolute;inset:0;overflow:hidden}.zasdk-viewer-hdr{border-bottom:1px solid var(--zasdk-border-color);flex-shrink:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.zasdk-viewer-back{cursor:pointer;flex-shrink:0;align-items:center;padding:2px;display:flex}.zasdk-viewer-back:hover svg path{stroke:var(--zasdk-link-color)}.zasdk-viewer-title{color:var(--zasdk-text-color);flex:1;font-size:16px;font-weight:600}.zasdk-viewer-content{color:var(--zasdk-text-color);white-space:pre-wrap;word-break:break-word;background:var(--zasdk-viewer-background);border-radius:6px;flex:1;margin:8px;padding:16px;font-family:monospace;font-size:12px;overflow-y:auto}.zasdk-modal-content :focus-visible{outline:2px solid var(--zasdk-primary-color);outline-offset:2px}@media (prefers-reduced-motion:reduce){.zasdk-modal *,.zasdk-timer-container *{transition:none!important;animation:none!important}}'),No.init(t)}),Lo=q("AppticsFeedback.feedbackFormClose",function feedbackFormClose(){No.close()}),Do=q("AppticsFeedback.addFeedbackLog",function addFeedbackLog(message){"string"==typeof message&&0!==message.length&&ja({type:La,happenedat:h(),message:Ba(message)})}),qo=q("AppticsFeedback.addDiagnosticsInfo",function addDiagnosticsInfo(heading,key,value){"string"==typeof heading&&0!==heading.length?"string"==typeof key&&0!==key.length?null!=value&&""!==value?ja({type:Da,happenedat:h(),heading:heading,key:key,value:Ba(String(value))}):Ha('a value is required for "'+heading+'" / "'+key+'"'):Ha("a key is required"):Ha("a heading is required")}),Fo=q("AppticsFeedback.setFeedbackTheme",function setFeedbackTheme(theme){-1!==Ro.indexOf(theme)?(E._config.feedback_theme=theme,"undefined"!=typeof document&&["zasdkFeedbackModal","zasdkrectimer"].forEach(function(id){var e=document.getElementById(id);e&&e.setAttribute("data-zasdk-theme",theme)})):O.warn("AppticsFeedback.setFeedbackTheme: takes 'light', 'dark' or 'auto', not "+JSON.stringify(theme))}),jo=q("AppticsFeedback.sendFeedback",function(...e){return ready().then(function(t){if(!t)throw new Error("AppticsFeedback.sendFeedback: not sent, the SDK has not started; call Apptics.init() first");return sendFeedback(...e)}).catch(function(e){throw O.error("AppticsFeedback.sendFeedback failed:",e),e})}),Bo={AP_FEEDBACK_TYPE:t,feedbackFormOpen:function feedbackFormOpen(options){return F(Mo,arguments)},feedbackFormClose:function feedbackFormClose(){return F(Lo,arguments)},sendFeedback:function sendFeedback(options){return F(jo,arguments)},addFeedbackLog:function addFeedbackLog(message){return F(Do,arguments)},addDiagnosticsInfo:function addDiagnosticsInfo(heading,key,value){return F(qo,arguments)},setFeedbackTheme:function setFeedbackTheme(theme){return F(Fo,arguments)}};var Uo=null;function Ho(e){var t=function(){if(null!==Uo)return Uo;var e={};return"AD:Europe/Andorra;AE:Asia/Dubai;AF:Asia/Kabul;AG:America/Antigua;AI:America/Anguilla;AL:Europe/Tirane;AM:Asia/Yerevan;AO:Africa/Luanda;AQ:Antarctica/Casey,Davis,DumontDUrville,Mawson,McMurdo,Palmer,Rothera,Syowa,Troll,Vostok;AR:America/Argentina/Buenos_Aires,Argentina/Catamarca,Argentina/ComodRivadavia,Argentina/Cordoba,Argentina/Jujuy,Argentina/La_Rioja,Argentina/Mendoza,Argentina/Rio_Gallegos,Argentina/Salta,Argentina/San_Juan,Argentina/San_Luis,Argentina/Tucuman,Argentina/Ushuaia,Buenos_Aires,Catamarca,Cordoba,Jujuy,Mendoza,Rosario;AS:Pacific/Pago_Pago,Samoa|US/Samoa;AT:Europe/Vienna;AU:Antarctica/Macquarie|Australia/ACT,Adelaide,Brisbane,Broken_Hill,Canberra,Currie,Darwin,Eucla,Hobart,LHI,Lindeman,Lord_Howe,Melbourne,NSW,North,Perth,Queensland,South,Sydney,Tasmania,Victoria,West,Yancowinna;AW:America/Aruba;AX:Europe/Mariehamn;AZ:Asia/Baku;BA:Europe/Sarajevo;BB:America/Barbados;BD:Asia/Dacca,Dhaka;BE:CET,MET|Europe/Brussels;BF:Africa/Ouagadougou;BG:Europe/Sofia;BH:Asia/Bahrain;BI:Africa/Bujumbura;BJ:Africa/Porto-Novo;BL:America/St_Barthelemy;BM:Atlantic/Bermuda;BN:Asia/Brunei;BO:America/La_Paz;BQ:America/Kralendijk;BR:America/Araguaina,Bahia,Belem,Boa_Vista,Campo_Grande,Cuiaba,Eirunepe,Fortaleza,Maceio,Manaus,Noronha,Porto_Acre,Porto_Velho,Recife,Rio_Branco,Santarem,Sao_Paulo|Brazil/Acre,DeNoronha,East,West;BS:America/Nassau;BT:Asia/Thimbu,Thimphu;BW:Africa/Gaborone;BY:Europe/Minsk;BZ:America/Belize;CA:America/Atikokan,Blanc-Sablon,Cambridge_Bay,Creston,Dawson,Dawson_Creek,Edmonton,Fort_Nelson,Glace_Bay,Goose_Bay,Halifax,Inuvik,Iqaluit,Moncton,Montreal,Nipigon,Pangnirtung,Rainy_River,Rankin_Inlet,Regina,Resolute,St_Johns,Swift_Current,Thunder_Bay,Toronto,Vancouver,Whitehorse,Winnipeg,Yellowknife|Canada/Atlantic,Central,Eastern,Mountain,Newfoundland,Pacific,Saskatchewan,Yukon;CC:Indian/Cocos;CD:Africa/Kinshasa,Lubumbashi;CF:Africa/Bangui;CG:Africa/Brazzaville;CH:Europe/Zurich;CI:Africa/Abidjan,Timbuktu|Iceland;CK:Pacific/Rarotonga;CL:America/Coyhaique,Punta_Arenas,Santiago|Chile/Continental,EasterIsland|Pacific/Easter;CM:Africa/Douala;CN:Asia/Chongqing,Chungking,Harbin,Kashgar,Shanghai,Urumqi|PRC;CO:America/Bogota;CR:America/Costa_Rica;CU:America/Havana|Cuba;CV:Atlantic/Cape_Verde;CW:America/Curacao;CX:Indian/Christmas;CY:Asia/Famagusta,Nicosia|Europe/Nicosia;CZ:Europe/Prague;DE:Atlantic/Jan_Mayen|Europe/Berlin,Busingen;DJ:Africa/Djibouti;DK:Europe/Copenhagen;DM:America/Dominica;DO:America/Santo_Domingo;DZ:Africa/Algiers;EC:America/Guayaquil|Pacific/Galapagos;EE:Europe/Tallinn;EG:Africa/Cairo|Egypt;EH:Africa/El_Aaiun;ER:Africa/Asmara;ES:Africa/Ceuta|Atlantic/Canary|Europe/Madrid;ET:Africa/Addis_Ababa;FI:Europe/Helsinki;FJ:Pacific/Fiji;FK:Atlantic/Stanley;FM:Pacific/Chuuk,Kosrae,Pohnpei;FO:Atlantic/Faeroe,Faroe;FR:Europe/Paris;GA:Africa/Libreville;GB:Europe/Belfast,London|GB,GB-Eire;GD:America/Grenada;GE:Asia/Tbilisi;GF:America/Cayenne;GG:Europe/Guernsey;GH:Africa/Accra;GI:Europe/Gibraltar;GL:America/Danmarkshavn,Godthab,Nuuk,Scoresbysund,Thule;GM:Africa/Banjul;GN:Africa/Conakry;GP:America/Guadeloupe;GQ:Africa/Malabo;GR:EET|Europe/Athens;GS:Atlantic/South_Georgia;GT:America/Guatemala;GU:Pacific/Guam;GW:Africa/Bissau;GY:America/Guyana;HK:Asia/Hong_Kong|Hongkong;HN:America/Tegucigalpa;HR:Europe/Zagreb;HT:America/Port-au-Prince;HU:Europe/Budapest;ID:Asia/Jakarta,Jayapura,Makassar,Pontianak,Ujung_Pandang;IE:Eire|Europe/Dublin;IL:Asia/Jerusalem,Tel_Aviv|Israel;IM:Europe/Isle_of_Man;IN:Asia/Calcutta,Kolkata;IO:Indian/Chagos;IQ:Asia/Baghdad;IR:Asia/Tehran|Iran;IS:Atlantic/Reykjavik;IT:Europe/Rome;JE:Europe/Jersey;JM:America/Jamaica|Jamaica;JO:Asia/Amman;JP:Asia/Tokyo|Japan;KE:Africa/Asmera,Nairobi;KG:Asia/Bishkek;KH:Asia/Phnom_Penh;KI:Pacific/Enderbury,Kanton,Kiritimati,Tarawa;KM:Indian/Comoro;KN:America/St_Kitts;KP:Asia/Pyongyang;KR:Asia/Seoul|ROK;KW:Asia/Kuwait;KY:America/Cayman;KZ:Asia/Almaty,Aqtau,Aqtobe,Atyrau,Oral,Qostanay,Qyzylorda;LA:Asia/Vientiane;LB:Asia/Beirut;LC:America/St_Lucia;LI:Europe/Vaduz;LK:Asia/Colombo;LR:Africa/Monrovia;LS:Africa/Maseru;LT:Europe/Vilnius;LU:Europe/Luxembourg;LV:Europe/Riga;LY:Africa/Tripoli|Libya;MA:Africa/Casablanca;MC:Europe/Monaco;MD:Europe/Chisinau,Tiraspol;ME:Europe/Podgorica;MF:America/Marigot;MG:Indian/Antananarivo;MH:Kwajalein|Pacific/Kwajalein,Majuro;MK:Europe/Skopje;ML:Africa/Bamako;MM:Asia/Rangoon,Yangon;MN:Asia/Choibalsan,Hovd,Ulaanbaatar,Ulan_Bator;MO:Asia/Macao,Macau;MP:Pacific/Saipan;MQ:America/Martinique;MR:Africa/Nouakchott;MS:America/Montserrat;MT:Europe/Malta;MU:Indian/Mauritius;MV:Indian/Maldives;MW:Africa/Blantyre;MX:America/Bahia_Banderas,Cancun,Chihuahua,Ciudad_Juarez,Ensenada,Hermosillo,Matamoros,Mazatlan,Merida,Mexico_City,Monterrey,Ojinaga,Santa_Isabel,Tijuana|Mexico/BajaNorte,BajaSur,General;MY:Asia/Kuala_Lumpur,Kuching;MZ:Africa/Maputo;NA:Africa/Windhoek;NC:Pacific/Noumea;NE:Africa/Niamey;NF:Pacific/Norfolk;NG:Africa/Lagos;NI:America/Managua;NL:Europe/Amsterdam;NO:Europe/Oslo;NP:Asia/Kathmandu,Katmandu;NR:Pacific/Nauru;NU:Pacific/Niue;NZ:Antarctica/South_Pole|NZ,NZ-CHAT|Pacific/Auckland,Chatham;OM:Asia/Muscat;PA:America/Coral_Harbour,Panama|EST;PE:America/Lima;PF:Pacific/Gambier,Marquesas,Tahiti;PG:Pacific/Bougainville,Port_Moresby,Truk,Yap;PH:Asia/Manila;PK:Asia/Karachi;PL:Europe/Warsaw|Poland;PM:America/Miquelon;PN:Pacific/Pitcairn;PR:America/Puerto_Rico,Virgin;PS:Asia/Gaza,Hebron;PT:Atlantic/Azores,Madeira|Europe/Lisbon|Portugal,WET;PW:Pacific/Palau;PY:America/Asuncion;QA:Asia/Qatar;RE:Indian/Reunion;RO:Europe/Bucharest;RS:Europe/Belgrade;RU:Asia/Anadyr,Barnaul,Chita,Irkutsk,Kamchatka,Khandyga,Krasnoyarsk,Magadan,Novokuznetsk,Novosibirsk,Omsk,Sakhalin,Srednekolymsk,Tomsk,Ust-Nera,Vladivostok,Yakutsk,Yekaterinburg|Europe/Astrakhan,Kaliningrad,Kirov,Moscow,Samara,Saratov,Ulyanovsk,Volgograd|W-SU;RW:Africa/Kigali;SA:Asia/Riyadh;SB:Pacific/Guadalcanal,Ponape;SC:Indian/Mahe;SD:Africa/Khartoum;SE:Europe/Stockholm;SG:Asia/Singapore|Singapore;SH:Atlantic/St_Helena;SI:Europe/Ljubljana;SJ:Arctic/Longyearbyen;SK:Europe/Bratislava;SL:Africa/Freetown;SM:Europe/San_Marino;SN:Africa/Dakar;SO:Africa/Mogadishu;SR:America/Paramaribo;SS:Africa/Juba;ST:Africa/Sao_Tome;SV:America/El_Salvador;SX:America/Lower_Princes;SY:Asia/Damascus;SZ:Africa/Mbabane;TC:America/Grand_Turk;TD:Africa/Ndjamena;TF:Indian/Kerguelen;TG:Africa/Lome;TH:Asia/Bangkok;TJ:Asia/Dushanbe;TK:Pacific/Fakaofo;TL:Asia/Dili;TM:Asia/Ashgabat,Ashkhabad;TN:Africa/Tunis;TO:Pacific/Tongatapu;TR:Asia/Istanbul|Europe/Istanbul|Turkey;TT:America/Port_of_Spain;TV:Pacific/Funafuti;TW:Asia/Taipei|ROC;TZ:Africa/Dar_es_Salaam;UA:Europe/Kiev,Kyiv,Simferopol,Uzhgorod,Zaporozhye;UG:Africa/Kampala;UM:Pacific/Midway,Wake;US:America/Adak,Anchorage,Atka,Boise,Chicago,Denver,Detroit,Fort_Wayne,Indiana/Indianapolis,Indiana/Knox,Indiana/Marengo,Indiana/Petersburg,Indiana/Tell_City,Indiana/Vevay,Indiana/Vincennes,Indiana/Winamac,Indianapolis,Juneau,Kentucky/Louisville,Kentucky/Monticello,Knox_IN,Los_Angeles,Louisville,Menominee,Metlakatla,New_York,Nome,North_Dakota/Beulah,North_Dakota/Center,North_Dakota/New_Salem,Phoenix,Shiprock,Sitka,Yakutat|HST,MST,Navajo|Pacific/Honolulu,Johnston|US/Alaska,Aleutian,Arizona,Central,East-Indiana,Eastern,Hawaii,Indiana-Starke,Michigan,Mountain,Pacific;UY:America/Montevideo;UZ:Asia/Samarkand,Tashkent;VA:Europe/Vatican;VC:America/St_Vincent;VE:America/Caracas;VG:America/Tortola;VI:America/St_Thomas;VN:Asia/Ho_Chi_Minh,Saigon;VU:Pacific/Efate;WF:Pacific/Wallis;WS:Pacific/Apia;YE:Asia/Aden;YT:Indian/Mayotte;ZA:Africa/Johannesburg;ZM:Africa/Lusaka;ZW:Africa/Harare".split(";").forEach(function(t){var n=t.indexOf(":"),r=t.slice(0,n);t.slice(n+1).split("|").forEach(function(t){var n=t.indexOf("/"),i=-1===n?"":t.slice(0,n+1);t.slice(i.length).split(",").forEach(function(t){e[i+t]=r})})}),Uo=e,e}();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:""}const Go=Object.freeze({1:"in"}),Vo=Object.freeze({appversion:function(){return String(E._defaultoptions.appversion||"")},platform:function(){return String(E._platform||"")},browser:function(){return String(E._device_info.browser||"")},browserversion:function(){return String(E._device_info.browserversion||"")},osversion:function(){return String(E._device_info.osversion||"")},devicetype:function(){return String(E._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},country:function(){var e=String(E._user_info.country||"").trim();if(""!==e)return e;var t="";try{t=String(Ze()||"")}catch(e){t=""}var n=Ho(t);return""===n?"":function(e){try{return new Intl.DisplayNames(["en"],{type:"region"}).of(e)||e}catch(t){return e}}(n)},customergroupid:function(){return String(E._user_info.groupid||"")},userid:function(){return String(E._user_info.userid||"")}});var Ko={};function Wo(key,message){Ko[key]||(Ko[key]=!0,O.warn(message))}function Zo(){Ko={}}function Jo(e,conditionname){var key=String(e.key||"");if(void 0===Go[String(e.status)])return Wo("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var t=function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):b(t)?[]:[String(t)]}(e);if("custom_sdk_value"===key){var n=cs(conditionname);return 0===n.length?(Wo("custom:"+conditionname,'AppticsRemoteConfig: no value for the custom condition "'+conditionname+'"; set one with setCustomConditionValue, or it will not match'),!1):n.some(function(e){return-1!==t.indexOf(e)})}var r=Vo[key];if(void 0===r)return Wo("key:"+key,'AppticsRemoteConfig: unknown criteria "'+key+'", so conditions using it will not match'),!1;var i=r();return""!==i&&-1!==t.indexOf(i)}function Yo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!Jo(t[n],String(e.conditionname||"")))return!1;return!0}function Qo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[];return n.forEach(function(e){var name=String(e.paramname||"");""!==name&&(t[name]=function(e,t){var n={};(Array.isArray(e.conditions)?e.conditions:[]).forEach(function(e){n[String(e.conditionid)]=e});for(var r={},i=0;i<t.length;i++){var a=t[i],id=String(a.conditionid);r[id]=!0;var o=n[id];if(void 0!==o&&Yo(a))return String(void 0===o.value||null===o.value?"":o.value)}return Object.keys(n).forEach(function(id){r[id]||Wo("missing:"+id,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+id+", which the server did not send")}),String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}(e,r))}),t}const $o="remoteconfig";var Xo={},es=!1;function ts(){var e=Ce.item($o);return e&&"object"==typeof e?e:null}function ns(){var e=ts();Xo=e&&e.rules?Qo(e.rules):{},es=!0}function rs(e,t){Zo();var n={flagtime:t,rules:e,fetchedat:h()};Ce.add($o,n),Xo=Qo(e),es=!0,O.log("AppticsRemoteConfig: "+Object.keys(Xo).length+" parameters, as of "+t)}function is(e,t,key){var n=Array.isArray(e)?e.slice():[];return Array.isArray(t)?(t.forEach(function(e){if(e&&"object"==typeof e){var id=key(e),t=""===id?-1:n.findIndex(function(e){return key(e)===id});t>=0?n[t]=e:n.push(e)}}),n):n}function as(e,t){return function(n){var id=void 0!==n[e]&&null!==n[e]?n[e]:n[t];return null==id?"":String(id)}}function os(){return es||ns(),Xo}var ss={};function cs(conditionname){var name=String(conditionname||"").trim();return Object.prototype.hasOwnProperty.call(ss,name)?ss[name]:[]}const ds="AppticsRemoteConfig",us=[Number(o.REMOTE_CONFIG)];var ls=null,fs=!1,ps=0;const gs=18e4;var ms=0,vs=[],hs=null;function ks(e){if(null!==ls)return!0!==e||fs?ls:ls.catch(function(){return{}}).then(function(){return ks(!0)});if(!1===E._remoteConfigEnabled||!1===E._remoteConfigReported)return O.log(ds+": switched off by the server, not asking"),Promise.resolve({});var t=zt(ds)||wt(ds);if(t)return t;var n,r=ps,i=!0===e||0===ms,a=i?0:(n=ts())&&"number"==typeof n.flagtime?n.flagtime:0,s=h(),c=kt("getupdates",function(e){var t={appversionid:String(E._device_info.appversionid||""),moduleids:us,flagtime:e},n=String(navigator.language||"").slice(0,10);return""!==n&&(t.languagecode=n),JSON.stringify(t)}(a),gt(),ds).then(function(e){var t=e.data||{};if(r!==ps)return t;!function(e){var status=e.tracking_status;if(status&&"object"==typeof status){var t=status[o.REMOTE_CONFIG];if(t&&"object"==typeof t){var n=!1!==t.enabled,r=n!==E._remoteConfigReported;E._remoteConfigReported=n,r&&(O.log(ds+": getupdates reported the module "+(n?"on":"off")+", asking getsdkconfig"),Me.askServerSettings())}}}(t);var n=t.remoteconfig;return ms=h(),i?rs(n&&"object"==typeof n?n:{},s):n&&"object"==typeof n?function(e,t){var n=ts(),r=n&&n.rules&&"object"==typeof n.rules?n.rules:{},i=Object.assign({},r,e);i.all_parameter=is(r.all_parameter,e.all_parameter,as("paramid","paramname")),i.all_condition=is(r.all_condition,e.all_condition,as("conditionid","conditionname")),i.version=is(r.version,e.version,as("versionid","date")),rs(i,t)}(n,s):(!function(e){var t=ts();null!==t&&(t.flagtime=e,t.fetchedat=h(),Ce.add($o,t))}(s),O.log(ds+": no changes since "+a)),t}).then(function(e){return d(),e},function(e){return d(),Promise.reject(e)});function d(){ls===c&&(ls=null,fs=!1),r===ps&&ys()}return fs=i,ls=c}function bs(coldFetch){return ready().then(function(e){if(!e)return!1;var t=!0===coldFetch;if(t){var n=h();(vs=vs.filter(function(e){return n-e<6e4})).length>=3?(O.warn(ds+": coldFetch is limited to 3 a minute; this one is answered from the values this page has"),t=!1):vs.push(n)}return ms>0&&!t||Jt().then(function(){return ks(t)}).then(function(){return!0},function(e){return O.log(ds+": fetch failed: "+String(e)),!1})})}function _s(){E._ready&&null===hs&&null===ls&&ys()}function ys(){null!==hs&&clearTimeout(hs),hs=setTimeout(function(){var e;hs=null,e="every "+gs+" ms",E._ready&&(O.log(ds+": asking for changes ("+e+")"),Jt().then(function(){return ks()}).catch(function(e){O.log(ds+": fetch failed: "+String(e))}).then(_s))},gs)}function zs(){bs().then(_s)}function As(name){var e=os();return Object.prototype.hasOwnProperty.call(e,name)?e[name]:void 0}function ws(value,callback){if("function"==typeof callback)try{callback(value)}catch(e){O.warn("AppticsRemoteConfig: the callback threw",e)}return value}Me.resetRemoteConfig=function(){ps++,ls=null,fs=!1,ms=0,vs=[],null!==hs&&(clearTimeout(hs),hs=null),E._remoteConfigReported=!0,ss={},Ce.add($o,void 0),Xo={},es=!1,Zo()},Me.remoteConfigStarted=zs,Me.remoteConfigUserChanged=ns,E._ready&&zs();const Ss=q("AppticsRemoteConfig.fetchValue",function fetchValue(name,callback,coldFetch){"boolean"==typeof callback&&(coldFetch=callback,callback=void 0);var e="function"==typeof callback?callback:void 0;return bs(!0===coldFetch).then(function(){var value=As(name);return ws(void 0===value?null:value,e)})}),Es=q("AppticsRemoteConfig.fetchValues",function fetchValues(names,callback,coldFetch){var e=[names,callback,coldFetch],t=e.filter(function(e){return"boolean"==typeof e})[0],n=e.filter(function(e){return"function"==typeof e})[0],r=function(names){if(null==names)return null;if(!Array.isArray(names))return O.warn("AppticsRemoteConfig.fetchValues: takes a list of parameter names, as fetchValues(['a', 'b']); answering with every parameter"),null;var e=[];return names.forEach(function(name){var t="string"==typeof name?name.trim():"";""!==t&&-1===e.indexOf(t)&&e.push(t)}),0===e.length?null:e}("boolean"==typeof names||"function"==typeof names?void 0:names),i=n;return bs(!0===t).then(function(){var e=os(),t={};return(null===r?Object.keys(e):r).forEach(function(name){var value=As(name);t[name]=void 0===value?null:value}),ws(t,i)})}),xs=q("AppticsRemoteConfig.setCustomConditionValue",function setCustomConditionValue(conditionname,value){var name="string"==typeof conditionname?conditionname.trim():"";if(""!==name){var e=(null==value?"":String(value)).split(",").map(function(e){return e.trim()}).filter(function(e,t,n){return""!==e&&n.indexOf(e)===t});0===e.length?delete ss[name]:ss[name]=e,be().then(function(e){e&&ns()})}else O.warn("AppticsRemoteConfig.setCustomConditionValue: a condition name is required")}),Ts={fetchValue:function fetchValue(name,callback,coldFetch){return F(Ss,arguments)},fetchValues:function fetchValues(names,callback,coldFetch){return F(Es,arguments)},setCustomConditionValue:function setCustomConditionValue(conditionname,value){F(xs,arguments)}},Ps={filename:"",linenumber:0,fn:""},Cs={filename:"-",linenumber:0,fn:"-"},Os=/debugger eval code/,Is=/^(global|eval) code(@|$)/,Rs=/([^\s(@]+):(\d+):(\d+)\)?$/;const Ns=/^at\s+(?:async\s+)?(.+?)\s+\(/,Ms=/^([^@\s]+)@/;function Ls(e){var t=Ns.exec(e)||Ms.exec(e);return t&&t[1]||""}function Ds(e){var t=e.trim(),n=Rs.exec(t);if(null===n)return null;var url,r,i,a=Number(n[2]);return isFinite(a)?{filename:(url=n[1]||"",r=url.split(/[?#]/)[0]||url,i=r.split("/"),(i[i.length-1]||r).slice(0,100)),linenumber:a,fn:Ls(t)}:null}function qs(e){try{return function(e,t){if(!e)return Ps;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var a=(n[i]||"").trim(),o=Ds(a);if(null!==o){if(!(r++<t))return"<anonymous>"===o.filename||Os.test(a)?Cs:o}else if(r===t&&Is.test(a))return Cs}return Ps}((new Error).stack,e+1)}catch(e){return Ps}}const Fs=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function js(e){var name=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===name||/^(Object|Module|eval)\.?$/.test(name)?"App":name.slice(0,100)}function Bs(value){if(value instanceof Error){var e=value.name+": "+value.message;return value.stack&&-1!==value.stack.indexOf(value.message)?value.stack:e}if("string"==typeof value)return value;try{var t=JSON.stringify(value);return void 0===t?String(value):t}catch(e){return String(value)}}const Us=q("AppticsLogger",function(e,message,t,n,r){if(ci()){var i=[message].concat(t).map(Bs).join(" ");Ee.add({type:"remotelog",module:js(r),level:e,happenedat:n,exceptionlog:i,attempt:1,filename:r.filename,linenumber:r.linenumber}),ui||(ui=!0,setTimeout(function(){ui=!1,gi()},1e3))}});function Hs(e){return function(message,properties){try{var t=Array.prototype.slice.call(arguments,1);Us(e,message,t,h(),qs(1))}catch(e){}}}const Gs={verbose:Hs(Fs.VERBOSE),debug:Hs(Fs.DEBUG),info:Hs(Fs.INFO),warn:Hs(Fs.WARN),error:Hs(Fs.ERROR)},Vs=Object.assign({},Na,{AppticsFeedback:Bo,AppticsLogger:Gs,AppticsRemoteConfig:Ts});window.apptics=Vs,window.Apptics=Vs.Apptics,window.AppticsEvent=Vs.AppticsEvent,window.AppticsScreen=Vs.AppticsScreen,window.AppticsApi=Vs.AppticsApi,window.AppticsError=Vs.AppticsError,window.AppticsUser=Vs.AppticsUser,window.AppticsSettings=Vs.AppticsSettings,window.AppticsFeedback=Bo,window.AppticsLogger=Gs,window.AppticsRemoteConfig=Ts,window.AppticsHeatmap=Vs.AppticsHeatmap}();
3
3
  //# sourceMappingURL=apptics.min.js.map