clarity-js 0.7.61 → 0.7.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +27 -13
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +27 -13
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/core/config.ts +1 -0
- package/src/core/version.ts +1 -1
- package/src/data/envelope.ts +3 -3
- package/src/layout/dom.ts +7 -1
- package/src/layout/mutation.ts +18 -6
- package/types/core.d.ts +1 -0
- package/types/data.d.ts +25 -22
- package/types/layout.d.ts +1 -0
package/build/clarity.module.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { WebApp } from '@clarity-types/data';
|
|
2
|
-
|
|
3
1
|
var upload$1 = /*#__PURE__*/Object.freeze({
|
|
4
2
|
__proto__: null,
|
|
5
3
|
get queue () { return queue; },
|
|
@@ -139,6 +137,7 @@ var config$2 = {
|
|
|
139
137
|
conversions: false,
|
|
140
138
|
longTask: 30,
|
|
141
139
|
includeSubdomains: true,
|
|
140
|
+
throttleMutations: false,
|
|
142
141
|
};
|
|
143
142
|
|
|
144
143
|
function api(method) {
|
|
@@ -166,7 +165,7 @@ function stop$F() {
|
|
|
166
165
|
startTime = 0;
|
|
167
166
|
}
|
|
168
167
|
|
|
169
|
-
var version$1 = "0.7.
|
|
168
|
+
var version$1 = "0.7.63";
|
|
170
169
|
|
|
171
170
|
// tslint:disable: no-bitwise
|
|
172
171
|
function hash (input, precision) {
|
|
@@ -1136,8 +1135,12 @@ function getId(node, autogen) {
|
|
|
1136
1135
|
return id ? id : null;
|
|
1137
1136
|
}
|
|
1138
1137
|
function add(node, parent, data, source) {
|
|
1139
|
-
var id = getId(node, true);
|
|
1140
1138
|
var parentId = parent ? getId(parent) : null;
|
|
1139
|
+
// Do not add detached nodes
|
|
1140
|
+
if ((!parent || !parentId) && node.host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {
|
|
1141
|
+
return;
|
|
1142
|
+
}
|
|
1143
|
+
var id = getId(node, true);
|
|
1141
1144
|
var previousId = getPreviousId(node);
|
|
1142
1145
|
var parentValue = null;
|
|
1143
1146
|
var regionId = exists(node) ? id : null;
|
|
@@ -2440,12 +2443,14 @@ var timeout$1 = null;
|
|
|
2440
2443
|
var throttleDelay = null;
|
|
2441
2444
|
var activePeriod = null;
|
|
2442
2445
|
var history$4 = {};
|
|
2446
|
+
var criticalPeriod = null;
|
|
2443
2447
|
function start$k() {
|
|
2444
2448
|
observers = [];
|
|
2445
2449
|
queue$2 = [];
|
|
2446
2450
|
timeout$1 = null;
|
|
2447
2451
|
activePeriod = 0;
|
|
2448
2452
|
history$4 = {};
|
|
2453
|
+
criticalPeriod = 0;
|
|
2449
2454
|
// Some popular open source libraries, like styled-components, optimize performance
|
|
2450
2455
|
// by injecting CSS using insertRule API vs. appending text node. A side effect of
|
|
2451
2456
|
// using javascript API is that it doesn't trigger DOM mutation and therefore we
|
|
@@ -2546,9 +2551,11 @@ function stop$i() {
|
|
|
2546
2551
|
queue$2 = [];
|
|
2547
2552
|
activePeriod = 0;
|
|
2548
2553
|
timeout$1 = null;
|
|
2554
|
+
criticalPeriod = 0;
|
|
2549
2555
|
}
|
|
2550
2556
|
function active$2() {
|
|
2551
2557
|
activePeriod = time() + 3000 /* Setting.MutationActivePeriod */;
|
|
2558
|
+
criticalPeriod = time() + 200 /* Setting.INPCriticalPeriod */;
|
|
2552
2559
|
}
|
|
2553
2560
|
function handle$1(m) {
|
|
2554
2561
|
// Queue up mutation records for asynchronous processing
|
|
@@ -2668,9 +2675,13 @@ function track$5(m, timer, instance, timestamp) {
|
|
|
2668
2675
|
if (value && value.data.tag !== "HTML" /* Constant.HTML */) {
|
|
2669
2676
|
// calculate inactive period based on the timestamp of the mutation not when the mutation is processed
|
|
2670
2677
|
var inactive = timestamp > activePeriod;
|
|
2678
|
+
// Calculate critical period based on when mutation is processed
|
|
2679
|
+
var critical = instance < criticalPeriod;
|
|
2671
2680
|
var target = get(m.target);
|
|
2672
2681
|
var element = target && target.selector ? target.selector.join() : m.target.nodeName;
|
|
2673
2682
|
var parent_1 = value.selector ? value.selector.join() : "" /* Constant.Empty */;
|
|
2683
|
+
// Check if its a low priority (e.g., ads related) element mutation happening during critical period
|
|
2684
|
+
var lowPriMutation = config$2.throttleMutations && critical && element.indexOf("adthrive-ad") !== -1;
|
|
2674
2685
|
// We use selector, instead of id, to determine the key (signature for the mutation) because in some cases
|
|
2675
2686
|
// repeated mutations can cause elements to be destroyed and then recreated as new DOM nodes
|
|
2676
2687
|
// In those cases, IDs will change however the selector (which is relative to DOM xPath) remains the same
|
|
@@ -2682,11 +2693,13 @@ function track$5(m, timer, instance, timestamp) {
|
|
|
2682
2693
|
if (inactive === false && h[0] >= 10 /* Setting.MutationSuspendThreshold */) {
|
|
2683
2694
|
processNodeList(h[2], 2 /* Source.ChildListRemove */, timer, timestamp);
|
|
2684
2695
|
}
|
|
2685
|
-
// Update the counter
|
|
2686
|
-
h[0] = inactive ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
|
|
2696
|
+
// Update the counter, do not reset counter if its critical period
|
|
2697
|
+
h[0] = inactive || lowPriMutation ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
|
|
2687
2698
|
h[1] = instance;
|
|
2688
|
-
// Return updated mutation type based on
|
|
2689
|
-
if
|
|
2699
|
+
// Return updated mutation type based on,
|
|
2700
|
+
// 1. if we have already hit the threshold or not
|
|
2701
|
+
// 2. if its a low priority mutation happening during critical time period
|
|
2702
|
+
if (h[0] >= 10 /* Setting.MutationSuspendThreshold */ || lowPriMutation) {
|
|
2690
2703
|
// Store a reference to removedNodes so we can process them later
|
|
2691
2704
|
// when we resume mutations again on user interactions
|
|
2692
2705
|
h[2] = m.removedNodes;
|
|
@@ -2709,7 +2722,7 @@ function names(nodes) {
|
|
|
2709
2722
|
}
|
|
2710
2723
|
function processNodeList(list, source, timer, timestamp) {
|
|
2711
2724
|
return __awaiter(this, void 0, void 0, function () {
|
|
2712
|
-
var length, i, state;
|
|
2725
|
+
var length, i, node, state;
|
|
2713
2726
|
return __generator(this, function (_a) {
|
|
2714
2727
|
switch (_a.label) {
|
|
2715
2728
|
case 0:
|
|
@@ -2718,8 +2731,9 @@ function processNodeList(list, source, timer, timestamp) {
|
|
|
2718
2731
|
_a.label = 1;
|
|
2719
2732
|
case 1:
|
|
2720
2733
|
if (!(i < length)) return [3 /*break*/, 6];
|
|
2734
|
+
node = list[i];
|
|
2721
2735
|
if (!(source === 1 /* Source.ChildListAdd */)) return [3 /*break*/, 2];
|
|
2722
|
-
traverse(
|
|
2736
|
+
traverse(node, timer, source, timestamp);
|
|
2723
2737
|
return [3 /*break*/, 5];
|
|
2724
2738
|
case 2:
|
|
2725
2739
|
state = state$a(timer);
|
|
@@ -2732,7 +2746,7 @@ function processNodeList(list, source, timer, timestamp) {
|
|
|
2732
2746
|
if (state === 2 /* Task.Stop */) {
|
|
2733
2747
|
return [3 /*break*/, 6];
|
|
2734
2748
|
}
|
|
2735
|
-
processNode(
|
|
2749
|
+
processNode(node, source, timestamp);
|
|
2736
2750
|
_a.label = 5;
|
|
2737
2751
|
case 5:
|
|
2738
2752
|
i++;
|
|
@@ -5068,7 +5082,7 @@ function start$8() {
|
|
|
5068
5082
|
pageNum: m.pageNum,
|
|
5069
5083
|
upload: 0 /* Upload.Async */,
|
|
5070
5084
|
end: 0 /* BooleanFlag.False */,
|
|
5071
|
-
applicationPlatform: WebApp
|
|
5085
|
+
applicationPlatform: 0 /* ApplicationPlatform.WebApp */,
|
|
5072
5086
|
url: ''
|
|
5073
5087
|
};
|
|
5074
5088
|
}
|
|
@@ -5081,7 +5095,7 @@ function envelope(last) {
|
|
|
5081
5095
|
data$1.sequence++;
|
|
5082
5096
|
data$1.upload = last && "sendBeacon" in navigator ? 1 /* Upload.Beacon */ : 0 /* Upload.Async */;
|
|
5083
5097
|
data$1.end = last ? 1 /* BooleanFlag.True */ : 0 /* BooleanFlag.False */;
|
|
5084
|
-
data$1.applicationPlatform = WebApp
|
|
5098
|
+
data$1.applicationPlatform = 0 /* ApplicationPlatform.WebApp */;
|
|
5085
5099
|
data$1.url = url$1(location.href, false, true);
|
|
5086
5100
|
return [
|
|
5087
5101
|
data$1.version,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t){"use strict";var n=Object.freeze({__proto__:null,get queue(){return bt},get start(){return yt},get stop(){return wt},get track(){return ft}}),e=Object.freeze({__proto__:null,get check(){return Ot},get compute(){return xt},get data(){return pt},get start(){return Mt},get stop(){return jt},get trigger(){return Tt}}),r=Object.freeze({__proto__:null,get compute(){return Dt},get data(){return zt},get log(){return Pt},get reset(){return Rt},get start(){return qt},get stop(){return Nt},get updates(){return At}}),o=Object.freeze({__proto__:null,get callback(){return Yt},get callbacks(){return Lt},get clear(){return Ft},get consent(){return Gt},get data(){return Ht},get electron(){return Vt},get id(){return Zt},get metadata(){return Jt},get save(){return $t},get shortid(){return tn},get start(){return Wt},get stop(){return Xt}}),a=Object.freeze({__proto__:null,get data(){return un},get envelope(){return dn},get start(){return sn},get stop(){return ln}}),i={projectId:null,delay:1e3,lean:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,longTask:30,includeSubdomains:!0};function c(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function s(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-u),0)}var l="0.7.58";var d=255,f=!0,p=null,h=null;function v(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var o=i.drop;if(o&&o.length>0&&t&&t.indexOf("?")>0){var a=t.split("?"),c=a[0],u=a[1];r=c+"?"+u.split("&").map((function(t){return o.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,d)),r}function g(t,n,e){return function(){if(f&&null===p)try{p=new RegExp("\\p{N}","gu"),h=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){f=!1}}(),t?t.replace(h,n).replace(p,e):t}var m=[],y=null;function b(){}var w=[];function k(){}function S(){}var _=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:y,hashText:k,keys:w,log:b,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:m,stop:function(){},trigger:S}),E=null;function I(t,n){Pn()&&t&&"string"==typeof t&&t.length<255&&(E=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},It(24))}var M,O=null,T=null;function x(t){t in O||(O[t]=0),t in T||(T[t]=0),O[t]++,T[t]++}function j(t,n){null!==n&&(t in O||(O[t]=0),t in T||(T[t]=0),O[t]+=n,T[t]+=n)}function z(t,n){null!==n&&!1===isNaN(n)&&(t in O||(O[t]=0),(n>O[t]||0===O[t])&&(T[t]=n,O[t]=n))}function A(t,n,e){return window.setTimeout(hn(t),n,e)}function C(t){return window.clearTimeout(t)}var q=0,N=0,P=null;function D(){P&&C(P),P=A(R,N),q=s()}function R(){var t=s();M={gap:t-q},It(25),M.gap<3e5?P=A(R,N):Cn&&(I("clarity","suspend"),ae(),["mousemove","touchstart"].forEach((function(t){return gn(document,t,Dn)})),["resize","scroll","pageshow"].forEach((function(t){return gn(window,t,Dn)})))}var U=Object.freeze({__proto__:null,get data(){return M},reset:D,start:function(){N=6e4,q=0},stop:function(){C(P),q=0,N=0}}),H=null;function L(t){Pn()&&i.lean&&(i.lean=!1,H={key:t},Yt(),$t(),i.upgrade&&i.upgrade(t),It(3))}var V=Object.freeze({__proto__:null,get data(){return H},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),H=null},stop:function(){H=null},upgrade:L});function B(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function W(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var X=null;function J(t,n){G(t,"string"==typeof n?[n]:n)}function Z(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),B(this,void 0,void 0,(function(){var o,a;return W(this,(function(i){switch(i.label){case 0:return a={},[4,$(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(g(c.substring(2),"*","*")):g(c,"*","*")),G("userId",[(o=a).userId]),G("userHint",[o.userHint]),G("userType",[K(t)]),n&&(G("sessionId",[n]),o.sessionId=n),e&&(G("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function G(t,n){if(Pn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in X?X[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);X[t]=e}}function F(){It(34)}function Y(){X={}}function $(t){return B(this,void 0,void 0,(function(){var n;return W(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function tt(t){return B(this,void 0,void 0,(function(){var n,e;return W(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return B(this,void 0,void 0,(function(){return W(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,nt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function nt(t){return B(this,void 0,void 0,(function(){var n,e,r,o,a;return W(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var et=null;function rt(t){try{if(!et)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){et(t)}))}catch(t){}}var ot=[_,r,Object.freeze({__proto__:null,compute:F,get data(){return X},identify:Z,reset:Y,set:J,start:function(){Y()},stop:function(){Y()}}),e,_,o,a,n,U,V,_];function at(){O={},T={},x(5),ot.forEach((function(t){return hn(t.start)()}))}function it(){ot.slice().reverse().forEach((function(t){return hn(t.stop)()})),O={},T={}}function ct(){F(),Dt(),It(0),xt()}var ut,st,lt,dt,ft,pt,ht=0,vt=0,gt=null,mt=0;function yt(){dt=!0,ht=0,vt=0,mt=0,ut=[],st=[],lt={},ft=null}function bt(t,n){if(void 0===n&&(n=!0),dt){var e=s(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:ht+=o.length;case 37:case 6:case 43:case 45:case 46:vt+=o.length,ut.push(o);break;default:st.push(o)}x(25);var a=function(){var t=!1===i.lean&&ht>0?100:un.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();e-mt>2*a&&(C(gt),gt=null),n&&null===gt&&(25!==r&&D(),gt=A(kt,a),mt=e,Ot(vt))}}function wt(){C(gt),kt(!0),ht=0,vt=0,mt=0,ut=[],st=[],lt={},ft=null,dt=!1}function kt(t){return void 0===t&&(t=!1),B(this,void 0,void 0,(function(){var n,e,r,o,a,c,u,s;return W(this,(function(l){switch(l.label){case 0:return gt=null,(n=!1===i.lean&&vt>0&&(vt<1048576||un.sequence>0))&&z(1,1),ct(),e=!0===t,r=JSON.stringify(dn(e)),o="[".concat(st.join(),"]"),a=n?"[".concat(ut.join(),"]"):"",c=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:o,p:a}),e?(s=null,[3,3]):[3,1];case 1:return[4,tt(c)];case 2:s=l.sent(),l.label=3;case 3:return j(2,(u=s)?u.length:c.length),St(c,u,un.sequence,e),st=[],n&&(ut=[],vt=0,ht=0),[2]}}))}))}function St(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var o=i.upload,a=!1;if(r&&"sendBeacon"in navigator)try{(a=navigator.sendBeacon.bind(navigator)(o,t))&&Et(e)}catch(t){}if(!1===a){e in lt?lt[e].attempts++:lt[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){pn(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){hn(_t)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(i.upload){(0,i.upload)(t),Et(e)}}function _t(t,n){var e=lt[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Tt(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),St(e.data,null,n)):(ft={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&It(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var o=r[e],a=o&&o.length>0?o.split(/ (.*)/):[""];switch(a[0]){case"END":Tt(6);break;case"UPGRADE":L("Auto");break;case"ACTION":i.action&&a.length>1&&i.action(a[1]);break;case"EXTRACT":a.length>1&&a[1];break;case"SIGNAL":a.length>1&&rt(a[1])}}}(t.responseText),0===t.status&&(St(e.data,null,n,!0),Tt(3)),t.status>=200&&t.status<=208&&Et(n),delete lt[n]))}function Et(t){1===t&&($t(),Yt())}function It(t){var n=[s(),t];switch(t){case 4:var e=m;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),bt(n,!1));break;case 25:n.push(M.gap),bt(n);break;case 35:n.push(pt.check),bt(n,!1);break;case 3:n.push(H.key),bt(n);break;case 2:n.push(ft.sequence),n.push(ft.attempts),n.push(ft.status),bt(n,!1);break;case 24:E.key&&n.push(E.key),n.push(E.value),bt(n);break;case 34:var r=Object.keys(X);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(X[i])}Y(),bt(n,!1)}break;case 0:var c=Object.keys(T);if(c.length>0){for(var u=0,l=c;u<l.length;u++){var d=l[u],f=parseInt(d,10);n.push(f),n.push(Math.round(T[d]))}T={},bt(n,!1)}break;case 1:var p=Object.keys(At);if(p.length>0){for(var h=0,v=p;h<v.length;h++){var g=v[h];f=parseInt(g,10);n.push(f),n.push(At[g])}Rt(),bt(n,!1)}break;case 36:var b=Object.keys(y);if(b.length>0){for(var k=0,S=b;k<S.length;k++){var _=S[k];f=parseInt(_,10);n.push(f),n.push([].concat.apply([],y[_]))}bt(n,!1)}break;case 40:w.forEach((function(t){n.push(t);var e=[];for(var r in y[t]){var o=parseInt(r,10);e.push(o),e.push(y[t][r])}n.push(e)})),bt(n,!1)}}function Mt(){pt={check:0}}function Ot(t){if(0===pt.check){var n=pt.check;n=un.sequence>=128?1:n,n=un.pageNum>=128?7:n,n=s()>72e5?2:n,(n=t>10485760?2:n)!==pt.check&&Tt(n)}}function Tt(t){pt.check=t,5!==t&&(Ft(),ae())}function xt(){0!==pt.check&&It(35)}function jt(){pt=null}var zt=null,At=null,Ct=!1;function qt(){zt={},At={},Ct=!1}function Nt(){zt={},At={},Ct=!1}function Pt(t,n){if(n&&(n="".concat(n),t in zt||(zt[t]=[]),zt[t].indexOf(n)<0)){if(zt[t].length>128)return void(Ct||(Ct=!0,Tt(5)));zt[t].push(n),t in At||(At[t]=[]),At[t].push(n)}}function Dt(){It(1)}function Rt(){At={},Ct=!1}function Ut(t){Pt(36,t.toString())}var Ht=null,Lt=[],Vt=0,Bt=null;function Wt(){var t,n,e;Bt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",a=(new Date).getTimezoneOffset().toString(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Vt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=rn("_clsk",!i.includeSubdomains);if(n){var e=n.split("|");e.length>=5&&t.ts-nn(e[1])<18e5&&(t.session=e[0],t.count=nn(e[2])+1,t.upgrade=nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=en(),f=i.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ht={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},i.lean=i.track&&null!==l.upgrade?0===l.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&l.upload&&l.upload.length>"https://".length?l.upload:i.upload,Pt(0,r),Pt(3,u),Pt(1,v(location.href,!!Vt)),Pt(2,document.referrer),Pt(15,function(){var t=tn();if(i.track&&Kt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Pt(16,document.documentElement.lang),Pt(17,document.dir),Pt(26,"".concat(window.devicePixelRatio)),Pt(28,d.dob.toString()),Pt(29,d.version.toString()),Pt(33,c),Pt(34,o),Pt(35,a),z(0,l.ts),z(1,0),z(35,Vt),navigator&&(Pt(9,navigator.language),z(33,navigator.hardwareConcurrency),z(32,navigator.maxTouchPoints),z(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Pt(22,t.platform),Pt(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Pt(24,t.name+"~"+t.version)})),Pt(25,t.model),z(27,t.mobile?1:0)})):Pt(22,navigator.platform)),screen&&(z(14,Math.round(screen.width)),z(15,Math.round(screen.height)),z(16,Math.round(screen.colorDepth)));for(var p=0,h=i.cookies;p<h.length;p++){var g=h[p],m=rn(g);m&&J(g,m)}!function(t){Ut(t?1:0)}(i.track),Qt(d)}function Xt(){Bt=null,Ht=null,Lt.forEach((function(t){t.called=!1}))}function Jt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=i.lean?0:1,o=!1;Ht&&(r||!1===n)&&(t(Ht,!i.lean),o=!0),!e&&o||Lt.push({callback:t,wait:n,recall:e,called:o})}function Zt(){return Ht?[Ht.userId,Ht.sessionId,Ht.pageNum].join("."):""}function Gt(t){if(void 0===t&&(t=!0),!t)return i.track=!1,an("_clsk","",-Number.MAX_VALUE),an("_clck","",-Number.MAX_VALUE),ae(),void window.setTimeout(oe,250);Pn()&&(i.track=!0,Qt(en(),1),$t(),Ut(2))}function Ft(){an("_clsk","",0)}function Yt(){!function(t){if(Lt.length>0)for(var n=0;n<Lt.length;n++){var e=Lt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ht,!i.lean),e.called=!0,e.recall||(Lt.splice(n,1),n--))}}(i.lean?0:1)}function $t(){if(Ht){var t=Math.round(Date.now()),n=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",e=i.lean?0:1;an("_clsk",[Ht.sessionId,t,Ht.pageNum,e,n].join("|"),1)}}function Kt(t,n){try{return!!t[n]}catch(t){return!1}}function Qt(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&an("_clck",[Ht.userId,2,e.toString(36),n,r].join("|"),365)}function tn(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function nn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function en(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},n=rn("_clck",!i.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,a=document.cookie.split(";");o<a.length;o++){r+="_clck"===a[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=nn(e[1])),e.length>2&&(t.expiry=nn(e[2],36)),e.length>3&&1===nn(e[3])&&(t.consent=1),e.length>4&&nn(e[1])>1&&(t.dob=nn(e[4])),i.track=i.track||1===t.consent,t.id=i.track?e[0]:t.id}return t}function rn(t,n){var e;if(void 0===n&&(n=!1),Kt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=on(a[1]),c=i[0],u=i[1];c;)c=(e=on(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function on(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function an(t,n,e){if((i.track||""==n)&&(navigator&&navigator.cookieEnabled||Kt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var a=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(a).concat(";path=/");try{if(null===Bt){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Bt=".".concat(u[s]).concat(Bt||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Bt),rn(t)===n))return;Bt=""}}catch(t){Bt=""}document.cookie=Bt?"".concat(c).concat(";").concat("domain=").concat(Bt):c}}var cn,un=null;function sn(){var n=Ht;un={version:l,sequence:0,start:0,duration:0,projectId:n.projectId,userId:n.userId,sessionId:n.sessionId,pageNum:n.pageNum,upload:0,end:0,applicationPlatform:t.WebApp,url:""}}function ln(){un=null}function dn(n){return un.start=un.start+un.duration,un.duration=s()-un.start,un.sequence++,un.upload=n&&"sendBeacon"in navigator?1:0,un.end=n?1:0,un.applicationPlatform=t.WebApp,un.url=v(location.href,!1,!0),[un.version,un.sequence,un.start,un.duration,un.projectId,un.userId,un.sessionId,un.pageNum,un.upload,un.end,un.applicationPlatform,un.url]}function fn(){cn=[]}function pn(t){if(cn&&-1===cn.indexOf(t.message)){var n=i.report;if(n&&n.length>0){var e={v:un.version,p:un.projectId,u:un.userId,s:un.sessionId,n:un.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),cn.push(t.message)}}return t}function hn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw pn(t)}var e=performance.now()-n;j(4,e),e>i.longTask&&(x(7),z(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var vn=[];function gn(t,n,e,r){void 0===r&&(r=!1),e=hn(e);try{t[c("addEventListener")](n,e,r),vn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function mn(){for(var t=0,n=vn;t<n.length;t++){var e=n[t];try{e.target[c("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}vn=[]}var yn=null,bn=null,wn=null,kn=0;function Sn(){return!(kn++>20)}function _n(){kn=0,wn!==In()&&(ae(),window.setTimeout(En,250))}function En(){oe(),z(29,1)}function In(){return location.href?location.href.replace(location.hash,""):location.href}_n.dn=1;var Mn=[],On=null,Tn=null,xn=null;function jn(){Tn&&(xn(),Tn=null,null===On&&An())}function zn(){Mn=[],On=null,Tn=null}function An(){var t=Mn.shift();t&&(On=t,t.task().then((function(){t.id===Zt()&&(t.resolve(),On=null,An())})).catch((function(n){t.id===Zt()&&(n&&(n.name,n.message,n.stack),On=null,An())})))}var Cn=!1;function qn(){Cn=!0,u=performance.now()+performance.timeOrigin,zn(),mn(),fn(),wn=In(),kn=0,gn(window,"popstate",_n),null===yn&&(yn=history.pushState,history.pushState=function(){yn.apply(this,arguments),Pn()&&Sn()&&_n()}),null===bn&&(bn=history.replaceState,history.replaceState=function(){bn.apply(this,arguments),Pn()&&Sn()&&_n()})}function Nn(){wn=null,kn=0,fn(),mn(),zn(),u=0,Cn=!1}function Pn(){return Cn}function Dn(){oe(),I("clarity","restart")}Dn.dn=2;var Rn=null;function Un(){Rn=null}function Hn(t){Rn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){B(this,void 0,void 0,(function(){var n,e;return W(this,(function(r){return n=s(),e=[n,t],29===t&&(e.push(Rn.fetchStart),e.push(Rn.connectStart),e.push(Rn.connectEnd),e.push(Rn.requestStart),e.push(Rn.responseStart),e.push(Rn.responseEnd),e.push(Rn.domInteractive),e.push(Rn.domComplete),e.push(Rn.loadEventStart),e.push(Rn.loadEventEnd),e.push(Rn.redirectCount),e.push(Rn.size),e.push(Rn.type),e.push(Rn.protocol),e.push(Rn.encodedSize),e.push(Rn.decodedSize),Un(),bt(e)),[2]}))}))}(29)}var Ln,Vn=0,Bn=1/0,Wn=0,Xn=0,Jn=[],Zn=new Map,Gn=function(){return Vn||0},Fn=function(){if(!Jn.length)return-1;var t=Math.min(Jn.length-1,Math.floor((Gn()-Xn)/50));return Jn[t].latency},Yn=function(){Xn=Gn(),Jn.length=0,Zn.clear()},$n=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Vn=performance.interactionCount:t.interactionId&&(Bn=Math.min(Bn,t.interactionId),Wn=Math.max(Wn,t.interactionId),Vn=Wn?(Wn-Bn)/7+1:0)}(t);var n=Jn[Jn.length-1],e=Zn.get(t.interactionId);if(e||Jn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Zn.set(r.id,r),Jn.push(r)}Jn.sort((function(t,n){return n.latency-t.latency})),Jn.length>10&&Jn.splice(10).forEach((function(t){return Zn.delete(t.id)}))}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){try{Ln&&Ln.disconnect(),Ln=new PerformanceObserver(hn(te));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&j(9,0),Ln.observe({type:e,buffered:!0}))}}catch(t){}}function te(t){!function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Hn(r);break;case"resource":var o=r.name;Pt(4,ne(o)),o!==i.upload&&o!==i.fallback||z(28,r.duration);break;case"longtask":x(7);break;case"first-input":n&&z(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&($n(r),Pt(37,Fn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&j(9,1e3*r.value);break;case"largest-contentful-paint":n&&z(8,r.startTime)}}}(t.getEntries())}function ne(t){var n=document.createElement("a");return n.href=t,n.host}function ee(){Un(),function(){navigator&&"connection"in navigator&&Pt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?gn(window,"load",A.bind(this,Qn,0)):Qn())}()}Qn.dn=26,te.dn=27,ee.dn=25;var re=[_,_,_,Object.freeze({__proto__:null,start:ee,stop:function(){Ln&&Ln.disconnect(),Ln=null,Yn(),Un()}})];function oe(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||Cn)return!1;for(var n in t)n in i&&(i[n]=t[n])}(t),qn(),at(),re.forEach((function(t){return hn(t.start)()})),null===t&&se())}function ae(){Pn()&&(re.slice().reverse().forEach((function(t){return hn(t.stop)()})),it(),Nn(),void 0!==ce&&(ce[ue]=function(){(ce[ue].q=ce[ue].q||[]).push(arguments),"start"===arguments[0]&&ce[ue].q.unshift(ce[ue].q.pop())&&se()}))}var ie=Object.freeze({__proto__:null,consent:Gt,event:I,hashText:k,identify:Z,metadata:Jt,pause:function(){Pn()&&(I("clarity","pause"),null===Tn&&(Tn=new Promise((function(t){xn=t}))))},resume:function(){Pn()&&(jn(),I("clarity","resume"))},set:J,signal:function(t){et=t},start:oe,stop:ae,upgrade:L,version:l}),ce=window,ue="clarity";function se(){if(void 0!==ce){if(ce[ue]&&ce[ue].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ce[ue]&&ce[ue].q||[];for(ce[ue]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ie[t].apply(ie,n)},ce[ue].v=l;t.length>0;)ce[ue].apply(ce,t.shift())}}se()}(data$b);
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return yt},get start(){return mt},get stop(){return bt},get track(){return dt}}),n=Object.freeze({__proto__:null,get check(){return Mt},get compute(){return Tt},get data(){return ft},get start(){return It},get stop(){return xt},get trigger(){return Ot}}),e=Object.freeze({__proto__:null,get compute(){return Pt},get data(){return jt},get log(){return Nt},get reset(){return Dt},get start(){return At},get stop(){return qt},get updates(){return zt}}),r=Object.freeze({__proto__:null,get callback(){return Ft},get callbacks(){return Ht},get clear(){return Gt},get consent(){return Zt},get data(){return Ut},get electron(){return Lt},get id(){return Jt},get metadata(){return Wt},get save(){return Yt},get shortid(){return $t},get start(){return Bt},get stop(){return Xt}}),o=Object.freeze({__proto__:null,get data(){return cn},get envelope(){return ln},get start(){return un},get stop(){return sn}}),a={projectId:null,delay:1e3,lean:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,longTask:30,includeSubdomains:!0,throttleMutations:!1};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function u(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-c),0)}var s="0.7.63";var l=255,d=!0,f=null,p=null;function h(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var o=a.drop;if(o&&o.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),c=i[0],u=i[1];r=c+"?"+u.split("&").map((function(t){return o.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,l)),r}function v(t,n,e){return function(){if(d&&null===f)try{f=new RegExp("\\p{N}","gu"),p=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){d=!1}}(),t?t.replace(p,n).replace(f,e):t}var g=[],m=null;function y(){}var b=[];function w(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:w,keys:b,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null;function E(t,n){Nn()&&t&&"string"==typeof t&&t.length<255&&(_=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Et(24))}var I,M=null,O=null;function T(t){t in M||(M[t]=0),t in O||(O[t]=0),M[t]++,O[t]++}function x(t,n){null!==n&&(t in M||(M[t]=0),t in O||(O[t]=0),M[t]+=n,O[t]+=n)}function j(t,n){null!==n&&!1===isNaN(n)&&(t in M||(M[t]=0),(n>M[t]||0===M[t])&&(O[t]=n,M[t]=n))}function z(t,n,e){return window.setTimeout(pn(t),n,e)}function C(t){return window.clearTimeout(t)}var A=0,q=0,N=null;function P(){N&&C(N),N=z(D,q),A=u()}function D(){var t=u();I={gap:t-A},Et(25),I.gap<3e5?N=z(D,q):Cn&&(E("clarity","suspend"),oe(),["mousemove","touchstart"].forEach((function(t){return vn(document,t,Pn)})),["resize","scroll","pageshow"].forEach((function(t){return vn(window,t,Pn)})))}var R=Object.freeze({__proto__:null,get data(){return I},reset:P,start:function(){q=6e4,A=0},stop:function(){C(N),A=0,q=0}}),U=null;function H(t){Nn()&&a.lean&&(a.lean=!1,U={key:t},Ft(),Yt(),a.upgrade&&a.upgrade(t),Et(3))}var L=Object.freeze({__proto__:null,get data(){return U},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),U=null},stop:function(){U=null},upgrade:H});function V(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function B(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var X=null;function W(t,n){Z(t,"string"==typeof n?[n]:n)}function J(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),V(this,void 0,void 0,(function(){var o,a;return B(this,(function(i){switch(i.label){case 0:return a={},[4,Y(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(v(c.substring(2),"*","*")):v(c,"*","*")),Z("userId",[(o=a).userId]),Z("userHint",[o.userHint]),Z("userType",[K(t)]),n&&(Z("sessionId",[n]),o.sessionId=n),e&&(Z("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function Z(t,n){if(Nn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in X?X[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);X[t]=e}}function G(){Et(34)}function F(){X={}}function Y(t){return V(this,void 0,void 0,(function(){var n;return B(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function $(t){return V(this,void 0,void 0,(function(){var n,e;return B(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return V(this,void 0,void 0,(function(){return B(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,tt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function tt(t){return V(this,void 0,void 0,(function(){var n,e,r,o,a;return B(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var nt=null;function et(t){try{if(!nt)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){nt(t)}))}catch(t){}}var rt=[S,e,Object.freeze({__proto__:null,compute:G,get data(){return X},identify:J,reset:F,set:W,start:function(){F()},stop:function(){F()}}),n,S,r,o,t,R,L,S];function ot(){M={},O={},T(5),rt.forEach((function(t){return pn(t.start)()}))}function at(){rt.slice().reverse().forEach((function(t){return pn(t.stop)()})),M={},O={}}function it(){G(),Pt(),Et(0),Tt()}var ct,ut,st,lt,dt,ft,pt=0,ht=0,vt=null,gt=0;function mt(){lt=!0,pt=0,ht=0,gt=0,ct=[],ut=[],st={},dt=null}function yt(t,n){if(void 0===n&&(n=!0),lt){var e=u(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:pt+=o.length;case 37:case 6:case 43:case 45:case 46:ht+=o.length,ct.push(o);break;default:ut.push(o)}T(25);var i=function(){var t=!1===a.lean&&pt>0?100:cn.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-gt>2*i&&(C(vt),vt=null),n&&null===vt&&(25!==r&&P(),vt=z(wt,i),gt=e,Mt(ht))}}function bt(){C(vt),wt(!0),pt=0,ht=0,gt=0,ct=[],ut=[],st={},dt=null,lt=!1}function wt(t){return void 0===t&&(t=!1),V(this,void 0,void 0,(function(){var n,e,r,o,i,c,u,s;return B(this,(function(l){switch(l.label){case 0:return vt=null,(n=!1===a.lean&&ht>0&&(ht<1048576||cn.sequence>0))&&j(1,1),it(),e=!0===t,r=JSON.stringify(ln(e)),o="[".concat(ut.join(),"]"),i=n?"[".concat(ct.join(),"]"):"",c=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:o,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,$(c)];case 2:s=l.sent(),l.label=3;case 3:return x(2,(u=s)?u.length:c.length),kt(c,u,cn.sequence,e),ut=[],n&&(ct=[],ht=0,pt=0),[2]}}))}))}function kt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(o,t))&&_t(e)}catch(t){}if(!1===i){e in st?st[e].attempts++:st[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){fn(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){pn(St)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),_t(e)}}function St(t,n){var e=st[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Ot(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),kt(e.data,null,n)):(dt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Et(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var o=r[e],i=o&&o.length>0?o.split(/ (.*)/):[""];switch(i[0]){case"END":Ot(6);break;case"UPGRADE":H("Auto");break;case"ACTION":a.action&&i.length>1&&a.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&et(i[1])}}}(t.responseText),0===t.status&&(kt(e.data,null,n,!0),Ot(3)),t.status>=200&&t.status<=208&&_t(n),delete st[n]))}function _t(t){1===t&&(Yt(),Ft())}function Et(t){var n=[u(),t];switch(t){case 4:var e=g;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),yt(n,!1));break;case 25:n.push(I.gap),yt(n);break;case 35:n.push(ft.check),yt(n,!1);break;case 3:n.push(U.key),yt(n);break;case 2:n.push(dt.sequence),n.push(dt.attempts),n.push(dt.status),yt(n,!1);break;case 24:_.key&&n.push(_.key),n.push(_.value),yt(n);break;case 34:var r=Object.keys(X);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(X[i])}F(),yt(n,!1)}break;case 0:var c=Object.keys(O);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var d=l[s],f=parseInt(d,10);n.push(f),n.push(Math.round(O[d]))}O={},yt(n,!1)}break;case 1:var p=Object.keys(zt);if(p.length>0){for(var h=0,v=p;h<v.length;h++){var y=v[h];f=parseInt(y,10);n.push(f),n.push(zt[y])}Dt(),yt(n,!1)}break;case 36:var w=Object.keys(m);if(w.length>0){for(var k=0,S=w;k<S.length;k++){var E=S[k];f=parseInt(E,10);n.push(f),n.push([].concat.apply([],m[E]))}yt(n,!1)}break;case 40:b.forEach((function(t){n.push(t);var e=[];for(var r in m[t]){var o=parseInt(r,10);e.push(o),e.push(m[t][r])}n.push(e)})),yt(n,!1)}}function It(){ft={check:0}}function Mt(t){if(0===ft.check){var n=ft.check;n=cn.sequence>=128?1:n,n=cn.pageNum>=128?7:n,n=u()>72e5?2:n,(n=t>10485760?2:n)!==ft.check&&Ot(n)}}function Ot(t){ft.check=t,5!==t&&(Gt(),oe())}function Tt(){0!==ft.check&&Et(35)}function xt(){ft=null}var jt=null,zt=null,Ct=!1;function At(){jt={},zt={},Ct=!1}function qt(){jt={},zt={},Ct=!1}function Nt(t,n){if(n&&(n="".concat(n),t in jt||(jt[t]=[]),jt[t].indexOf(n)<0)){if(jt[t].length>128)return void(Ct||(Ct=!0,Ot(5)));jt[t].push(n),t in zt||(zt[t]=[]),zt[t].push(n)}}function Pt(){Et(1)}function Dt(){zt={},Ct=!1}function Rt(t){Nt(36,t.toString())}var Ut=null,Ht=[],Lt=0,Vt=null;function Bt(){var t,n,e;Vt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Lt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:$t(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=en("_clsk",!a.includeSubdomains);if(n){var e=n.split("|");e.length>=5&&t.ts-tn(e[1])<18e5&&(t.session=e[0],t.count=tn(e[2])+1,t.upgrade=tn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=nn(),f=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ut={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},a.lean=a.track&&null!==l.upgrade?0===l.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&l.upload&&l.upload.length>"https://".length?l.upload:a.upload,Nt(0,r),Nt(3,u),Nt(1,h(location.href,!!Lt)),Nt(2,document.referrer),Nt(15,function(){var t=$t();if(a.track&&Kt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Nt(16,document.documentElement.lang),Nt(17,document.dir),Nt(26,"".concat(window.devicePixelRatio)),Nt(28,d.dob.toString()),Nt(29,d.version.toString()),Nt(33,c),Nt(34,o),Nt(35,i),j(0,l.ts),j(1,0),j(35,Lt),navigator&&(Nt(9,navigator.language),j(33,navigator.hardwareConcurrency),j(32,navigator.maxTouchPoints),j(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Nt(22,t.platform),Nt(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Nt(24,t.name+"~"+t.version)})),Nt(25,t.model),j(27,t.mobile?1:0)})):Nt(22,navigator.platform)),screen&&(j(14,Math.round(screen.width)),j(15,Math.round(screen.height)),j(16,Math.round(screen.colorDepth)));for(var p=0,v=a.cookies;p<v.length;p++){var g=v[p],m=en(g);m&&W(g,m)}!function(t){Rt(t?1:0)}(a.track),Qt(d)}function Xt(){Vt=null,Ut=null,Ht.forEach((function(t){t.called=!1}))}function Wt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=a.lean?0:1,o=!1;Ut&&(r||!1===n)&&(t(Ut,!a.lean),o=!0),!e&&o||Ht.push({callback:t,wait:n,recall:e,called:o})}function Jt(){return Ut?[Ut.userId,Ut.sessionId,Ut.pageNum].join("."):""}function Zt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,on("_clsk","",-Number.MAX_VALUE),on("_clck","",-Number.MAX_VALUE),oe(),void window.setTimeout(re,250);Nn()&&(a.track=!0,Qt(nn(),1),Yt(),Rt(2))}function Gt(){on("_clsk","",0)}function Ft(){!function(t){if(Ht.length>0)for(var n=0;n<Ht.length;n++){var e=Ht[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ut,!a.lean),e.called=!0,e.recall||(Ht.splice(n,1),n--))}}(a.lean?0:1)}function Yt(){if(Ut){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;on("_clsk",[Ut.sessionId,t,Ut.pageNum,e,n].join("|"),1)}}function Kt(t,n){try{return!!t[n]}catch(t){return!1}}function Qt(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&on("_clck",[Ut.userId,2,e.toString(36),n,r].join("|"),365)}function $t(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function tn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function nn(){var t={id:$t(),version:0,expiry:null,consent:0,dob:0},n=en("_clck",!a.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,i=document.cookie.split(";");o<i.length;o++){r+="_clck"===i[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=tn(e[1])),e.length>2&&(t.expiry=tn(e[2],36)),e.length>3&&1===tn(e[3])&&(t.consent=1),e.length>4&&tn(e[1])>1&&(t.dob=tn(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function en(t,n){var e;if(void 0===n&&(n=!1),Kt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=rn(a[1]),c=i[0],u=i[1];c;)c=(e=rn(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function rn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function on(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Kt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var i=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Vt){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Vt=".".concat(u[s]).concat(Vt||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Vt),en(t)===n))return;Vt=""}}catch(t){Vt=""}document.cookie=Vt?"".concat(c).concat(";").concat("domain=").concat(Vt):c}}var an,cn=null;function un(){var t=Ut;cn={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function sn(){cn=null}function ln(t){return cn.start=cn.start+cn.duration,cn.duration=u()-cn.start,cn.sequence++,cn.upload=t&&"sendBeacon"in navigator?1:0,cn.end=t?1:0,cn.applicationPlatform=0,cn.url=h(location.href,!1,!0),[cn.version,cn.sequence,cn.start,cn.duration,cn.projectId,cn.userId,cn.sessionId,cn.pageNum,cn.upload,cn.end,cn.applicationPlatform,cn.url]}function dn(){an=[]}function fn(t){if(an&&-1===an.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:cn.version,p:cn.projectId,u:cn.userId,s:cn.sessionId,n:cn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),an.push(t.message)}}return t}function pn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw fn(t)}var e=performance.now()-n;x(4,e),e>a.longTask&&(T(7),j(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var hn=[];function vn(t,n,e,r){void 0===r&&(r=!1),e=pn(e);try{t[i("addEventListener")](n,e,r),hn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function gn(){for(var t=0,n=hn;t<n.length;t++){var e=n[t];try{e.target[i("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}hn=[]}var mn=null,yn=null,bn=null,wn=0;function kn(){return!(wn++>20)}function Sn(){wn=0,bn!==En()&&(oe(),window.setTimeout(_n,250))}function _n(){re(),j(29,1)}function En(){return location.href?location.href.replace(location.hash,""):location.href}Sn.dn=1;var In=[],Mn=null,On=null,Tn=null;function xn(){On&&(Tn(),On=null,null===Mn&&zn())}function jn(){In=[],Mn=null,On=null}function zn(){var t=In.shift();t&&(Mn=t,t.task().then((function(){t.id===Jt()&&(t.resolve(),Mn=null,zn())})).catch((function(n){t.id===Jt()&&(n&&(n.name,n.message,n.stack),Mn=null,zn())})))}var Cn=!1;function An(){Cn=!0,c=performance.now()+performance.timeOrigin,jn(),gn(),dn(),bn=En(),wn=0,vn(window,"popstate",Sn),null===mn&&(mn=history.pushState,history.pushState=function(){mn.apply(this,arguments),Nn()&&kn()&&Sn()}),null===yn&&(yn=history.replaceState,history.replaceState=function(){yn.apply(this,arguments),Nn()&&kn()&&Sn()})}function qn(){bn=null,wn=0,dn(),gn(),jn(),c=0,Cn=!1}function Nn(){return Cn}function Pn(){re(),E("clarity","restart")}Pn.dn=2;var Dn=null;function Rn(){Dn=null}function Un(t){Dn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){V(this,void 0,void 0,(function(){var n,e;return B(this,(function(r){return n=u(),e=[n,t],29===t&&(e.push(Dn.fetchStart),e.push(Dn.connectStart),e.push(Dn.connectEnd),e.push(Dn.requestStart),e.push(Dn.responseStart),e.push(Dn.responseEnd),e.push(Dn.domInteractive),e.push(Dn.domComplete),e.push(Dn.loadEventStart),e.push(Dn.loadEventEnd),e.push(Dn.redirectCount),e.push(Dn.size),e.push(Dn.type),e.push(Dn.protocol),e.push(Dn.encodedSize),e.push(Dn.decodedSize),Rn(),yt(e)),[2]}))}))}(29)}var Hn,Ln=0,Vn=1/0,Bn=0,Xn=0,Wn=[],Jn=new Map,Zn=function(){return Ln||0},Gn=function(){if(!Wn.length)return-1;var t=Math.min(Wn.length-1,Math.floor((Zn()-Xn)/50));return Wn[t].latency},Fn=function(){Xn=Zn(),Wn.length=0,Jn.clear()},Yn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Ln=performance.interactionCount:t.interactionId&&(Vn=Math.min(Vn,t.interactionId),Bn=Math.max(Bn,t.interactionId),Ln=Bn?(Bn-Vn)/7+1:0)}(t);var n=Wn[Wn.length-1],e=Jn.get(t.interactionId);if(e||Wn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Jn.set(r.id,r),Wn.push(r)}Wn.sort((function(t,n){return n.latency-t.latency})),Wn.length>10&&Wn.splice(10).forEach((function(t){return Jn.delete(t.id)}))}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){try{Hn&&Hn.disconnect(),Hn=new PerformanceObserver(pn($n));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&x(9,0),Hn.observe({type:e,buffered:!0}))}}catch(t){}}function $n(t){!function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Un(r);break;case"resource":var o=r.name;Nt(4,te(o)),o!==a.upload&&o!==a.fallback||j(28,r.duration);break;case"longtask":T(7);break;case"first-input":n&&j(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Yn(r),Nt(37,Gn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&x(9,1e3*r.value);break;case"largest-contentful-paint":n&&j(8,r.startTime)}}}(t.getEntries())}function te(t){var n=document.createElement("a");return n.href=t,n.host}function ne(){Rn(),function(){navigator&&"connection"in navigator&&Nt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?vn(window,"load",z.bind(this,Qn,0)):Qn())}()}Qn.dn=26,$n.dn=27,ne.dn=25;var ee=[S,S,S,Object.freeze({__proto__:null,start:ne,stop:function(){Hn&&Hn.disconnect(),Hn=null,Fn(),Rn()}})];function re(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||Cn)return!1;for(var n in t)n in a&&(a[n]=t[n])}(t),An(),ot(),ee.forEach((function(t){return pn(t.start)()})),null===t&&ue())}function oe(){Nn()&&(ee.slice().reverse().forEach((function(t){return pn(t.stop)()})),at(),qn(),void 0!==ie&&(ie[ce]=function(){(ie[ce].q=ie[ce].q||[]).push(arguments),"start"===arguments[0]&&ie[ce].q.unshift(ie[ce].q.pop())&&ue()}))}var ae=Object.freeze({__proto__:null,consent:Zt,event:E,hashText:w,identify:J,metadata:Wt,pause:function(){Nn()&&(E("clarity","pause"),null===On&&(On=new Promise((function(t){Tn=t}))))},resume:function(){Nn()&&(xn(),E("clarity","resume"))},set:W,signal:function(t){nt=t},start:re,stop:oe,upgrade:H,version:s}),ie=window,ce="clarity";function ue(){if(void 0!==ie){if(ie[ce]&&ie[ce].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ie[ce]&&ie[ce].q||[];for(ie[ce]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ae[t].apply(ae,n)},ie[ce].v=s;t.length>0;)ie[ce].apply(ie,t.shift())}}ue()}();
|
package/package.json
CHANGED
package/src/core/config.ts
CHANGED
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.7.
|
|
1
|
+
let version = "0.7.63";
|
|
2
2
|
export default version;
|
package/src/data/envelope.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BooleanFlag, Token, Upload, Envelope,
|
|
1
|
+
import { BooleanFlag, Token, Upload, Envelope, ApplicationPlatform } from "@clarity-types/data";
|
|
2
2
|
import { time } from "@src/core/time";
|
|
3
3
|
import version from "@src/core/version";
|
|
4
4
|
import * as metadata from "@src/data/metadata";
|
|
@@ -19,7 +19,7 @@ export function start(): void {
|
|
|
19
19
|
pageNum: m.pageNum,
|
|
20
20
|
upload: Upload.Async,
|
|
21
21
|
end: BooleanFlag.False,
|
|
22
|
-
applicationPlatform: WebApp,
|
|
22
|
+
applicationPlatform: ApplicationPlatform.WebApp,
|
|
23
23
|
url: ''
|
|
24
24
|
};
|
|
25
25
|
}
|
|
@@ -34,7 +34,7 @@ export function envelope(last: boolean): Token[] {
|
|
|
34
34
|
data.sequence++;
|
|
35
35
|
data.upload = last && "sendBeacon" in navigator ? Upload.Beacon : Upload.Async;
|
|
36
36
|
data.end = last ? BooleanFlag.True : BooleanFlag.False;
|
|
37
|
-
data.applicationPlatform = WebApp;
|
|
37
|
+
data.applicationPlatform = ApplicationPlatform.WebApp;
|
|
38
38
|
data.url = scrub.url(location.href, false, true);
|
|
39
39
|
return [
|
|
40
40
|
data.version,
|
package/src/layout/dom.ts
CHANGED
|
@@ -86,8 +86,14 @@ export function getId(node: Node, autogen: boolean = false): number {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
export function add(node: Node, parent: Node, data: NodeInfo, source: Source): void {
|
|
89
|
-
let id = getId(node, true);
|
|
90
89
|
let parentId = parent ? getId(parent) : null;
|
|
90
|
+
|
|
91
|
+
// Do not add detached nodes
|
|
92
|
+
if ((!parent || !parentId) && (node as ShadowRoot).host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
let id = getId(node, true);
|
|
91
97
|
let previousId = getPreviousId(node);
|
|
92
98
|
let parentValue: NodeValue = null;
|
|
93
99
|
let regionId = region.exists(node) ? id : null;
|
package/src/layout/mutation.ts
CHANGED
|
@@ -34,6 +34,7 @@ let timeout: number = null;
|
|
|
34
34
|
let throttleDelay: number = null;
|
|
35
35
|
let activePeriod = null;
|
|
36
36
|
let history: MutationHistory = {};
|
|
37
|
+
let criticalPeriod = null;
|
|
37
38
|
|
|
38
39
|
export function start(): void {
|
|
39
40
|
observers = [];
|
|
@@ -41,6 +42,7 @@ export function start(): void {
|
|
|
41
42
|
timeout = null;
|
|
42
43
|
activePeriod = 0;
|
|
43
44
|
history = {};
|
|
45
|
+
criticalPeriod = 0;
|
|
44
46
|
|
|
45
47
|
// Some popular open source libraries, like styled-components, optimize performance
|
|
46
48
|
// by injecting CSS using insertRule API vs. appending text node. A side effect of
|
|
@@ -126,10 +128,12 @@ export function stop(): void {
|
|
|
126
128
|
queue = [];
|
|
127
129
|
activePeriod = 0;
|
|
128
130
|
timeout = null;
|
|
131
|
+
criticalPeriod = 0;
|
|
129
132
|
}
|
|
130
133
|
|
|
131
134
|
export function active(): void {
|
|
132
135
|
activePeriod = time() + Setting.MutationActivePeriod;
|
|
136
|
+
criticalPeriod = time() + Setting.INPCriticalPeriod;
|
|
133
137
|
}
|
|
134
138
|
|
|
135
139
|
function handle(m: MutationRecord[]): void {
|
|
@@ -223,9 +227,13 @@ function track(m: MutationRecord, timer: Timer, instance: number, timestamp: num
|
|
|
223
227
|
if (value && value.data.tag !== Constant.HTML) {
|
|
224
228
|
// calculate inactive period based on the timestamp of the mutation not when the mutation is processed
|
|
225
229
|
let inactive = timestamp > activePeriod;
|
|
230
|
+
// Calculate critical period based on when mutation is processed
|
|
231
|
+
const critical = instance < criticalPeriod;
|
|
226
232
|
let target = dom.get(m.target);
|
|
227
233
|
let element = target && target.selector ? target.selector.join() : m.target.nodeName;
|
|
228
234
|
let parent = value.selector ? value.selector.join() : Constant.Empty;
|
|
235
|
+
// Check if its a low priority (e.g., ads related) element mutation happening during critical period
|
|
236
|
+
const lowPriMutation = config.throttleMutations && critical && element.indexOf("adthrive-ad") !== -1;
|
|
229
237
|
// We use selector, instead of id, to determine the key (signature for the mutation) because in some cases
|
|
230
238
|
// repeated mutations can cause elements to be destroyed and then recreated as new DOM nodes
|
|
231
239
|
// In those cases, IDs will change however the selector (which is relative to DOM xPath) remains the same
|
|
@@ -235,11 +243,14 @@ function track(m: MutationRecord, timer: Timer, instance: number, timestamp: num
|
|
|
235
243
|
let h = history[key];
|
|
236
244
|
// Lookup any pending nodes queued up for removal, and process them now if we suspended a mutation before
|
|
237
245
|
if (inactive === false && h[0] >= Setting.MutationSuspendThreshold) { processNodeList(h[2], Source.ChildListRemove, timer, timestamp); }
|
|
238
|
-
|
|
239
|
-
|
|
246
|
+
|
|
247
|
+
// Update the counter, do not reset counter if its critical period
|
|
248
|
+
h[0] = inactive || lowPriMutation ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
|
|
240
249
|
h[1] = instance;
|
|
241
|
-
// Return updated mutation type based on
|
|
242
|
-
if
|
|
250
|
+
// Return updated mutation type based on,
|
|
251
|
+
// 1. if we have already hit the threshold or not
|
|
252
|
+
// 2. if its a low priority mutation happening during critical time period
|
|
253
|
+
if (h[0] >= Setting.MutationSuspendThreshold || lowPriMutation) {
|
|
243
254
|
// Store a reference to removedNodes so we can process them later
|
|
244
255
|
// when we resume mutations again on user interactions
|
|
245
256
|
h[2] = m.removedNodes;
|
|
@@ -263,13 +274,14 @@ function names(nodes: NodeList): string {
|
|
|
263
274
|
async function processNodeList(list: NodeList, source: Source, timer: Timer, timestamp: number): Promise<void> {
|
|
264
275
|
let length = list ? list.length : 0;
|
|
265
276
|
for (let i = 0; i < length; i++) {
|
|
277
|
+
const node = list[i];
|
|
266
278
|
if (source === Source.ChildListAdd) {
|
|
267
|
-
traverse(
|
|
279
|
+
traverse(node, timer, source, timestamp);
|
|
268
280
|
} else {
|
|
269
281
|
let state = task.state(timer);
|
|
270
282
|
if (state === Task.Wait) { state = await task.suspend(timer); }
|
|
271
283
|
if (state === Task.Stop) { break; }
|
|
272
|
-
processNode(
|
|
284
|
+
processNode(node, source, timestamp);
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
287
|
}
|
package/types/core.d.ts
CHANGED
package/types/data.d.ts
CHANGED
|
@@ -12,8 +12,6 @@ export interface MetadataCallbackOptions {
|
|
|
12
12
|
}
|
|
13
13
|
export type SignalCallback = (data: ClaritySignal) => void
|
|
14
14
|
|
|
15
|
-
export const WebApp = 0;
|
|
16
|
-
|
|
17
15
|
/* Enum */
|
|
18
16
|
export const enum Event {
|
|
19
17
|
/* Data */
|
|
@@ -47,22 +45,22 @@ export const enum Event {
|
|
|
47
45
|
Input = 27,
|
|
48
46
|
Visibility = 28,
|
|
49
47
|
Navigation = 29,
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated No longer support Network Connection
|
|
50
|
+
*/
|
|
53
51
|
Connection = 30,
|
|
54
52
|
ScriptError = 31,
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated No longer support Image Error
|
|
55
|
+
*/
|
|
58
56
|
ImageError = 32,
|
|
59
57
|
Log = 33,
|
|
60
58
|
Variable = 34,
|
|
61
59
|
Limit = 35,
|
|
62
60
|
Summary = 36,
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
/**
|
|
62
|
+
* @deprecated No longer support Box event
|
|
63
|
+
*/
|
|
66
64
|
Box = 37,
|
|
67
65
|
Clipboard = 38,
|
|
68
66
|
Submit = 39,
|
|
@@ -116,9 +114,9 @@ export const enum Metric {
|
|
|
116
114
|
Mobile = 27,
|
|
117
115
|
UploadTime = 28,
|
|
118
116
|
SinglePage = 29,
|
|
119
|
-
/**
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
/**
|
|
118
|
+
* @deprecated Browser API is deprecated. Reference: https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory
|
|
119
|
+
*/
|
|
122
120
|
UsedMemory = 30,
|
|
123
121
|
Iframed = 31,
|
|
124
122
|
MaxTouchPoints = 32,
|
|
@@ -126,9 +124,9 @@ export const enum Metric {
|
|
|
126
124
|
DeviceMemory = 34,
|
|
127
125
|
Electron = 35,
|
|
128
126
|
ConstructedStyles = 36,
|
|
129
|
-
/**
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
/**
|
|
128
|
+
* @deprecated Move it to dimension as it'll report only last value
|
|
129
|
+
*/
|
|
132
130
|
InteractionNextPaint = 37,
|
|
133
131
|
HistoryClear = 38
|
|
134
132
|
}
|
|
@@ -193,9 +191,9 @@ export const enum Code {
|
|
|
193
191
|
CallStackDepth = 4,
|
|
194
192
|
Selector = 5,
|
|
195
193
|
Metric = 6,
|
|
196
|
-
/**
|
|
197
|
-
|
|
198
|
-
|
|
194
|
+
/**
|
|
195
|
+
* @deprecated No longer support ContentSecurityPolicy
|
|
196
|
+
*/
|
|
199
197
|
ContentSecurityPolicy = 7,
|
|
200
198
|
Config = 8,
|
|
201
199
|
FunctionExecutionTime = 9
|
|
@@ -270,6 +268,10 @@ export const enum Character {
|
|
|
270
268
|
Return = 13
|
|
271
269
|
}
|
|
272
270
|
|
|
271
|
+
export const enum ApplicationPlatform {
|
|
272
|
+
WebApp = 0
|
|
273
|
+
}
|
|
274
|
+
|
|
273
275
|
export const enum Constant {
|
|
274
276
|
Auto = "Auto",
|
|
275
277
|
Config = "Config",
|
|
@@ -470,7 +472,7 @@ export interface UpgradeData {
|
|
|
470
472
|
}
|
|
471
473
|
|
|
472
474
|
export interface ExtractData {
|
|
473
|
-
[key: number]: { [subkey
|
|
475
|
+
[key: number]: { [subkey: number]: string }; // Array of { subkey: number } representing the extracted data
|
|
474
476
|
}
|
|
475
477
|
|
|
476
478
|
export interface UploadData {
|
|
@@ -488,7 +490,8 @@ export interface PerformanceEventTiming extends PerformanceEntry {
|
|
|
488
490
|
duration: DOMHighResTimeStamp;
|
|
489
491
|
interactionId: number;
|
|
490
492
|
}
|
|
493
|
+
|
|
491
494
|
export interface Interaction {
|
|
492
495
|
id: number;
|
|
493
496
|
latency: number;
|
|
494
|
-
}
|
|
497
|
+
}
|
package/types/layout.d.ts
CHANGED
|
@@ -159,6 +159,7 @@ export const enum Setting {
|
|
|
159
159
|
MutationActivePeriod = 3000, // Unit: milliseconds. Let mutations continue as normal during active periods of user interactions
|
|
160
160
|
MaxMutationHistoryCount = 10000,
|
|
161
161
|
MaxMutationHistoryTime = 30000, // Unit: milliseconds. Maximum time to keep mutation history in memory
|
|
162
|
+
INPCriticalPeriod = 200 // Unit: milliseconds. Throttle less important mutations during critical periods of user interactions
|
|
162
163
|
}
|
|
163
164
|
|
|
164
165
|
export const enum StyleSheetOperation {
|