@magield/collectors 0.6.1 → 0.7.1
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/dist/behavior/recorder.d.ts +33 -0
- package/dist/behavior/recorder.js +303 -1
- package/dist/hash.d.ts +15 -0
- package/dist/hash.js +27 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -1
- package/dist/native.d.ts +39 -0
- package/dist/native.js +142 -1
- package/dist/registry.d.ts +57 -0
- package/dist/registry.js +108 -1
- package/dist/run.d.ts +10 -0
- package/dist/run.js +128 -1
- package/dist/signals/adblock.d.ts +2 -0
- package/dist/signals/adblock.js +135 -1
- package/dist/signals/apps.d.ts +2 -0
- package/dist/signals/apps.js +191 -1
- package/dist/signals/audio.d.ts +16 -0
- package/dist/signals/audio.js +63 -1
- package/dist/signals/automation.d.ts +2 -0
- package/dist/signals/automation.js +346 -1
- package/dist/signals/behavior.d.ts +17 -0
- package/dist/signals/behavior.js +31 -1
- package/dist/signals/capabilities.d.ts +2 -0
- package/dist/signals/capabilities.js +235 -1
- package/dist/signals/devices.d.ts +2 -0
- package/dist/signals/devices.js +119 -1
- package/dist/signals/display.d.ts +2 -0
- package/dist/signals/display.js +101 -1
- package/dist/signals/errors.d.ts +2 -0
- package/dist/signals/errors.js +84 -1
- package/dist/signals/features.d.ts +2 -0
- package/dist/signals/features.js +951 -1
- package/dist/signals/fonts.d.ts +2 -0
- package/dist/signals/fonts.js +128 -1
- package/dist/signals/integrity.d.ts +2 -0
- package/dist/signals/integrity.js +216 -1
- package/dist/signals/math.d.ts +2 -0
- package/dist/signals/math.js +43 -1
- package/dist/signals/navigator.d.ts +10 -0
- package/dist/signals/navigator.js +81 -1
- package/dist/signals/pointer.d.ts +2 -0
- package/dist/signals/pointer.js +93 -1
- package/dist/signals/render.d.ts +12 -0
- package/dist/signals/render.js +214 -1
- package/dist/signals/screen.d.ts +9 -0
- package/dist/signals/screen.js +80 -1
- package/dist/signals/storage.d.ts +33 -0
- package/dist/signals/storage.js +100 -1
- package/dist/signals/timezone.d.ts +9 -0
- package/dist/signals/timezone.js +63 -1
- package/dist/signals/webrtc.d.ts +2 -0
- package/dist/signals/webrtc.js +168 -1
- package/dist/stable-core.d.ts +128 -0
- package/dist/stable-core.js +187 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.js +15 -1
- package/package.json +2 -1
package/dist/signals/fonts.js
CHANGED
|
@@ -1 +1,128 @@
|
|
|
1
|
-
function F(){const Cv=['W6pcVZa4tW','WP/dKx/cJmoQfJTaE8kQm2G','WRW4WOnUAW','WOtdJgBcMSoW','WQzdygZcUW','rmoNWQNcMgO','vSoJWQlcNx8','W7JcMZq','WRvcqCk4W7u','cNNdVComq0BcPGyDW5C0WOe','W4xcSwpdSCkJ','WPVcH37dLSom','zmoxWONcSgm','mKOiD8kJ','FwymDSkT','W4JdJSkJWPNdLq','wmoAW4ldISo2','tZ3cQSkVWRS','W5NcTwNdPSopxmkN','WP/cICkeW496','gX56xmoU','yhr7W6OP','j8k+WOiYdG','WP7cGapcSgu','W5qxlJft','WOvHhgKk','FmkGn8oypq','W7LVzXlcVq','WQK5WR8UxJCwhmoDpCkiW5K','WOjMsITD','wYlcOCkz','rCoPbSoCiq','W7pcR8kcW5r3','W4JcUx7dHSow','W67cS8ksW4xcJW','smoHW5D6W70','bfRdJWC6','smkGngFcVW','W6uRWOz/zW','W6NdU8ouWPVdIa','sKxdPdRdLmkLWRtcQIpdHHNdUwW','WQdcM37dHmot','WPyaWPldOq','WRxcJSkKDCkf','WQvjywZcQq','wmkGnG','WPVcNCkcW5jQ','n2m6WPWE','ECoHWR/cNIy','sSo7W5OFWOi','gd8v','W67dTmkzWQtdJW','DcxcT8kL','W51Hrb/cVq','WPD7cMnE','b13dIqqH','WQdcHmorWPJcPa','WQFcJSkoW4rR','qwGjAa','q8oZuq7cIG','W5VcGJy4ta','W6H7W6f+ha','W5RcMdSWsW','WRZcO8oUW6uY','a0hdIbWN','WQJcHW7cKvi','dbpcV24','WRnjFhhcMW','qmo9WPGoW5q','W4vdENTY','W5aDjZnF','p8k4WR8Juq','fcKolay','WQxcJxRdJmos','W4DjENi','gbNcVxBcNG','WRPguCkPW6K','u3rs','FCkZAMxcSW','W5KwlYq','pYyilby','nsC0BCo1','ds3dOCopva','Bmo4W4BdGSoU','W54sw8kRWR0','W4RcIYddGmkO','F8oIcb3cKq','WQdcImkEW4P7','imkLWQGQgq','C8oJWQJcN2q','WRmyuaiJ','W7GMc1HQ','z8o9W5K0W5O','emkWWR8Yhq','WQVdUCoi','WPtdOCoxWOJdHW','WRFcImkTCSke','W4jfb0L/W7lcP8kKW4qLw8oo','m3NdQ8oWW6e','h3NdNCoouW','vh7dMYam','WRVcOSo0W7H+','WQVdVCovWONdKG','jYXuewu','WRyYuwNcIq','WOVcRfpdTSoi','W4DOuqJcQa','aConW5q7W5i','jK/dIaW1','mx3cVmkqWOCqh2e','mx4WWR/dSq','pmkLWRKVhW','vCo3W47dHSoI','W6pcOdW1xa','hr9G','zdNcNCk+WRW','WPueWPddTSkc','WPRdLf7dJ8oq','WPFcIqVcT3m','W7RcLJLQxW','W5ZcKG3cQM4','iNawWQtdMa','oqfKq8o/','WOz9exqa','W55gfdBcVq','WR8Ydv7dVmoRv0RcUs8xiW','dGpcOgO','W5WLstnuDcxdL8k+WOeCcW','WQmWWPnUiW','WQRdNmkHW6q','ASoOW6G2ba','qSoxW7aoW4y','FCoJWRPVkCk9W5FdIYRdKmkIA08','WPtcOWNcPM0','WPpdUCotWOhdIW','qYZcS8kKWQq','WOH3hMeq','BmoeW4eEW5S','W7e1fLPR','W5ivlcDy','DSo7W7ejWRG','W5ZdS8kcWQhdHW','xSo6WRldI24','xmkOo8oiiG','WO1ZwG','W7tdT8oBWQFcMrhcLSkc','WR/cKmkoWOzj','tZFcOuBcNCo0W60','WRTSqbBcOCk8rW','CSkOpCotpa','WRRcM3NdJCol','aCk6W60VDa','rSogFb4P','BCo3W4Wj','WRz0wXBdTq','W6GQCSkOWRu','CM3dGa','s8k5pMlcUW','qSoWqtC2','W6xdVLJdIWpdOSoiWO47WQ9VWQa','WPvbWQpdQ8km','WOmwuajH','WONcMSoLW5tdNW','pmo4WPxcO8kc','x8obW6ldT8oT','WQi8WRqQwd8Km8ovbCkwW5W','WQm6WR4SxJCcomozpmkbW7S','pSk/WRWHhG','zSkWn3RcSW','FSoOW6H/rq','ESkOW5aFWOq','WQrse8kCW68','vCk6mmkDgW','W48ZthZcNG','vSo+WRVcNx8','WPVcM3FdHW','WOpcKWBcT28','cXb6xmk3','W7mjfSknWR8','scJcTW','smkMiwxcSW','y8oMW596W7i','W4JdPmkoWQZdLG','h3qfWQtcMW','W5/cIYJdGmo7','dttdOComqW','W7BcGZW+rG','W4GAc1vR','WQvvrSk6W6G','wgRcV8kya3nda8osWQfWW51V','WQdcJmkgW4G','u8k1b3pcNa','t8oTW5pdJ8o/','W4rrggCk','W4RdUmky','WRtdRmocWOldGW','WRpcVcFcVhW','W6JdUCkBWR3dHW','vwWjFSk6','WPRcGNldJSot','WPBcRSouWQlcVq','orpcVhdcIG','WPNcNmkewmkU','WRlcJmkxW4nW','WQL3hMOl','DmoHWQJcMw8','W7pcR8kgW4HT','CxLAq8oG','h3iGWQZdGW','erJcP2FcGW','DxjOWQy1','BYpcUG','lCkJW744Dq','qwWaDmkP','vSo3WQO','WQ43WPqRqW','W5JdS8kzWQtdHa','WQfXE2hcQq','WQRdTCowWOpdIW','W5rIW79Ycq','WPHpCxFcSG','qxakECkJ','tvTCW6SL','E2Ca','amk4WQuThq','WPrjva','x2ZcUCkyc34Dj8oJWPDTW5i','sbRcP3lcG8oYW4a','WRK8WOi','DSoeW4G1WPa','WQlcM8o6W5ZdLq','h8k4W6C8','W647b1P5','WRhcOaxcL0y','aCoAW7e','CYK0ESkI','xrqanGW','lSk8W6OK','WPqEsa','WQ7dRY3cNvK','amk6W6W4Aq','acDIASo8','W5NdHb3dKCkP','w8oWW4SEWOi','esippWS','WQtcGCkOW6hdLG','FN1sqmoI','zqJcSSkJWRS','qmoUhJNcLW','ecOmnri','W6vjF3nw','WOVdM8keWQpdJq','bCo8WOhcSmk0','pG0xldi','W6fLwGhcUW','ESoLavJcPq','WPurWPddP8ke','W45Lzv5o','WQOha8oQWRi','ACoQgH7cIG','WOK2WOHGFq','v2VcImksaq','WRxcPSolWPtcPG','aCk6W6a6vW','WQCWWOKRsq','WRuvWOJdQmke','fXDYxmo/','WQxcLadcOxu','rYlcQ8kIWQ8','ESoNWQJcG2K','DbJdR8k6gG','WOCmWPJdQmky','C8oRWQhcKfa','W7WdoJHy','pWtcUMpcGq','AcJcSSkGW7y','WOlcGmkBAmkv','q8k3j2JcUa','WOFcPSokWPRcRq','W4NcIJO','vCo3W40','jqOGWRX+EZCbfCoqkSoAW74','vMWnESkA','rmoHWQ3cHsy','wSoGWQBcLMq','vSkMo8ojcq','FmkYpa','W5RcLIC9tq','gJxcU2VcGq','WRlcLSo6W5ZdLq','W6lcGtVdKq','WOnoCM9Y','adddQCoogG','W48wjZTl','W5qCjg5C','hu3dLYSW','oqTtEd4','aCk8W6a6Da','rCoaxhOs','chicWQa','mKylF8oS','ASkKngJcOG','FItcU8kvha','W5PxyZhcMa','EhftvmoY','W75LvrtcRa','hffhw8oJ','ogP/WR13','CmoRW6ddPCoU','W5VdT8kzWQJdJa','WPdcK8kjW5vQ','WPHjqmk4W6G','WPZcUCo0W6rT','ywybB8oS','Cmo8W4/dJ8o7','hxb/WQWe','W5LJW6XZaW','ySkRh8oqkq','euBdJWS'];F=function(){return Cv;};return F();}function o(T,U,h,u,I){const J={T:0x348};return b(u-J.T,I);}(function(T,U){const P={T:'qh37',U:0x6a,h:0xf1,u:0xd9,I:0xfe,i:'PjHP',R:0x16c,Z:0x160,O:0x1cb,E:0x116,z:'&xeG',p:0x63,v:0x86,K:0xb3,Y:0x118,A:'qfcq',X:0x10,G:0x5d,N:0x5e,a:0x38,C0:'bPnD',C1:0x43,C2:0x7f,C3:0x9,C4:0x51,C5:'&xeG',C6:0x182,C7:0xa1,C8:0x138,C9:0x133,CC:0x4d6,CD:0x471,CF:0x54f,Cb:'qfcq',CT:0x4e9,CU:0x43a,Ch:0x467,Cu:0x4a4,CI:'EP&g',Ci:0x4ac,CR:0x269,CZ:0x2ff,CO:0x268,CE:'PjHP',Cz:0x2a6,Cp:']Tu8',Cv:0xaf,CK:0x111,CY:0xce},w={T:0x65},c={T:0xa3},S={T:0x2ea},L={T:0x28d},H={T:0x24a};function r(T,U,h,u,I){return b(h- -H.T,T);}const h=T();function g(T,U,h,u,I){return b(T-L.T,I);}function k(T,U,h,u,I){return b(T-S.T,u);}function q(T,U,h,u,I){return b(u- -c.T,T);}function n(T,U,h,u,I){return b(T-w.T,u);}while(!![]){try{const u=-parseInt(r(P.T,-P.U,-P.h,-P.u,-P.I))/(-0x4e9+0x6b8+-0x21*0xe)*(-parseInt(r(P.i,-P.R,-P.Z,-P.O,-P.E))/(0x220*0xb+0x3*-0x71e+-0x204))+-parseInt(r(P.z,-P.p,-P.v,-P.K,-P.Y))/(-0x26b+-0x1e18+0x2*0x1043)+parseInt(r(P.A,-P.X,-P.G,-P.N,P.a))/(0x572+-0x1fe6+0x1a78)+parseInt(r(P.C0,-P.C1,-P.C2,P.C3,-P.C4))/(0x1318+0x2*-0x77b+-0x9*0x75)+-parseInt(q(P.C5,P.C6,P.C7,P.C8,P.C9))/(0x25ec+0x403+-0x29e9)*(-parseInt(k(P.CC,P.CD,P.CF,P.Cb,P.CT))/(0x1a9f*-0x1+0xc6a*-0x1+-0xa*-0x3e8))+-parseInt(k(P.CU,P.Ch,P.Cu,P.CI,P.Ci))/(0x1a9a+0xef9*0x1+0x298b*-0x1)+-parseInt(n(P.CR,P.CZ,P.CO,P.CE,P.Cz))/(0xded+0xaa6+-0x188a)*(parseInt(q(P.Cp,P.Cv,P.C7,P.CK,P.CY))/(0xc6a+-0x85d+-0x403));if(u===U)break;else h['push'](h['shift']());}catch(I){h['push'](h['shift']());}}}(F,-0x7*-0x1246+0x28e5+0x16621));const D=(function(){const a={T:0x28e,U:0x22d,h:'@WvV',u:0x2b6,I:0x1d2};let T=!![];return function(U,h){const N={T:0x38},u=T?function(){function e(T,U,h,u,I){return b(U-N.T,h);}if(h){const I=h[e(a.T,a.U,a.h,a.u,a.I)](U,arguments);return h=null,I;}}:function(){};return T=![],u;};}()),C=D(this,function(){const C9={T:0x134,U:0x1ef,h:'6mud',u:0x1a0,I:0x12a,i:0x1a6,R:0x1b6,Z:'@WvV',O:0x169,E:0x1c0,z:0x1a1,p:']AnB',v:0x1c8,K:0x189,Y:'KUaf',A:0x115,X:0x17b,G:0x17b,CC:0x1bb,CD:'8uFC',CF:0x185,Cb:0x16e,CT:0x1da,CU:0x168,Ch:0x14b,Cu:0xc9,CI:0x1f4,Ci:'EP&g',CR:0x101,CZ:0x14c,CO:'7Pr^',CE:0x128,Cz:0x9e,Cp:0x476,Cv:0x45b,CK:0x415,CY:0x37e,CA:'oX^k',CX:0x4fd,CG:0x4f0,Cr:0x4ac,Cn:0x4d9,Cg:0xec,Cq:'(nif',Ck:0x121,Ce:0x1af,Cy:0xde,Cs:0x4dd,CM:0x4e9,Cm:0x51b,CB:0x4d6,Cj:'Oq3@',Cx:0x93,Cd:0x90,CQ:'Uj9r',Co:0xd2,Cf:0x75,Ct:0x50d,CV:0x45e,CW:0x4e3,Cl:0x486,CJ:'(nif',CH:0xd5,CL:0x1c4,CS:'&xeG',Cc:0x12b,Cw:0xe6,CP:0x3dc,CN:0x43a,Ca:0x3de,D0:0x39a,D1:'2Hbb',D2:0x1fa,D3:0x1e4,D4:0x167,D5:0x159,D6:0x4,D7:'SL3X',D8:0x87,D9:0x47,DC:0x8a,DD:0x194,DF:0x178,Db:0x103,DT:0x16c,DU:0x140,Dh:0xc7,Du:0xe0,DI:0x1c8,Di:'E5!M'},C8={T:0xc},C7={T:0x2f5},C5={T:0x28d},C4={T:0x27e},C3={T:0x2cd};function s(T,U,h,u,I){return b(T- -C3.T,I);}function M(T,U,h,u,I){return b(h- -C4.T,U);}function y(T,U,h,u,I){return b(u- -C5.T,h);}const U={};U[y(-C9.T,-C9.U,C9.h,-C9.u,-C9.I)]=function(u,I){return u!==I;};function B(T,U,h,u,I){return b(h-C7.T,I);}U[y(-C9.i,-C9.R,C9.Z,-C9.O,-C9.E)]=M(-C9.z,C9.p,-C9.T,-C9.v,-C9.E)+M(-C9.K,C9.Y,-C9.A,-C9.X,-C9.G)+'+$';function m(T,U,h,u,I){return b(u-C8.T,h);}const h=U;if(h[M(-C9.CC,C9.CD,-C9.CF,-C9.Cb,-C9.CT)](C[s(-C9.CU,-C9.Ch,-C9.Cu,-C9.CI,C9.Ci)]()[m(C9.CR,C9.CZ,C9.CO,C9.CE,C9.Cz)+B(C9.Cp,C9.Cv,C9.CK,C9.CY,C9.CA)]()[B(C9.CX,C9.CG,C9.Cr,C9.Cn,C9.CA)+'Of']('\x0a'),-(0x1*-0x1a3d+-0x15a8+0x2*0x17f3)))return;return C[M(-C9.Cg,C9.Cq,-C9.Ck,-C9.Ce,-C9.Cy)+B(C9.Cs,C9.CM,C9.Cm,C9.CB,C9.Cj)]()[y(-C9.Cx,-C9.Cd,C9.CQ,-C9.Co,-C9.Cf)+'h'](h[B(C9.Ct,C9.CV,C9.CW,C9.Cl,C9.CJ)])[y(-C9.CH,-C9.CL,C9.CS,-C9.Cc,-C9.Cw)+B(C9.CP,C9.CN,C9.Ca,C9.D0,C9.D1)]()[m(C9.D2,C9.D3,C9.CD,C9.D4,C9.D5)+M(-C9.D6,C9.D7,-C9.D8,-C9.D9,-C9.DC)+'r'](C)[s(-C9.DD,-C9.DF,-C9.Db,-C9.DT,C9.CS)+'h'](h[s(-C9.DU,-C9.Dh,-C9.Du,-C9.DI,C9.Di)]);});function d(T,U,h,u,I){const CC={T:0x16f};return b(u- -CC.T,T);}C();import{hash}from'../hash.js';const BASELINES=[j('!6E*',0x1eb,0xe7,0x114,0x169)+j('Uj9r',0x22a,0x242,0x246,0x1e9),j('8uFC',0x2af,0x30d,0x2f9,0x270)+x(0x186,'mZ3Z',0x18f,0xfa,0x21f),x(0x90,'BHg]',-0x2,0x10d,0x1)];function j(T,U,h,u,I){const CD={T:0x78};return b(I-CD.T,T);}const CANDIDATES=[Q(-0x29d,'E5!M',-0x221,-0x191,-0x29b)+Q(-0xbc,'(NIz',-0x132,-0x179,-0x124)+d('6mud',0x10d,0xce,0x71,0x18),x(0x128,'8uFC',0xb9,0x176,0x1a7)+d('Oq3@',-0x6b,0x2c,-0x1b,0x9)+o(0x591,0x4bc,0x518,0x504,'qh37')+'ji',o(0x5c1,0x564,0x4cd,0x543,'nKZi')+o(0x4cf,0x4b2,0x414,0x47e,'EP&g')+'c',o(0x4d7,0x528,0x53c,0x4b4,'nKZi')+'r',Q(-0x1c3,'v#1d',-0x21c,-0x1cc,-0x242)+Q(-0x9c,'qh37',-0x12c,-0x113,-0x1b7)+'e',x(0x163,'8lDD',0x1a7,0x1ec,0x150)+Q(-0x1d5,'(NIz',-0x1da,-0x172,-0x1c6),Q(-0x235,'qfcq',-0x1f6,-0x185,-0x17b)+o(0x4bd,0x52a,0x548,0x50a,'(NIz'),d('@WvV',0xed,0x9c,0xa5,0x25)+'n',x(0x173,'mZ3Z',0x102,0x171,0x17d)+x(0xeb,'qfcq',0x150,0x51,0x179)+'e',x(0xdf,'6mud',0x16e,0x76,0x108),o(0x485,0x41d,0x46e,0x488,'wKEu')+'a',o(0x555,0x566,0x4df,0x555,'Oq3@')+'a',x(0x65,'88M3',0xd3,-0x10,0xe5)+Q(-0x125,'crSo',-0x13c,-0x14b,-0xa7)+Q(-0x1e9,']AnB',-0x210,-0x1a3,-0x292),d('2Hbb',-0x10,0x58,-0x20,-0x24)+d('xcRG',0x22,0x71,0x67,0xfc),Q(-0x19a,'qh37',-0x1ca,-0x1f4,-0x1be)+x(0x64,'BHg]',0x94,0xd0,0xa2)+'xt',j('@k)&',0x196,0x234,0x208,0x213)+d('ELgT',0x71,0xec,0x74,0x3c),x(0x138,'6Hp4',0xab,0x144,0xb0)+Q(-0x228,'!6E*',-0x243,-0x2aa,-0x2c3)+'t',o(0x582,0x517,0x4d6,0x55b,'(NIz'),Q(-0x13f,'WrC4',-0x1b5,-0x23c,-0x1fb)+'o',x(0xbf,']Tu8',0xf3,0x5f,0x66)+'a',d('&xeG',0x3e,0x10,0xd,-0x5b)+'us',j('&xeG',0x21d,0x1a1,0x2a0,0x23b)+'o',d('bPnD',-0xd4,-0xb7,-0x80,-0xab),o(0x4cd,0x43c,0x3bc,0x453,'CTY5')+'no',o(0x4e0,0x466,0x432,0x462,'FuCW')+Q(-0xf7,'8lDD',-0x188,-0x1bb,-0x1d8)+'k',o(0x52c,0x57d,0x577,0x524,'xcRG')+x(0x55,'BHg]',0xc2,0xd0,0x21)+'t',x(0xd9,'7Pr^',0x139,0x148,0x15f)+'ri',d(']Tu8',0x29,-0x6,0x5f,0x2e)+'ia',Q(-0x215,'sbYg',-0x187,-0x177,-0x16b)+'ra',x(0x108,'!7AT',0xf5,0xac,0x17f)+j('KUaf',0x27b,0x276,0x24f,0x21d),j('gBCm',0x197,0x1f6,0x147,0x1b6)+o(0x529,0x48d,0x4c7,0x4f4,'wKEu'),d('l)n4',-0x51,0xd1,0x40,-0x17)+'l',o(0x424,0x43d,0x477,0x4c2,'mZ3Z')+'a',o(0x56b,0x49b,0x52c,0x4eb,'8lDD')+Q(-0x1ad,')xHc',-0x22a,-0x254,-0x25f)+x(0x11d,'(nif',0x120,0xb1,0xce)+x(0xcf,'qh37',0xa7,0x87,0x140)+'um',d('2Hbb',0x6b,-0x2d,0x24,0xab)+d('WrC4',-0x71,0x1a,-0x21,-0x90),o(0x583,0x52c,0x545,0x55e,'88M3')+'i',o(0x5d7,0x558,0x549,0x558,'FuCW')+'ia',d('H2MM',0xa,-0xe3,-0x6d,-0xd8)+j(')xHc',0x2c3,0x24d,0x27f,0x296)+d('3EcT',-0x14,-0xa8,-0x3f,-0x2c)+o(0x4d4,0x513,0x496,0x49a,'qh37'),Q(-0x211,'crSo',-0x17a,-0xdd,-0x1f8)+'t',Q(-0x232,'CTY5',-0x233,-0x2bc,-0x291)+o(0x47e,0x4ce,0x3f5,0x434,')xHc'),d('nKZi',-0x29,-0x90,-0x52,-0xc6)+d('xcRG',0xaf,0x6a,0x84,0x3d)+d('3EcT',0xa7,0x4,0xa,-0x52),j('oX^k',0x192,0x199,0x193,0x1ba)+Q(-0x1d4,')xHc',-0x1f1,-0x163,-0x15c)+x(0x59,'8lDD',-0x19,0xb6,-0x47),j('WrC4',0x173,0x1b9,0x200,0x1fb)+o(0x4f4,0x4a2,0x561,0x4f6,'Ikp(')+j('qh37',0x2de,0x246,0x22b,0x26e),o(0x40a,0x4f4,0x446,0x4a2,'gBCm')+x(0x5a,'Oq3@',-0x10,0x72,0xee)+o(0x575,0x51b,0x560,0x4f2,'PjHP')+x(0x9a,'crSo',0x94,-0x3,0xcc),j('EP&g',0x22e,0x211,0x159,0x18e)+d('sbYg',0x69,-0x56,-0x29,0x4),d('8uFC',0x4,-0x75,0x29,0x55)+'li',o(0x46d,0x4bb,0x48a,0x44c,'PY2K')+Q(-0x28e,'EP&g',-0x22d,-0x2a0,-0x1b7)+d('xcRG',0x32,-0x98,0x5,0x9b),o(0x3fa,0x3ec,0x4ce,0x46f,'WrC4')+'tt',j('l034',0x278,0x2ec,0x2f1,0x29b)+x(0x8a,'@WvV',0x91,0xb4,0x70)+o(0x5b0,0x547,0x4e8,0x531,'BHg]')+x(0x184,'@WvV',0x13a,0x1e1,0xe5),d('bPnD',0x56,-0x28,0x6f,0xa)+Q(-0x185,']AnB',-0x13b,-0x194,-0x170)+o(0x565,0x510,0x591,0x4f9,'&xeG')+Q(-0x1a4,']Tu8',-0x140,-0xa5,-0x1df),d('@WvV',-0xac,-0x95,-0x5a,0x10)+d('Oq3@',0x36,0x47,-0x2e,-0xbf)+o(0x59b,0x5ba,0x58f,0x56d,'0bK)'),d('bPnD',-0x5e,0x1a,-0x60,-0x42)+Q(-0x1a0,']AnB',-0x1e9,-0x262,-0x233)+'tB',Q(-0x184,'bPnD',-0x209,-0x1e6,-0x293)+j('PjHP',0x1d5,0x22b,0x126,0x1a4)+d('3EcT',-0x59,-0x1c,0x28,-0xc),j('qh37',0x1a0,0x232,0x186,0x208)+o(0x56e,0x4d5,0x563,0x4d3,'8lDD')+'xt',Q(-0xdf,'qfcq',-0x118,-0x1b5,-0x166)+j('j#5p',0x286,0x259,0x206,0x1ee),Q(-0x1e7,'oX^k',-0x1a0,-0x238,-0x110)+Q(-0x1f7,'8lDD',-0x1d0,-0x176,-0x135)+d('3EcT',0x36,-0x34,0x20,-0x77)+'pe',d('Oq3@',0xed,0x8a,0xad,0xaa)+Q(-0xd8,'H2MM',-0x163,-0x17f,-0x113),j('v#1d',0x1f7,0x2bd,0x249,0x287)+'n',o(0x513,0x5ac,0x4d3,0x56f,'(nif'),d('KUaf',0x14,0xc0,0x37,0xa1)+'en',j('KUaf',0x1cf,0x2c7,0x2db,0x245)+'a',x(0x7a,'SL3X',0x36,0x44,0x49)+d('j#5p',-0xb6,-0x5d,-0x34,-0x44)+'MS',d('2Hbb',0xc1,0x36,0x83,0x11f)+j(']Tu8',0x290,0x207,0x1a2,0x1f3),o(0x503,0x4ce,0x507,0x4ef,'7Pr^')+o(0x499,0x561,0x471,0x510,'gBCm'),x(0x14b,'nKZi',0x114,0xe0,0x1b1)+d('@k)&',0x107,0xd0,0x8a,0x81)+j('8uFC',0x179,0x120,0x1f0,0x1b2)+'le',d(')xHc',-0x32,0x31,-0x63,-0xbf)+o(0x431,0x4c0,0x447,0x463,']Tu8')+d('Oq3@',0xdf,0x98,0xb5,0x9b)+d('s@f%',-0x3a,0x2b,-0x49,-0x90),Q(-0x12d,'ELgT',-0x18f,-0x20d,-0x184)+d(']Tu8',0xe,0x59,0xab,0x32),Q(-0x1b8,']Tu8',-0x226,-0x194,-0x1bb)+d('Oq3@',-0xad,0x62,-0x3b,-0x9)+Q(-0x219,'Uj9r',-0x229,-0x289,-0x1eb),d('gBCm',0xa5,0x49,0x6,0x21)+d('2Hbb',0x36,-0x7a,-0x30,-0xb)+Q(-0x18d,'mZ3Z',-0x166,-0x133,-0x11d)+'r',x(0x57,'6Hp4',0xc6,0x78,0x46)+x(0xfb,'88M3',0x95,0x169,0x163),o(0x537,0x558,0x474,0x4ec,'(nif')+o(0x46b,0x434,0x562,0x4d1,'FuCW'),x(0x89,'Oq3@',0xe2,0xa9,0x106)+x(0xcd,'xcRG',0x154,0x12f,0xae)+'s',Q(-0x2ab,'@WvV',-0x222,-0x259,-0x1ad)+Q(-0x1ef,']AnB',-0x240,-0x231,-0x279)+'if',o(0x444,0x52a,0x512,0x48b,'j#5p')+o(0x4b7,0x5ad,0x52f,0x551,'mZ3Z'),o(0x554,0x4d4,0x45f,0x4e5,'CTY5')+d('WrC4',0xd0,0xf6,0x92,0x23)+d('mZ3Z',0x2e,-0x43,-0x6c,-0xc1),x(0xc8,'xcRG',0xb7,0x136,0x43)+x(0xd2,'sbYg',0x59,0x5d,0xec)+Q(-0x1d6,'3EcT',-0x246,-0x24a,-0x296),d('bPnD',-0x53,0x1b,-0x77,0x11)+o(0x4c0,0x49e,0x504,0x4e1,'PjHP')+x(0xce,'gBCm',0x67,0x13b,0xca)+'f',o(0x4f6,0x474,0x4ee,0x480,'88M3')+x(0x14e,'Uj9r',0xc2,0x1a2,0xb0)+'an',x(0xde,'@WvV',0x92,0x6b,0x82)+d('Oq3@',0x2d,0x95,0x12,0xa),Q(-0x212,'6mud',-0x23f,-0x2d8,-0x2c8)+'u',x(0x99,'s@f%',0x47,0x35,0xba)+j('Oq3@',0x22f,0x21a,0x1e1,0x1cd)+'n',x(0x109,'6Hp4',0xb9,0xbf,0x9d)+Q(-0x148,'gBCm',-0x125,-0x12c,-0x95),Q(-0x127,'qh37',-0x15d,-0x16d,-0x156)+'o',Q(-0xe5,'!7AT',-0x152,-0x1df,-0xfe)+d('l034',-0x8,-0x53,-0x24,-0x7c)+Q(-0x166,'SL3X',-0x17b,-0x10f,-0x190)];function Q(T,U,h,u,I){const CF={T:0x33a};return b(h- -CF.T,U);}function b(C,D){C=C-(-0xb1e+0x212d+-0x1526);const T=F();let U=T[C];if(b['KbXPgA']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0xf*0x244+0xb*-0x182+0x3292;})['indexOf']('\x0a')!==-(-0x2574+-0x2399+0x1*0x490e);for(let v=-0x1dad+0x1794+0xdf*0x7,K,Y,A=-0x1450+-0x1d56+-0x9b*-0x52;Y=R['charAt'](A++);~Y&&(K=v%(-0x1*-0x1375+0x3*0x141+-0xb9a*0x2)?K*(-0x20dd+-0x13c*0x1b+0x4271)+Y:Y,v++%(-0xad3*-0x3+-0x61b*0x1+-0xd2d*0x2))?O+=p||z['charCodeAt'](A+(-0x2215*-0x1+0x7*-0x26d+-0x1110))-(-0x1de9+-0x1400+0x31f3)!==-0x4*0x949+-0x183+0x26a7?String['fromCharCode'](0x1199+0x982+0x4*-0x687&K>>(-(0x377+-0x1261+0x1*0xeec)*v&0x19a4+-0x2080+0x371*0x2)):v:-0x244d*-0x1+0x21b+-0x2668){Y=Z['indexOf'](Y);}for(let X=-0x1355+0x5df+0xd76,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](0x1*-0x253d+-0x1*-0x1c34+-0x89*-0x11))['slice'](-(-0x888+0x132f+-0xaa5));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=0x416+-0x211b+0x1d05,z,p='';R=h(R);let v;for(v=0x1c6*0x2+0xe*-0x85+0x3ba;v<0x14f8+-0x2*0x112a+0xe5c;v++){O[v]=v;}for(v=-0x5ff*0x1+0x907*-0x1+-0x2*-0x783;v<0x5a2*0x1+-0x20a+0x2*-0x14c;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(-0x1813+-0x1e2a+0x373d),z=O[v],O[v]=O[E],O[E]=z;}v=0x2e6*-0xc+0x23bd+-0xf5,E=-0x2d2+0x10dc+-0x257*0x6;for(let K=0x2*-0x8ec+-0x19f*0x7+0x1d31;K<R['length'];K++){v=(v+(-0x1*0x316+-0x1*0x19f9+0xf8*0x1e))%(-0x2535+0xe77+0x6*0x3f5),E=(E+O[v])%(-0x1*-0x25a6+0x3*-0xb87+-0x211),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(0x35*-0x9d+-0x18dc+0x3a5d)]);}return p;};b['pyjGjN']=i,b['TRVaDs']={},b['KbXPgA']=!![];}const u=T[0x3*0x679+0x428+0x5*-0x4b7];b['vZWhwr']!==u&&(b['TRVaDs']={},b['vZWhwr']=u);const I=b['TRVaDs'][C];if(I===undefined){if(b['uYQSSi']===undefined){const R=function(Z){this['yAwXmz']=Z,this['hUkxdb']=[-0x9d5+-0x135*-0xf+0x49*-0x1d,0x39*0x17+0x1dee+-0x230d,0x1d62+0x104a+-0x2dac],this['cnpILI']=function(){return'newState';},this['yDlbXy']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['SVGqIT']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['WoOHfG']=function(){const Z=new RegExp(this['yDlbXy']+this['SVGqIT']),O=Z['test'](this['cnpILI']['toString']())?--this['hUkxdb'][0x179+-0x1cca+-0x21a*-0xd]:--this['hUkxdb'][-0xa8*0x21+0x7*0x409+0x1*-0x697];return this['BXGZNF'](O);},R['prototype']['BXGZNF']=function(Z){if(!Boolean(~Z))return Z;return this['QDSRzE'](this['yAwXmz']);},R['prototype']['QDSRzE']=function(Z){for(let O=0x6*0xdf+0xe07+-0x1341,E=this['hUkxdb']['length'];O<E;O++){this['hUkxdb']['push'](Math['round'](Math['random']())),E=this['hUkxdb']['length'];}return Z(this['hUkxdb'][0x518*0x5+-0x4*0x2c6+-0x4*0x398]);},(''+function(){return-0x572+-0x1*0x1963+0x1ed5;})['indexOf']('\x0a')===-(-0x1d*-0xee+-0x1*0x2597+0xaa2)&&new R(b)['WoOHfG'](),b['uYQSSi']=!![];}U=b['pyjGjN'](U,D),b['TRVaDs'][C]=U;}else U=I;return U;}const PROBE=o(0x3af,0x449,0x4b0,0x449,'3EcT')+d('KUaf',0x117,0x51,0xb2,0x74)+j('gBCm',0x25f,0x270,0x2d5,0x251)+Q(-0x1c5,'&xeG',-0x203,-0x23a,-0x1e4)+d('2Hbb',-0x57,0x9,-0x65,-0x65)+o(0x535,0x535,0x473,0x4f1,']Tu8')+'89';function x(T,U,h,u,I){const Cb={T:0x99};return b(T- -Cb.T,U);}export const fontsCollector={'id':j('sbYg',0x23a,0x23b,0x1f7,0x1ff),'wave':d('E5!M',-0x22,0x13,0x27,0x13),'optional':!![],'collect'({document:U,window:h}){const Cp={T:0xc6,U:0x149,h:'!7AT',u:0x13f,I:0x108,i:0xdf,R:0xa1,Z:'gBCm',O:0xaf,E:0xa1,z:0x5c,p:0xcc,v:'l034',K:0xc9,Y:0x99,A:0xaa,X:0x111,G:'E5!M',Cv:0x145,CK:0x93,CY:0x251,CA:0x26d,CX:0x267,CG:0x2cb,Cr:'sbYg',Cn:0x28f,Cg:0x1d7,Cq:0x220,Ck:0x1ca,Ce:'nKZi',Cy:0x279,Cs:0x1b7,CM:0x206,Cm:'(NIz',CB:0x206,Cj:0x282,Cx:0x1e0,Cd:0x233,CQ:'(nif',Co:0x3a7,Cf:0x3c4,Ct:0x36c,CV:0x3a8,CW:'&xeG',Cl:0x38c,CJ:0x366,CH:0x400,CL:0x3b7,CS:0x28f,Cc:0x2aa,Cw:'CTY5',CP:0x283,CN:0x319,Ca:0x1f4,D0:0x294,D1:'@WvV',D2:0x1b9,D3:0x1ba,D4:0x1e0,D5:0x161,D6:0x270,D7:0x259,D8:0x20e,D9:0x193,DC:0x298,DD:0x22f,DF:0x1f2,Db:'wKEu',DT:0xd0,DU:0xc2,Dh:'(NIz',Du:0x9b,DI:0x66,Di:0x37b,DR:0x3ae,DZ:0x412,DO:0x3ca,DE:'@k)&',Dz:0x204,Dp:0x2c7,Dv:0x227,DK:0x1ff,DY:'(nif',DA:0x2a1,DX:0x1fb,DG:0x229,Dr:0x24a,Dn:'H2MM',Dg:0x33d,Dq:0x40f,Dk:0x41a,De:0x3b8,Dy:'6mud',Ds:0x39,DM:0x81,Dm:'WrC4',DB:0xc5,Dj:0x14,Dx:0x278,Dd:0x266,DQ:0x1ee,Do:0x27f,Df:')xHc',Dt:0x2e9,DV:0x2df,DW:0x2ad,Dl:0x234,DJ:'Uj9r',DH:0x79,DL:0x4b,DS:'l)n4',Dc:0x12,Dw:0x19,DP:0x10f,DN:0xff,Da:0xd7,F0:0x51,F1:0xad,F2:'FuCW',F3:0x9a,F4:0x90,F5:0x261,F6:0x1ff,F7:0x2ce,F8:'KUaf',F9:0x346,FC:0x309,FD:0x39b,FF:0x363,Fb:']AnB',FT:0x1e4,FU:0x152,Fh:0x19c,Fu:0x1da,FI:'j#5p',Fi:0x3f2,FR:0x3bc,FZ:0x302,FO:0x384,FE:'SL3X',Fz:0x2a4,Fp:0x2f3,Fv:0x246,FK:0x29b,FY:0x5a,FA:'FuCW',FX:0x7b,FG:0x2c,Fr:0x91,Fn:0xd2,Fg:0xc5,Fq:0xea,Fk:0x29a,Fe:0x2c9,Fy:0x2ae,Fs:0x210,FM:0x368,Fm:0x3aa,FB:0x33b,Fj:0x393,Fx:'SL3X',Fd:0x2b0,FQ:0x2e6,Fo:0x2d1,Ff:0x23e,Ft:0x147,FV:0xec,FW:'@WvV',Fl:0xe8,FJ:0x76,FH:0x2e,FL:0x6,FS:'CTY5',Fc:0x73,Fw:0x233,FP:0x299,FN:0x235,Fa:0x202,b0:'gBCm',b1:0x76,b2:0x9f,b3:'@WvV',b4:0x23e,b5:0x21c,b6:0x1e5,b7:0x158,b8:'8lDD',b9:0x2a0,bC:0x32a,bD:0x265,bF:0x31b,bb:'sbYg',bT:0xb6,bU:0x136,bh:'H2MM',bu:0x1c6,bI:0x121,bi:0x274,bR:0x284,bZ:0x2c0,bO:0x34d,bE:'bPnD',bz:0x4e,bp:0x2d,bv:'gBCm',bK:0x7d,bY:0x40,bA:0x14d,bX:'oX^k',bG:0xaa,br:0x178,bn:0x1d2,bg:0x1d5,bq:'mZ3Z',bk:0x93,be:0x7,by:']Tu8',bs:0x76,bM:0xa1,bm:0xbe,bB:0xb3,bj:'8uFC',bx:0xbd,bd:0x380,bQ:0x3e0,bo:0x305,bf:0x381,bt:']Tu8',bV:0x1c5,bW:0x207,bl:0x1e4,bJ:0x146,bH:'KUaf',bL:0x2fe,bS:0x379,bc:0x2ec,bw:'xcRG',bP:0x100,bN:0x128,ba:'Uj9r',T0:0x1c2,T1:0x19e,T2:0x13e,T3:0xe4,T4:'PY2K',T5:0xde,T6:0x102,T7:0x216,T8:0x124,T9:0x151,TC:'FuCW',TD:0x17f,TF:0x19a,Tb:0x20f,TT:'bPnD',TU:0x370,Th:0x2ad,Tu:0x379,TI:0x2ef,Ti:0x8c,TR:0xc,TZ:0x9d,TO:0x94,TE:0x1af,Tz:0x174,Tp:0x20b,Tv:0x131,TK:0x20,TY:0x6d,TA:0x28,TX:0xc0,TG:0x32d,Tr:0x285,Tn:0x316,Tg:0x30e,Tq:0x3a,Tk:0x60,Te:'s@f%',Ty:0x47,Ts:0xd6,TM:0x5d,Tm:0xfa,TB:0x1c8,Tj:0x163,Tx:0x51,Td:0x1f,TQ:0x12,To:0x0,Tf:0x7b,Tt:0xf2,TV:0x6c,TW:0xb3,Tl:0x304,TJ:0x2f8,TH:0x399,TL:0x391,TS:'8lDD',Tc:0x313,Tw:0x3ac,TP:0x3af,TN:0x325,Ta:0x54,U0:0xb2,U1:0x89,U2:0xcd,U3:0x305,U4:0x352,U5:0x36a,U6:0x31d,U7:0x14b,U8:0x184,U9:0x1c6,UC:'nKZi',UD:0x2e5,UF:0x3cc,Ub:0x2b5,UT:0x34f,UU:'!6E*',Uh:0x1a,Uu:'(nif',UI:0x22,Ui:0x245,UR:0x1f0,UZ:0x1c8,UO:'l034',UE:0xc7,Uz:0x3f,Up:'PjHP',Uv:0x26,UK:0x63,UY:0x87,UA:0xbf,UX:0xf3,UG:0x1be,Ur:0x1d8,Un:0x18c,Ug:'7Pr^',Uq:0x17f,Uk:0x139,Ue:0xb8,Uy:0x117,Us:0x1da,UM:0x273,Um:0x1e2,UB:0x1d0,Uj:'6mud',Ux:0xfa,Ud:0x92,UQ:0x9,Uo:0x25,Uf:0x42,Ut:0x3f,UV:'xcRG',UW:0x97,Ul:0x8,UJ:0x10e,UH:'crSo',UL:0x91,US:0x25d,Uc:0x224,Uw:0x271,UP:0x2ca,UN:0x27e,Ua:0x2d8,h0:0x270,h1:'3EcT',h2:0xeb,h3:0x70,h4:0x4,h5:0x24,h6:0xd5,h7:0x143,h8:'3EcT',h9:0x113,hC:0x198,hD:0x294,hF:0x35d,hb:0x303,hT:0x1a5,hU:0x22d,hh:0x188,hu:0x1b8,hI:0x176,hi:0x18f,hR:'crSo',hZ:0x416,hO:0x39a,hE:0x3c8,hz:0x3d2,hp:0x1ea,hv:0x264,hK:0x1b0,hY:0x165,hA:0x363,hX:0x39e,hG:0x342,hr:0x377,hn:'qh37',hg:0x42f,hq:0x3d8,hk:0x426,he:0x3b2,hy:'oX^k',hs:0x2c1,hM:0x312,hm:0x2fb,hB:'v#1d',hj:0x24d,hx:0x1f6,hd:'0bK)',hQ:0x32f,ho:0x301,hf:0x268,ht:0x304,hV:0x1cd,hW:0x1fd,hl:0x1ee,hJ:0x1c4,hH:'6Hp4',hL:0x2a9,hS:0x2d0,hc:0x32b,hw:0x2f4,hP:'E5!M',hN:0x18,ha:0xdd,u0:0xf5},Cz={T:0x31c,U:0x10a,h:0x1ee,u:0x1ab},CE={T:0x336,U:0xa3,h:0x14d,u:0x86},CO={T:0x260,U:0x53,h:0x1cb,u:0x1e3},CZ={T:0x6d,U:0x53,h:0x43,u:0x1c6},CR={T:0x1a6,U:0xcf,h:0x1d9,u:0x100},u={'SYBAe':f(-Cp.T,-Cp.U,Cp.h,-Cp.u,-Cp.I),'Dmcnb':f(-Cp.i,-Cp.R,Cp.Z,-Cp.O,-Cp.E),'MKyDj':function(R,Z){return R+Z;},'xcqCd':f(-Cp.z,-Cp.p,Cp.v,-Cp.K,-Cp.Y)+f(-Cp.A,-Cp.X,Cp.G,-Cp.Cv,-Cp.CK)+V(-Cp.CY,-Cp.CA,-Cp.CX,-Cp.CG,Cp.Cr)+W(-Cp.Cn,-Cp.Cg,-Cp.Cq,-Cp.Ck,Cp.Ce)+W(-Cp.Cy,-Cp.Cs,-Cp.CY,-Cp.CM,Cp.Cm)+V(-Cp.CB,-Cp.Cj,-Cp.Cx,-Cp.Cd,Cp.CQ)+t(Cp.Co,Cp.Cf,Cp.Ct,Cp.CV,Cp.CW)+t(Cp.Cl,Cp.CJ,Cp.CH,Cp.CL,Cp.CQ)+W(-Cp.CG,-Cp.CS,-Cp.Cd,-Cp.Cc,Cp.Cw)+V(-Cp.CP,-Cp.CN,-Cp.Ca,-Cp.D0,Cp.D1)+W(-Cp.D2,-Cp.D3,-Cp.D4,-Cp.D5,Cp.D1)+V(-Cp.D6,-Cp.Cc,-Cp.D7,-Cp.D8,Cp.G)+';','cCvBT':W(-Cp.D9,-Cp.DC,-Cp.DD,-Cp.DF,Cp.Db)+f(-Cp.DT,-Cp.DU,Cp.Dh,-Cp.Du,-Cp.DI)+t(Cp.Di,Cp.DR,Cp.DZ,Cp.DO,Cp.DE)+W(-Cp.Dz,-Cp.Dp,-Cp.Dv,-Cp.DK,Cp.DY)+W(-Cp.DA,-Cp.DX,-Cp.DG,-Cp.Dr,Cp.Dn)+t(Cp.Dg,Cp.Dq,Cp.Dk,Cp.De,Cp.Dy)+f(-Cp.Ds,-Cp.DM,Cp.Dm,-Cp.DB,Cp.Dj)+W(-Cp.Dx,-Cp.Dd,-Cp.DQ,-Cp.Do,Cp.Df)+W(-Cp.Dt,-Cp.DV,-Cp.DW,-Cp.Dl,Cp.DJ)+f(-Cp.DH,-Cp.DL,Cp.DS,-Cp.Dc,-Cp.Dw)+'ap','dtCxj':l(Cp.DP,Cp.DN,Cp.Z,Cp.DU,Cp.Da),'VTwDy':function(R,Z){return R===Z;},'zMDjf':function(R,Z){return R===Z;},'cXHTw':function(R,Z){return R!==Z;},'osLDI':f(-Cp.F0,-Cp.F1,Cp.F2,-Cp.F3,-Cp.F4)+V(-Cp.F5,-Cp.F6,-Cp.F7,-Cp.DK,Cp.F8)+'t','xiOyN':t(Cp.F9,Cp.FC,Cp.FD,Cp.FF,Cp.Fb)+W(-Cp.FT,-Cp.FU,-Cp.Fh,-Cp.Fu,Cp.FI)+'ed','RbJmf':t(Cp.Fi,Cp.FR,Cp.FZ,Cp.FO,Cp.FE)+V(-Cp.Fz,-Cp.Fp,-Cp.Fv,-Cp.FK,Cp.Dn),'ZcVzJ':function(R,Z){return R(Z);},'CJvtM':function(R,Z){return R/Z;},'LrJFt':f(-Cp.FY,-Cp.F1,Cp.FA,-Cp.FX,-Cp.FG)+f(-Cp.Fr,-Cp.Fn,Cp.Df,-Cp.Fg,-Cp.Fq)+'o'};function f(T,U,h,u,I){return x(U- -CR.T,h,h-CR.U,u-CR.h,I-CR.u);}const I={};let i;function l(T,U,h,u,I){return x(U- -CZ.T,h,h-CZ.U,u-CZ.h,I-CZ.u);}function t(T,U,h,u,I){return x(u-CO.T,I,h-CO.U,u-CO.h,I-CO.u);}function V(T,U,h,u,I){return x(T- -CE.T,I,h-CE.U,u-CE.h,I-CE.u);}try{i=U[V(-Cp.Fk,-Cp.Fe,-Cp.Fy,-Cp.Fs,Cp.Ce)+t(Cp.FM,Cp.Fm,Cp.FB,Cp.Fj,Cp.Fx)+V(-Cp.Fd,-Cp.FQ,-Cp.Fo,-Cp.Ff,Cp.Fb)](u[f(-Cp.Ft,-Cp.FV,Cp.FW,-Cp.Fl,-Cp.FJ)]),i[l(Cp.FH,-Cp.FL,Cp.FS,-Cp.Fc,Cp.FX)+W(-Cp.Fw,-Cp.FP,-Cp.FN,-Cp.Fa,Cp.b0)+'te'](u[f(-Cp.b1,-Cp.b2,Cp.b3,-Cp.Fq,-Cp.FH)],u[W(-Cp.b4,-Cp.b5,-Cp.b6,-Cp.b7,Cp.b8)](u[V(-Cp.b9,-Cp.bC,-Cp.bD,-Cp.bF,Cp.bb)],u[f(-Cp.bT,-Cp.bU,Cp.bh,-Cp.bu,-Cp.bI)])),U[W(-Cp.bi,-Cp.bR,-Cp.bZ,-Cp.bO,Cp.bE)][f(Cp.bz,-Cp.bp,Cp.bv,-Cp.bK,-Cp.bY)+f(-Cp.bA,-Cp.Fl,Cp.bX,-Cp.bG,-Cp.br)+'d'](i);const R={},Z={};for(const z of BASELINES){const p=U[V(-Cp.bn,-Cp.Ff,-Cp.DD,-Cp.bg,Cp.bq)+l(Cp.bk,-Cp.be,Cp.by,-Cp.bs,-Cp.bM)+l(Cp.bm,Cp.bB,Cp.bj,Cp.bx,Cp.Da)](u[t(Cp.bd,Cp.bQ,Cp.bo,Cp.bf,Cp.bt)]);p[V(-Cp.bV,-Cp.bW,-Cp.bl,-Cp.bJ,Cp.bH)][t(Cp.bL,Cp.bS,Cp.bL,Cp.bc,Cp.bw)+f(-Cp.bP,-Cp.bN,Cp.ba,-Cp.T0,-Cp.T1)]=z,p[l(Cp.T2,Cp.T3,Cp.T4,Cp.T5,Cp.T6)+V(-Cp.Cs,-Cp.T7,-Cp.T8,-Cp.T9,Cp.TC)+'t']=PROBE,i[W(-Cp.D2,-Cp.TD,-Cp.TF,-Cp.Tb,Cp.TT)+t(Cp.TU,Cp.Th,Cp.Tu,Cp.TI,Cp.F2)+'d'](p),R[z]=p;const v={};v['w']=p[l(-Cp.Ti,Cp.TR,Cp.bj,Cp.TZ,Cp.TO)+V(-Cp.TE,-Cp.Tz,-Cp.Tp,-Cp.Tv,Cp.v)+'h'],v['h']=p[f(-Cp.TK,-Cp.TY,Cp.G,-Cp.TA,-Cp.TX)+t(Cp.TG,Cp.Tr,Cp.Tn,Cp.Tg,Cp.Dm)+'ht'],Z[z]=v;}const O=[];for(const K of CANDIDATES){let Y=![];for(const A of BASELINES){const X=R[A],G=Z[A];if(u[f(-Cp.Tq,-Cp.Tk,Cp.Te,-Cp.Ty,-Cp.FV)](X,undefined)||u[f(-Cp.Ts,-Cp.TM,Cp.DE,-Cp.bx,-Cp.Tm)](G,undefined))continue;X[V(-Cp.TB,-Cp.Fh,-Cp.bu,-Cp.Tj,Cp.bX)][l(Cp.Tx,Cp.Td,Cp.bw,-Cp.TQ,Cp.To)+f(-Cp.Tf,-Cp.Tt,Cp.D1,-Cp.TV,-Cp.TW)]='\x27'+K+'\x27,'+A;(u[t(Cp.Tl,Cp.TJ,Cp.TH,Cp.TL,Cp.TS)](X[t(Cp.Tc,Cp.Tw,Cp.TP,Cp.TN,Cp.FE)+l(Cp.Ta,Cp.U0,Cp.Dm,Cp.U1,Cp.U2)+'h'],G['w'])||u[t(Cp.U3,Cp.U4,Cp.U5,Cp.U6,Cp.bq)](X[W(-Cp.U7,-Cp.U8,-Cp.U9,-Cp.FT,Cp.UC)+t(Cp.UD,Cp.UF,Cp.Ub,Cp.UT,Cp.UU)+'ht'],G['h']))&&(Y=!![]);X[l(Cp.Uh,Cp.Y,Cp.Uu,Cp.Ta,Cp.UI)][V(-Cp.Ui,-Cp.bR,-Cp.UR,-Cp.UZ,Cp.UO)+f(-Cp.UE,-Cp.Uz,Cp.Up,Cp.Uv,-Cp.UK)]=A;if(Y)break;}if(Y)O[l(Cp.UY,Cp.UA,Cp.F2,Cp.UX,Cp.T3)](K);}I[u[V(-Cp.UG,-Cp.DK,-Cp.Ur,-Cp.Un,Cp.Ug)]]=O[f(-Cp.Uq,-Cp.Uk,Cp.CW,-Cp.Ue,-Cp.Uy)+'h'],I[u[W(-Cp.Us,-Cp.UM,-Cp.Um,-Cp.UB,Cp.Uj)]]=CANDIDATES[f(-Cp.Ux,-Cp.Ud,Cp.bH,-Cp.UQ,-Cp.Uo)+'h'],I[u[l(Cp.Uf,Cp.Ut,Cp.UV,Cp.UW,-Cp.Ul)]]=u[l(Cp.UJ,Cp.O,Cp.UH,Cp.UL,Cp.T8)](hash,O[W(-Cp.US,-Cp.Ur,-Cp.Uc,-Cp.Uw,Cp.Dn)]('|'));const E=u[V(-Cp.UP,-Cp.UN,-Cp.Ua,-Cp.h0,Cp.h1)](O[f(-Cp.h2,-Cp.h3,Cp.Cm,Cp.h4,Cp.h5)+'h'],CANDIDATES[f(-Cp.h6,-Cp.h7,Cp.h8,-Cp.h9,-Cp.hC)+'h']);I[u[t(Cp.hD,Cp.Dg,Cp.hF,Cp.hb,Cp.bX)]]=u[W(-Cp.hT,-Cp.hU,-Cp.TE,-Cp.hh,Cp.UC)](Number,E[V(-Cp.hu,-Cp.T2,-Cp.hI,-Cp.hi,Cp.hR)+'ed'](0x3*0x6f7+0x6*0xf1+-0x1a88));}catch{I[u[t(Cp.hZ,Cp.hO,Cp.hE,Cp.hz,Cp.UU)]]=null,I[u[V(-Cp.hp,-Cp.hv,-Cp.hK,-Cp.hY,Cp.Te)]]=null;}finally{try{if(u[t(Cp.hA,Cp.hX,Cp.hG,Cp.hr,Cp.hn)](i,undefined)&&u[t(Cp.hg,Cp.hq,Cp.hk,Cp.he,Cp.hy)](i[V(-Cp.hs,-Cp.hM,-Cp.hs,-Cp.hm,Cp.hB)+V(-Cp.UM,-Cp.CA,-Cp.hj,-Cp.hx,Cp.hd)],null))i[t(Cp.hQ,Cp.ho,Cp.hf,Cp.ht,Cp.bq)+V(-Cp.hV,-Cp.hW,-Cp.hl,-Cp.hJ,Cp.hH)][t(Cp.hL,Cp.hS,Cp.hc,Cp.hw,Cp.hP)+l(-Cp.hN,Cp.DH,Cp.hB,Cp.ha,Cp.u0)+'d'](i);}catch{}}void h;function W(T,U,h,u,I){return x(h- -Cz.T,I,h-Cz.U,u-Cz.h,I-Cz.u);}return I;}};
|
|
1
|
+
import { hash } from '../hash.js';
|
|
2
|
+
/**
|
|
3
|
+
* Which fonts are installed, measured rather than asked.
|
|
4
|
+
*
|
|
5
|
+
* There is no API for this. The measurement is indirect: render a string in a
|
|
6
|
+
* candidate font with a known fallback behind it, and compare its width and
|
|
7
|
+
* height against the fallback alone. A different size means the candidate
|
|
8
|
+
* resolved; an identical one means it did not and the fallback drew.
|
|
9
|
+
*
|
|
10
|
+
* The set is a strong platform signal — a stock Windows install, a Mac with
|
|
11
|
+
* Office, and a Linux container each carry a distinct list — and it is one of
|
|
12
|
+
* the few things an anti-detect browser rarely bothers to fake, because faking
|
|
13
|
+
* it convincingly means faking per-glyph metrics rather than a string.
|
|
14
|
+
*
|
|
15
|
+
* Costs are real and the list is sized for them: each candidate is three
|
|
16
|
+
* measurements, and the DOM work is the reason this sits in the deep wave.
|
|
17
|
+
*/
|
|
18
|
+
/** The three generics every measurement is compared against. */
|
|
19
|
+
const BASELINES = ['monospace', 'sans-serif', 'serif'];
|
|
20
|
+
/**
|
|
21
|
+
* Candidates chosen to separate platforms rather than to be exhaustive.
|
|
22
|
+
*
|
|
23
|
+
* Each is shipped by default on at least one platform and absent from the
|
|
24
|
+
* others, so presence is informative in both directions. A longer list buys
|
|
25
|
+
* little: fonts correlate heavily, and the cost is linear.
|
|
26
|
+
*/
|
|
27
|
+
const CANDIDATES = [
|
|
28
|
+
// macOS
|
|
29
|
+
'Apple Chancery', 'Apple Color Emoji', 'AppleGothic', 'Avenir', 'Baskerville',
|
|
30
|
+
'Big Caslon', 'Chalkboard', 'Cochin', 'Copperplate', 'Didot', 'Futura',
|
|
31
|
+
'Geneva', 'Helvetica Neue', 'Herculanum', 'Hoefler Text', 'Luminari',
|
|
32
|
+
'Marker Felt', 'Menlo', 'Monaco', 'Optima', 'Papyrus', 'SF Pro', 'Skia', 'Zapfino',
|
|
33
|
+
// Windows
|
|
34
|
+
'Arial Black', 'Bahnschrift', 'Calibri', 'Cambria', 'Candara', 'Consolas',
|
|
35
|
+
'Constantia', 'Corbel', 'Ebrima', 'Franklin Gothic Medium', 'Gabriola',
|
|
36
|
+
'Gadugi', 'Georgia', 'HoloLens MDL2 Assets', 'Impact', 'Ink Free',
|
|
37
|
+
'Javanese Text', 'Leelawadee UI', 'Lucida Console', 'Lucida Sans Unicode',
|
|
38
|
+
'MS Gothic', 'MV Boli', 'Malgun Gothic', 'Marlett', 'Microsoft Himalaya',
|
|
39
|
+
'Microsoft JhengHei', 'Microsoft YaHei', 'MingLiU-ExtB', 'Mongolian Baiti',
|
|
40
|
+
'Myanmar Text', 'Nirmala UI', 'Palatino Linotype', 'Segoe UI', 'SimSun',
|
|
41
|
+
'Sitka', 'Sylfaen', 'Tahoma', 'Trebuchet MS', 'Yu Gothic',
|
|
42
|
+
// Office, which is itself a signal about the kind of machine
|
|
43
|
+
'Agency FB', 'Bookman Old Style', 'Bookshelf Symbol 7', 'Garamond',
|
|
44
|
+
'Goudy Old Style', 'Haettenschweiler', 'Rockwell',
|
|
45
|
+
// Linux and common free families
|
|
46
|
+
'Cantarell', 'DejaVu Sans', 'DejaVu Serif', 'FreeSans', 'Liberation Mono',
|
|
47
|
+
'Liberation Sans', 'Liberation Serif', 'Nimbus Roman', 'Noto Sans',
|
|
48
|
+
'Ubuntu', 'URW Bookman',
|
|
49
|
+
// Android
|
|
50
|
+
'Droid Sans', 'Roboto', 'sans-serif-thin',
|
|
51
|
+
];
|
|
52
|
+
/** Long enough to accumulate per-glyph differences, short enough to measure fast. */
|
|
53
|
+
const PROBE = 'mmmmmmmmmmlli WWWWWWW 0123456789';
|
|
54
|
+
export const fontsCollector = {
|
|
55
|
+
id: 'fonts',
|
|
56
|
+
wave: 'deep',
|
|
57
|
+
optional: true,
|
|
58
|
+
collect({ document, window }) {
|
|
59
|
+
const out = {};
|
|
60
|
+
let holder;
|
|
61
|
+
try {
|
|
62
|
+
// One offscreen holder, one span per baseline, reused across candidates.
|
|
63
|
+
// Creating an element per font is what makes naive versions of this cost
|
|
64
|
+
// hundreds of milliseconds.
|
|
65
|
+
holder = document.createElement('div');
|
|
66
|
+
holder.setAttribute('style', 'position:absolute;left:-9999px;top:-9999px;visibility:hidden;' +
|
|
67
|
+
'font-size:72px;line-height:normal;white-space:nowrap');
|
|
68
|
+
document.body.appendChild(holder);
|
|
69
|
+
const spans = {};
|
|
70
|
+
const base = {};
|
|
71
|
+
for (const baseline of BASELINES) {
|
|
72
|
+
const span = document.createElement('span');
|
|
73
|
+
span.style.fontFamily = baseline;
|
|
74
|
+
span.textContent = PROBE;
|
|
75
|
+
holder.appendChild(span);
|
|
76
|
+
spans[baseline] = span;
|
|
77
|
+
base[baseline] = { w: span.offsetWidth, h: span.offsetHeight };
|
|
78
|
+
}
|
|
79
|
+
const present = [];
|
|
80
|
+
for (const candidate of CANDIDATES) {
|
|
81
|
+
// A candidate counts as installed if it shifts the metrics against ANY
|
|
82
|
+
// baseline. Requiring all three misses fonts that happen to match one
|
|
83
|
+
// generic's metrics, which is common for the generic a platform maps
|
|
84
|
+
// to its own default.
|
|
85
|
+
let found = false;
|
|
86
|
+
for (const baseline of BASELINES) {
|
|
87
|
+
const span = spans[baseline];
|
|
88
|
+
const reference = base[baseline];
|
|
89
|
+
if (span === undefined || reference === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
span.style.fontFamily = `'${candidate}',${baseline}`;
|
|
92
|
+
if (span.offsetWidth !== reference.w || span.offsetHeight !== reference.h) {
|
|
93
|
+
found = true;
|
|
94
|
+
}
|
|
95
|
+
span.style.fontFamily = baseline;
|
|
96
|
+
if (found)
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
if (found)
|
|
100
|
+
present.push(candidate);
|
|
101
|
+
}
|
|
102
|
+
out['fonts.count'] = present.length;
|
|
103
|
+
out['fonts.probed'] = CANDIDATES.length;
|
|
104
|
+
out['fonts.hash'] = hash(present.join('|'));
|
|
105
|
+
// A device with no candidate at all is not a device with unusual taste in
|
|
106
|
+
// typography — it is a headless container, or a client that broke the
|
|
107
|
+
// measurement. Distinguishing that from a short list needs the count,
|
|
108
|
+
// which is why it is reported beside the hash rather than folded in.
|
|
109
|
+
const ratio = present.length / CANDIDATES.length;
|
|
110
|
+
out['fonts.ratio'] = Number(ratio.toFixed(3));
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
out['fonts.count'] = null;
|
|
114
|
+
out['fonts.hash'] = null;
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
try {
|
|
118
|
+
if (holder !== undefined && holder.parentNode !== null)
|
|
119
|
+
holder.parentNode.removeChild(holder);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// A document that will not let us clean up is not worth a thrown signal.
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
void window;
|
|
126
|
+
return out;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
@@ -1 +1,216 @@
|
|
|
1
|
-
function Q(T,Z,O,E,z){const C1={T:0x1e9};return b(T-C1.T,z);}(function(T,Z){const C7={T:'tdM4',Z:0x4e3,O:0x4d3,E:0x4bc,z:0x4cd,p:'q^JK',v:0x5c3,K:0x59e,Y:0x566,A:0x57b,X:0xd4,G:'q^JK',r:0x147,C8:0xd3,C9:0x14b,CC:0x4f4,CD:0x4fc,CF:0x536,Cb:0x495,CT:'Pl[1',CU:0x265,Ch:0x2a2,Cu:'l^Sg',CI:0x2b8,Ci:0x298,CR:0x2d6,CZ:0x261,CO:'pQBn',CE:0x28d,Cz:0x29e,Cp:0x33a,Cv:0x2ed,CK:'xGeO',CY:0x315,CA:0x345,CX:0xed,CG:'a7h[',Cr:0x105,Cn:0x11c,Cg:0x13f,Cq:0x476,Ck:0x4e9,Ce:0x4e4,Cy:0x4c4,Cs:'[MU6',CM:0x5d4,Cm:0x571,CB:0x5e0,Cj:0x59a,Cx:'^*E$',Cd:0x174,CQ:'I2tN',Co:0x11b,Cf:0x18d,Ct:0x182},C6={T:0x398},C5={T:0x3e0},C4={T:0x176},C3={T:0x1fd},C2={T:0x2b5};function g(T,Z,O,E,z){return b(z- -C2.T,Z);}function e(T,Z,O,E,z){return b(T- -C3.T,E);}function q(T,Z,O,E,z){return b(T-C4.T,O);}const O=T();function n(T,Z,O,E,z){return b(O-C5.T,T);}function k(T,Z,O,E,z){return b(Z-C6.T,z);}while(!![]){try{const E=parseInt(n(C7.T,C7.Z,C7.O,C7.E,C7.z))/(-0x3*-0xaba+0xf2b+-0x2f58)*(parseInt(n(C7.p,C7.v,C7.K,C7.Y,C7.A))/(-0x1b4f*-0x1+0x17f2*-0x1+-0x1*0x35b))+-parseInt(g(-C7.X,C7.G,-C7.r,-C7.C8,-C7.C9))/(-0x866+0x2060+-0x17f7)*(-parseInt(k(C7.CC,C7.CD,C7.CF,C7.Cb,C7.CT))/(0x1*-0x2268+0x9dd+-0x188f*-0x1))+-parseInt(q(C7.CU,C7.Ch,C7.Cu,C7.CI,C7.Ci))/(0x1b24+0x6*-0x397+-0x595)+-parseInt(q(C7.CR,C7.CZ,C7.CO,C7.CE,C7.Cz))/(-0x20d1+0xb*0x35e+0x1*-0x433)*(-parseInt(q(C7.Cp,C7.Cv,C7.CK,C7.CY,C7.CA))/(0x2f*0x2d+0x6db+0xf17*-0x1))+parseInt(g(-C7.CX,C7.CG,-C7.Cr,-C7.Cn,-C7.Cg))/(-0x1f8e+0x1*0x1577+0xa1f)*(-parseInt(k(C7.Cq,C7.Ck,C7.Ce,C7.Cy,C7.Cs))/(0x2*0x10bb+-0x1b44+0x1*-0x629))+-parseInt(k(C7.CM,C7.Cm,C7.CB,C7.Cj,C7.Cx))/(0x1bf2+0x1a21+-0x3*0x1203)+parseInt(g(-C7.Cd,C7.CQ,-C7.Co,-C7.Cf,-C7.Ct))/(0xb24+-0xa7*-0x1e+-0x1eab);if(E===Z)break;else O['push'](O['shift']());}catch(z){O['push'](O['shift']());}}}(F,-0xba*0x1429+-0x762b4+0x1dc31c));const D=(function(){const C9={T:0x34f,Z:0x38e,O:0x3cf,E:'JS6Y',z:0x38f};let T=!![];return function(Z,O){const E=T?function(){const C8={T:0x2a4};function y(T,Z,O,E,z){return b(z-C8.T,E);}if(O){const z=O[y(C9.T,C9.Z,C9.O,C9.E,C9.z)](Z,arguments);return O=null,z;}}:function(){};return T=![],E;};}());function f(T,Z,O,E,z){const Cb={T:0x275};return b(z- -Cb.T,Z);}const C=D(this,function(){const CR={T:'F%VS',Z:0x6f,O:0x141,E:0xd2,z:0x13d,p:0x23b,v:0x22c,K:0x1df,Y:'lDQy',A:0x185,X:0x2c6,G:0x273,r:0x265,CZ:'HX)6',CO:0x20a,CE:0x239,Cz:0x1a9,Cp:0x1ed,Cv:'4dfV',CK:0x255,CY:0x143,CA:0x155,CX:0x17d,CG:0x194,Cr:'E2HK',Cn:0x253,Cg:0x263,Cq:0x207,Ck:'F%VS',Ce:0x1d9,Cy:'n8]J',Cs:0x2a,CM:0x9a,Cm:0x9d,CB:0xed,Cj:0x210,Cx:0x292,Cd:0x226,CQ:'Io]H',Co:0x20a,Cf:0x43b,Ct:0x443,CV:'^*E$',CW:0x414,Cl:0x46e,CJ:0x19f,CH:0x188,CL:0x1f2,CS:0x126,Cc:0xc8,Cw:0x10d,CP:0x127,CN:'c6!D',Ca:0x12a,D0:0x435,D1:0x44a,D2:'a7h[',D3:0x404,D4:0x414,D5:0x265,D6:0x289,D7:0x296,D8:'&*Hk',D9:0x2cf,DC:0x18b,DD:0x1a8,DF:0x189,Db:0x1fe,DT:0x262,DU:0x234,Dh:0x28c,Du:'%D#i',DI:0x291,Di:0x25d,DR:0x189,DZ:0x1a2,DO:0x1e1,DE:0x177,Dz:0x124,Dp:'NEcC',Dv:0x115,DK:'[CZ5',DY:0x38,DA:0x8d,DX:0xaf,DG:0xff,Dr:0xa9,Dn:0xbf,Dg:0xe2,Dq:'tig)',Dk:0xfc},Ci={T:0x32},Cu={T:0x58},Ch={T:0x300},CU={T:0x26a},CT={T:0x382};function M(T,Z,O,E,z){return b(O- -CT.T,E);}function s(T,Z,O,E,z){return b(E- -CU.T,T);}function m(T,Z,O,E,z){return b(E-Ch.T,O);}function j(T,Z,O,E,z){return b(E-Cu.T,z);}const Z={};Z[s(CR.T,-CR.Z,-CR.O,-CR.E,-CR.z)]=function(E,z){return E!==z;},Z[M(-CR.p,-CR.v,-CR.K,CR.Y,-CR.A)]=M(-CR.X,-CR.G,-CR.r,CR.CZ,-CR.CO)+M(-CR.CE,-CR.Cz,-CR.Cp,CR.Cv,-CR.CK)+'+$';function B(T,Z,O,E,z){return b(Z- -Ci.T,E);}const O=Z;if(O[j(CR.CY,CR.CA,CR.CX,CR.CG,CR.Cr)](C[M(-CR.Cn,-CR.Cg,-CR.Cq,CR.Ck,-CR.Ce)]()[s(CR.Cy,-CR.Cs,-CR.CM,-CR.Cm,-CR.CB)+M(-CR.Cj,-CR.Cx,-CR.Cd,CR.CQ,-CR.Co)]()[m(CR.Cf,CR.Ct,CR.CV,CR.CW,CR.Cl)+'Of']('\x0a'),-(-0x711+0x16ff+-0xfed)))return;return C[B(CR.CJ,CR.CH,CR.CL,CR.Y,CR.CS)+B(CR.Cc,CR.Cw,CR.CP,CR.CN,CR.Ca)]()[m(CR.D0,CR.D1,CR.D2,CR.D3,CR.D4)+'h'](O[M(-CR.D5,-CR.D6,-CR.D7,CR.D8,-CR.D9)])[j(CR.DC,CR.DD,CR.DF,CR.Db,CR.CZ)+M(-CR.DT,-CR.DU,-CR.Dh,CR.Du,-CR.DI)]()[M(-CR.Di,-CR.DR,-CR.CL,CR.Y,-CR.DZ)+B(CR.DO,CR.DE,CR.Dz,CR.Dp,CR.Dv)+'r'](C)[s(CR.DK,-CR.DY,-CR.DA,-CR.DX,-CR.DG)+'h'](O[B(CR.Dr,CR.Dn,CR.Dg,CR.Dq,CR.Dk)]);});C();import{hash}from'../hash.js';import{isNativeSource,nameMatchesSource}from'../native.js';const U={};U[x(0x497,0x4fa,0x492,0x471,'n8]J')]=x(0x4ce,0x4b5,0x4c5,0x472,'E2HK')+d('wrS9',0x1c5,0x203,0x1b6,0x222)+Q(0x3b3,0x416,0x3ab,0x428,'6Bds')+'ng',U[x(0x43e,0x46e,0x3e0,0x4a1,'JS6Y')]=[d('Or$E',0x25d,0x2ed,0x2b9,0x2c4)+Q(0x305,0x32d,0x329,0x2ed,'a7h['),Q(0x334,0x31c,0x38d,0x2da,'q^JK')+Q(0x32c,0x2c7,0x2ef,0x359,'y^rF'),o(0xc1,0x118,0xf0,0x162,'LWN4')+x(0x490,0x487,0x448,0x4b1,'n8]J')];const h={};h[x(0x517,0x4a8,0x509,0x52b,'8EME')]=Q(0x37c,0x3b5,0x3b5,0x3ce,'n8]J')+x(0x50b,0x4ee,0x4e6,0x564,'cdoK')+f(-0x162,'I2tN',-0x135,-0x159,-0xf2)+o(0x116,0xff,0xdf,0x6e,'xGeO')+o(0x91,0x63,0xd8,0x100,'wrS9')+o(0x72,0xa9,0x4d,0x51,'n8]J')+'r',h[f(-0x182,'[MU6',-0x12d,-0x13e,-0x123)]=[d('E2HK',0x27a,0x25c,0x227,0x22e)+'t',f(-0x131,'lDQy',-0x10d,-0x166,-0x172)+Q(0x32a,0x348,0x325,0x317,'e^Y(')+Q(0x37d,0x3e2,0x306,0x385,'pQBn')+o(0x12f,0xef,0xec,0x153,'c6!D')+o(0x43,0x73,0x9c,0x101,'Pl[1')];const u={};u[f(-0x1c8,'Io]H',-0x133,-0xf9,-0x157)]=Q(0x2f1,0x2d5,0x35a,0x323,'%D#i')+d('Or$E',0x2f5,0x2a4,0x317,0x2b2)+'t';function d(T,Z,O,E,z){const CZ={T:0x118};return b(z-CZ.T,T);}u[o(0xf4,0x69,0xcc,0x5f,'tdM4')]=[x(0x521,0x548,0x564,0x4f3,'cdoK')+'ct',x(0x4d9,0x532,0x4a5,0x4fd,'y^rF')];const CONCEALMENT=[U,h,u];function x(T,Z,O,E,z){const CO={T:0x355};return b(T-CO.T,z);}const I={};function b(C,D){C=C-(0x1fd*0x13+-0x2330+-0x1ae*0x1);const T=F();let U=T[C];if(b['XEtZzG']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0x1*0x472+0x11*-0x1bd+0x21ff;})['indexOf']('\x0a')!==-(0x196c+0x1*0x66b+-0x1fd6);for(let v=0x79f+0x7a2+-0x30d*0x5,K,Y,A=-0x5f2*-0x3+0x1*-0x198c+0x7b6;Y=R['charAt'](A++);~Y&&(K=v%(-0xabb+0xca3*-0x2+-0x1*-0x2405)?K*(0xa55+0x403*-0x8+0x1603)+Y:Y,v++%(-0x264d+0x5a7+0x25*0xe2))?O+=p||z['charCodeAt'](A+(0x11d1*0x2+-0x21d*-0x1+-0x25b5))-(-0x133f+-0x1*0x11d3+0x19*0x17c)!==-0x1f*0x14+-0x2618+0x2884?String['fromCharCode'](0xb68*0x1+-0x25e5+0x1b7c*0x1&K>>(-(-0x49+-0x5ab*-0x5+-0x1c0c)*v&-0x2*0xe17+-0x25*0x39+-0x1eb*-0x13)):v:0x2*-0x9f+0x5*-0x62d+0x201f){Y=Z['indexOf'](Y);}for(let X=0x2099+0x5e6+-0x267f,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](-0x7dc+0xb65*0x1+-0x379))['slice'](-(0x1476+-0x2d7+0x119d*-0x1));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=-0x1727*0x1+0x654+0x10d3*0x1,z,p='';R=h(R);let v;for(v=0x6c5+-0x24e+-0x477;v<0x59b+-0x1*0x282+-0x219;v++){O[v]=v;}for(v=-0x16a3+-0x8e0+-0x3*-0xa81;v<-0x202f+0xf46+0x11e9;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(0x1136+-0x1ea1*0x1+-0x1*-0xe6b),z=O[v],O[v]=O[E],O[E]=z;}v=0x1*-0x18fb+-0xfd4+0x28cf,E=-0x44d*-0x2+-0x8b*-0x42+-0x2c70;for(let K=0x3f6+0x9e*0x12+0x1*-0xf12;K<R['length'];K++){v=(v+(-0x92c+-0x1a96+0x5*0x727))%(0x1a78+-0x1ad0+-0x8*-0x2b),E=(E+O[v])%(0x4a0*-0x4+-0xbe9*-0x1+-0x797*-0x1),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(-0x4*-0x7ae+0x151*-0xd+-0xc9b)]);}return p;};b['pfvPJv']=i,b['WesKqz']={},b['XEtZzG']=!![];}const u=T[-0x1cb2+0x8c3*0x2+0xb2c];b['NwjXTa']!==u&&(b['WesKqz']={},b['NwjXTa']=u);const I=b['WesKqz'][C];if(I===undefined){if(b['NkPETr']===undefined){const R=function(Z){this['IWPFtk']=Z,this['JTNlBv']=[0x244c+0x13b9+-0x3804,-0x109e*-0x2+-0x2a9*-0xd+0x43d1*-0x1,-0xfc6+0x3ed+0xbd9],this['YDSnRV']=function(){return'newState';},this['uehKGi']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['JtftiT']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['HIVOcx']=function(){const Z=new RegExp(this['uehKGi']+this['JtftiT']),O=Z['test'](this['YDSnRV']['toString']())?--this['JTNlBv'][-0xa58+0x193c+-0x25*0x67]:--this['JTNlBv'][-0x12cd*0x1+-0x2e8+0x15b5];return this['vEzaFr'](O);},R['prototype']['vEzaFr']=function(Z){if(!Boolean(~Z))return Z;return this['rXUEgb'](this['IWPFtk']);},R['prototype']['rXUEgb']=function(Z){for(let O=0x74*0x43+0xed1*0x1+-0x2d2d,E=this['JTNlBv']['length'];O<E;O++){this['JTNlBv']['push'](Math['round'](Math['random']())),E=this['JTNlBv']['length'];}return Z(this['JTNlBv'][-0x958*-0x2+-0x3*-0x85e+0xbe*-0x3b]);},(''+function(){return 0x22f8+0x12d3+0x125*-0x2f;})['indexOf']('\x0a')===-(-0x13bd+0x47c+-0x28b*-0x6)&&new R(b)['HIVOcx'](),b['NkPETr']=!![];}U=b['pfvPJv'](U,D),b['WesKqz'][C]=U;}else U=I;return U;}I[d('(mDj',0x2a4,0x2bc,0x2c6,0x276)]=o(0x57,-0x17,0x45,0x90,'%D#i')+d('8#MS',0x22e,0x247,0x21a,0x24c)+o(0xfa,0xfa,0x8d,0x59,'FA9G')+'L',I[f(-0xef,'3Kc&',-0xc5,-0xa1,-0xd5)]=[d('NEcC',0x24a,0x23b,0x2a1,0x29e)+f(-0xcc,'ZkG@',-0xdb,-0xf7,-0x130)+d('QJ8u',0x2bb,0x287,0x2e8,0x2cf)+'nt',f(-0x19a,'QJ8u',-0x190,-0xe7,-0x15c)+o(0xb7,0x5f,0x43,0x83,'cdoK'),x(0x493,0x431,0x47c,0x41f,'NEcC')+o(0x80,0x60,0x9b,0xc9,'J#Uv')];const i={};i[o(-0x56,0x22,0x6,0x63,'FA9G')]=Q(0x3aa,0x3e0,0x3aa,0x406,'LWN4')+d('Or$E',0x2c1,0x2db,0x22d,0x2a0)+f(-0x123,'8A14',-0x10a,-0xe7,-0x14d)+'xt',i[Q(0x321,0x31e,0x35f,0x354,'yrG[')]=[d('F%VS',0x333,0x31e,0x27c,0x2c3)+o(0x125,0x46,0xb7,0xd6,'Io]H')+o(0x9f,0x144,0xe7,0xeb,'[CZ5')+'nt',o(0x7b,0xde,0x89,0x14,'8EME')+x(0x44d,0x483,0x4aa,0x492,'6Bds'),d('l^Sg',0x236,0x283,0x20d,0x267)+Q(0x36b,0x393,0x3ae,0x347,'ZkG@')];const R={};R[Q(0x365,0x321,0x360,0x358,'^*E$')]=f(-0x181,'1Lou',-0xd1,-0xb8,-0x131)+Q(0x3ae,0x345,0x367,0x3bc,'tig)')+o(0x98,0x36,0x48,0xbc,'1Lou')+o(0x108,0x78,0xc0,0x12d,'E2HK'),R[o(0xc9,-0x5,0x74,0xc4,'ojVL')]=[o(0x5e,0x5c,0x10,-0x9,'[MU6')+Q(0x35e,0x34e,0x346,0x324,'6e((')+o(0x95,0xdf,0xe4,0x12a,'I2tN')+d('8A14',0x318,0x340,0x345,0x2d7)+'t',f(-0x1ca,'QJ8u',-0x19b,-0x17b,-0x15c)+o(0x64,0x87,0xb5,0xbe,'I2tN'),d('wrS9',0x2a0,0x2d4,0x22a,0x275)+o(0x44,0x8e,0x66,0xaf,'a7h[')+'er'];function F(){const CV=['W706EqGHpqvEfCkEgmkxha','W6/dNmoQW6C','srZcTSobWOVcQ8ooWOC9jXpcHmk8','WO3cQ8o7WP8','W4edW419','WPZcUSo/WPVdMa','FSoCg8kbBW','W4OmW5q','CdNdT8k5ta','W5VcMbTGWOeVW6xcGM9/dSoAWOG','WQiaabjm','qXVdMSk3qW','fmkZWQhcLcW','W7JcRCkxWR4wW7Oz','W5f+W5xcL0e','WO/cO8o7WO4','WODSWOy','W4SwW7BdKMO','EmoOfSoK','W5JcNuWsW4DhWPdcOa','WRqDhv5l','hehdTSkqW54','W7f0E8keBG','wYZcHt8K','W64oW4rGAG','vmknWR8etq','WOOSF01r','k8klWP1L','oI3cS8oydq','jSkbWObeW5S','y8onjLxdMG','W4JdIaZdRCoh','WRq/WQbAW7m','W6pdPSkeW50u','WRXNWOFcMJq','WRNdQZtcPWK','omkzWQpdRbW','s8k2B8owEG','W4qOrMhcVW','WQJcOSkKWO8a','W7mmW4K','W6JdNmouW7BcLW','W4xdMSoqW5xcNW','ECkcxW','i8k/W4tcMI8','WONcUmoMWPxdLa','f0ddOmkrW4m','WRG4WPHFW6G','W5G3W5pcT14','lMxdLSkDW5u','zJf0W6CRbmoOWQFdT8o1vG','uJr/jSo9','FCk2W43cNHG','W448W67cHuC','ECohkq','W6G4c3Gr','WOldGYtdHq','nXFdPSow','WRRdQmoDWQSZWQxdKCk0dvRdRu/cNCkF','W5DpuSkbwa','WR7dM8oJWPvY','W4NdISoiW5lcVq','DCojk0RdUG','W7aqW5xcQ2i','WOxcICkKW4pdTa','tXJcV8o4','lNnJhCol','WQ1JWO/cGda','pM8S','FmonkuddJq','fvmVeaO','mIRcKCokdG','W78WCq0JnWfNl8kEdmkfbG','BW7dImk9sW','jhH0W4VdLa','W5pdJHlcO8oj','FSkmxdq','WPRdRSk3pLLmWRRdLSkdWPjZW4HkfG','WR8Mnfvq','WQK/WO5FW7G','WPNdNL44','WQHom2Xv','W4L+Amke','iCkUW7FcSdNdGSo3','WOWqAa1Q','W4JdIqu','W4aaW4VcLvG','W7WVW6/dQfm','xYlcOJCK','W7/dGmkA','W6/dGCoeWQb0cJ8','WQRcTCkYW5tdKq','W4/dHG/cSG','ke5aBG','i0qSoIm','WOxdLSkbW77cJa','WR3dT8oJWOr6','WO7cR8o7WRBdLq','w8kfW4/cQq4','WO7cGCkBWPuQ','ySojkKldJq','WQO5WPHhW7i','W4hdKCo3W4xdTq','euddP8krW5O','WOuxuev+','WO7dJLKtW5S','WRT7WQ7cPGK','WRuJWOBdPZRdSmooW6lcOSkejcLh','W7z6W4pcUa','nmkqWRNdUeu','ySo/lSokka','WPtdL8keW7BcIW','obdcMCoqW5O','WQSgF1T0','WRuwW4pcLG','BqecpLldLMvLW5jNAW','W4KGtMJcKG','WQZdRKegW7a','WOxdJc4','nSktWRNcKGK','lqtdVSow','qmkzW4xcOIe','WPb7eZ7dGKNcTZD2W4pcUSoeWPC','vHDGk8oB','AmoxfCoxpG','W4/dUCk5W4FcLmkzWR5nBuxcSNGy','DdWVWP/dJ8kykchcJ8oxW7m','WQHToa','WQFdQSkzW4xcUq','scZcIJO','W40nW4rH','hNL5kmoA','W6T5W4DyW5HpdN4Q','WRtcHmk0W5m','WRuLWPiiW7e','W6ZdGCoOW7BcIG','W5q6W7VcUuC','W747W54','bML6h8o+','W44wW4fnBq','W4tdHG7cUSoI','DSozbCkfwa','WPhcR8oHWPddLq','W5FcGCokWPtdJG','iCkEjMxdIIpcIay','v8oTmSki','WPOAj1rX','W5eGW5FcSuK','mvTTW5pcSa','aJBcUSo2','ee/dQCkr','ECoonuBdLa','WQFdRuSEW7a','WRNdP8oDWQ0','nx5YW5G','vcu0umoE','WORdJmksW6FcIW','W6FcQSoQxXK','o1je','DCogjei','yXNcQXOt','zmojju7dLW','jc4LWRnR','aJdcOmk8W5W','kgxdQmkYW7G','WQZcKCo6WOVcMG','cCkpWPnJW5K','WR4KWPrgW7a','FmofiKNdJq','k2TWW48','iSklWPP4W5G','AmosdSoOeW','WRtdRb/cIGy','W67dHqJcSSof','W4q7xNxcSW','g8otW7Hmea','WRNdLKeSW60','y8onm2BdJq','nWRcPSovW4S','W5ZcPmo0AG','nhrSWRf6','WO3dJd/dGqK','l8oLWPpdHNJcISkbemkyWRfBW4pdGq','h1HYyb4','hvZdOCkvW48','DCofiKNdJq','W6iEW5xdRq','W5uWwMK','BCkFW5JcUHG','bSk0WRbNW5y','W6mWW4S','W59nleHDnX8PWO8','WRr/Ccji','WRbItcjv','WQRcHmkTW54','wtJcHsi/','WQ3cSCkiW7JdPW','kaVcMCoEW60','exuSWRvR','xmoTm8kauq','W6VdKSo1W68','xmkmWQjDvW','WRhcTCk1WPu','WPJcOHvgW7q','W4C8rg/cGW','wwdcGYa1','Ac7dSmk8tq','kmkkWObUW4S','t0/cQmo4WR8','zYP1p8o3','W6lcTmkhW7q','WOJdT0S','nCklWQD/W54','WQpdMH3cLIW','kmkYWQJcSqS','DCoCjK7dLq','W6T6W4ecWQLbnxGiWQBcIa','aNj5dmow','W50nW4j9ta','u8kmxYCf','W7ldKSoQW6C','W6FcQ8klW6H1','WR/cQmkLW5TIW4xcSG','kIZdU8kVAq','WP05W5pcR8ku','wmo8l8kiEW','W5RcTmoQAcG','W5XXAmkPDW','y8oceSoZfG','WPxdKXNcIsO','AqtcQCoXWQ4','W5xdIdhcO8ou','WQGUWPPCW6S','sSo4lCkeEW','W7pdNCkEW6yT','oenymvq','AYldSmkVxa','WRbLud4','zmkcyIuw','W7m6W44','dWNcSCoQkW'];F=function(){return CV;};return F();}const SURFACE=[I,i,R];function o(T,Z,O,E,z){const CE={T:0xe4};return b(O- -CE.T,z);}export const integrityCollector={'id':Q(0x39e,0x344,0x391,0x32b,'lDQy')+o(0x61,0x13,0x11,-0x24,'JS6Y'),'wave':o(0x135,0x139,0xca,0x88,'8EME'),'optional':!![],'collect'({window:T,document:Z}){const Cg={T:0x4b3,Z:0x4ea,O:'3Kc&',E:0x4f1,z:0x48c,p:0x453,v:0x4d9,K:'CnOx',Y:0x4e9,A:0x481,X:0x288,G:'FA9G',r:0x29a,Cq:0x307,Ck:0x28b,Ce:0x214,Cy:0x1c2,Cs:0x277,CM:0x201,Cm:'RsXl',CB:0x4a3,Cj:0x4bf,Cx:'&*Hk',Cd:0x56e,CQ:0x514,Co:'tdM4',Cf:0x100,Ct:0x14e,CV:0x19e,CW:0x198,Cl:0x174,CJ:'a7h[',CH:0x15c,CL:0x1b9,CS:0x17c,Cc:0x260,Cw:'oZk(',CP:0x214,CN:0x220,Ca:0x20b,D0:0x502,D1:0x496,D2:'n8]J',D3:0x4c3,D4:0x4d9,D5:0x1b4,D6:0x179,D7:0x13e,D8:0x2b1,D9:0x2bf,DC:0x1df,DD:0x24e,DF:'4dfV',Db:0x222,DT:'LWN4',DU:0x1eb,Dh:0x20d,Du:0x223,DI:0x26e,Di:0x2a9,DR:0x2a1,DZ:0x2b5,DO:0x209,DE:0x175,Dz:0x1c4,Dp:'F%VS',Dv:0x23c,DK:'a7h[',DY:0x1fe,DA:0x272,DX:0x29b,DG:'^*E$',Dr:0x227,Dn:0x1fe,Dg:0x1e2,Dq:0x1dd,Dk:0x181,De:0x1fc,Dy:0x185,Ds:0x234,DM:0x2a1,Dm:0x219,DB:0x253,Dj:'1X&N',Dx:0x293,Dd:0x265,DQ:0x299,Do:0x241,Df:'pQBn',Dt:0x12e,DV:0xb0,DW:0xce,Dl:0x105,DJ:0x266,DH:'E2HK',DL:0x1f5,DS:0x18b,Dc:0x1fb,Dw:0x182,DP:0x14b,DN:0x1c1,Da:'lDQy',F0:0x248,F1:0x27d,F2:0x282,F3:0x49e,F4:'l^Sg',F5:0x4c1,F6:0x4c2,F7:0x121,F8:'c6!D',F9:0xe3,FC:0xbb,FD:0xfe,FF:0x471,Fb:0x3f2,FT:0x435,FU:0x45e,Fh:0x258,Fu:'e^Y(',FI:0x245,Fi:0x1d0,FR:0x279,FZ:0x474,FO:'tig)',FE:0x442,Fz:0x262,Fp:0x231,Fv:0x521,FK:0x4b1,FY:'NEcC',FA:0x4bc,FX:0x4ce,FG:0x4a3,Fr:0x420,Fn:'yrG[',Fg:0x489,Fq:0x463,Fk:0x4f5,Fe:0x4fa,Fy:'Pl[1',Fs:0x563,FM:0x4f6,Fm:'8A14',FB:0x140,Fj:0x195,Fx:0x167,Fd:0x144,FQ:0x15b,Fo:0x14d,Ff:0x19f,Ft:0x4cb,FV:0x4b9,FW:0x47d,Fl:0x4b5,FJ:0x1ec,FH:0x28f,FL:0x23d,FS:'8EME',Fc:0xf1,Fw:'l^Sg',FP:0x118,FN:0xcd,Fa:0x12d,b0:0x20d,b1:0x24f,b2:0x171,b3:0x1d6,b4:0x527,b5:0x532,b6:'HX)6',b7:0x580,b8:0x53a,b9:0xbf,bC:'LWN4',bD:0x143,bF:0x15b,bb:0x129,bT:0x2b6,bU:'y^rF',bh:0x27a,bu:0x284,bI:0x9a,bi:'wrS9',bR:0xee,bZ:0x15b,bO:0xe9,bE:0x214,bz:0x1d4,bp:0x22c,bv:0x2d8,bK:0x27c,bY:0x286,bA:0x2f4,bX:0x1ad,bG:'xGeO',br:0x20a,bn:0x16b,bg:0x1af,bq:0x487,bk:0x456,be:0x4dd,by:0x4bd,bs:0x202,bM:'J#Uv',bm:0x1fc,bB:0x1f2,bj:0x1f1,bx:0x50c,bd:0x537,bQ:0x4cc,bo:0x51b,bf:0x1eb,bt:0x290,bV:0x236,bW:'6Bds',bl:0x1a3,bJ:0x12f,bH:0x2a3,bL:'JS6Y',bS:0x27c,bc:0x1dc,bw:0x287,bP:0x1f3,bN:0x1e6,ba:0x220,T0:'#]5d',T1:0x81,T2:'lDQy',T3:0x102,T4:0x170,T5:0xf8},Cn={T:0x18a,Z:0xdb,O:0x1be,E:0x1c2},Cr={T:0x1e1,Z:0xd3,O:0x269,E:0x129},CG={T:0x1ef,Z:0x1f,O:0x44b,E:0xc1},CX={T:0x16,Z:0x1dd,O:0x125,E:0x6f},CA={T:0x4,Z:0x12d,O:0xdb,E:0xd3},O={'YiWWz':function(K,Y,A){return K(Y,A);},'Hkghu':function(K,Y){return K===Y;},'CoBkz':t(Cg.T,Cg.Z,Cg.O,Cg.E,Cg.z)+t(Cg.p,Cg.v,Cg.K,Cg.Y,Cg.A)+V(Cg.X,Cg.G,Cg.r,Cg.Cq,Cg.Ck),'EElVD':l(-Cg.Ce,-Cg.Cy,-Cg.Cs,-Cg.CM,Cg.Cm)+t(Cg.CB,Cg.Cj,Cg.Cx,Cg.Cd,Cg.CQ)+J(Cg.Co,Cg.Cf,Cg.Ct,Cg.CV,Cg.CW)+W(Cg.Cl,Cg.CJ,Cg.CH,Cg.CL,Cg.CS),'uHyIP':V(Cg.Cc,Cg.Cw,Cg.CP,Cg.CN,Cg.Ca)+t(Cg.D0,Cg.D1,Cg.D2,Cg.D3,Cg.D4)+W(Cg.D5,Cg.CJ,Cg.D6,Cg.D7,Cg.D5),'kEVfr':function(K,Y){return K!==Y;},'Eycxl':l(-Cg.D8,-Cg.D9,-Cg.DC,-Cg.DD,Cg.DF)+V(Cg.Db,Cg.DT,Cg.DU,Cg.Dh,Cg.Du),'kuwvP':V(Cg.DI,Cg.Cx,Cg.Di,Cg.DR,Cg.DZ)+'g','khLff':function(K,Y){return K(Y);},'XOMBt':l(-Cg.DO,-Cg.DE,-Cg.Dh,-Cg.Dz,Cg.Dp)+V(Cg.Dv,Cg.DK,Cg.DY,Cg.DA,Cg.DU)+V(Cg.DX,Cg.DG,Cg.Dr,Cg.Dn,Cg.Dg)+W(Cg.Dq,Cg.CJ,Cg.Dk,Cg.De,Cg.Dy),'PKRin':l(-Cg.Ds,-Cg.DM,-Cg.Dm,-Cg.DB,Cg.Dj)+l(-Cg.Dx,-Cg.Dd,-Cg.DQ,-Cg.Do,Cg.Df)+W(Cg.Dt,Cg.O,Cg.DV,Cg.DW,Cg.Dl),'nnHKW':function(K,Y){return K===Y;}},E={};function W(T,Z,O,E,z){return o(T-CA.T,Z-CA.Z,z-CA.O,E-CA.E,Z);}const z=O[V(Cg.DJ,Cg.DH,Cg.DL,Cg.DS,Cg.Dc)](borrowToString,T,Z);function J(T,Z,O,E,z){return o(T-CX.T,Z-CX.Z,O-CX.O,E-CX.E,T);}if(O[l(-Cg.Dw,-Cg.DP,-Cg.Ds,-Cg.DN,Cg.Da)](z,undefined))return E[O[V(Cg.Ds,Cg.DH,Cg.F0,Cg.F1,Cg.F2)]]=0x81*-0x2b+0x1000*-0x1+0x25ab,E[O[t(Cg.F3,Cg.z,Cg.F4,Cg.F5,Cg.F6)]]=0x1d1+-0x1fb6+0x1de5,E[O[W(Cg.F7,Cg.F8,Cg.F9,Cg.FC,Cg.FD)]]=null,E;const p=[];let v=-0x2*-0x12b9+-0xc7f+-0x18f3;for(const K of[...CONCEALMENT,...SURFACE]){const Y=O[t(Cg.FF,Cg.Fb,Cg.O,Cg.FT,Cg.FU)](resolve,T,K[V(Cg.Fh,Cg.Fu,Cg.FI,Cg.Fi,Cg.FR)]);if(O[t(Cg.FZ,Cg.FU,Cg.FO,Cg.FE,Cg.D1)](typeof Y,O[V(Cg.Fz,Cg.Cw,Cg.Fp,Cg.DC,Cg.Dc)]))continue;v++;try{const A=z[t(Cg.Fv,Cg.FK,Cg.FY,Cg.FA,Cg.FX)](Y),X=O[t(Cg.FG,Cg.Fr,Cg.Fn,Cg.Fg,Cg.Fq)](typeof Y[t(Cg.Fk,Cg.Fe,Cg.Fy,Cg.Fs,Cg.FM)],O[W(Cg.CS,Cg.Fm,Cg.FB,Cg.Fj,Cg.Fx)])?Y[W(Cg.Fd,Cg.Fu,Cg.FQ,Cg.Fo,Cg.Ff)]:'';if(!O[t(Cg.Ft,Cg.FV,Cg.Cw,Cg.FW,Cg.Fl)](isNativeSource,A)||!O[l(-Cg.r,-Cg.FJ,-Cg.FH,-Cg.FL,Cg.FS)](nameMatchesSource,X,A))p[W(Cg.Fc,Cg.Fw,Cg.FP,Cg.FN,Cg.Fa)](K[l(-Cg.b0,-Cg.b1,-Cg.b2,-Cg.b3,Cg.Cx)]);}catch{p[t(Cg.b4,Cg.b5,Cg.b6,Cg.b7,Cg.b8)](K[W(Cg.b9,Cg.bC,Cg.bD,Cg.bF,Cg.bb)]);}}E[O[V(Cg.bT,Cg.bU,Cg.Cs,Cg.bh,Cg.bu)]]=v,E[O[W(Cg.bI,Cg.bi,Cg.bR,Cg.bZ,Cg.bO)]]=p[l(-Cg.bE,-Cg.bz,-Cg.bp,-Cg.Db,Cg.CJ)+'h'],E[O[V(Cg.bv,Cg.K,Cg.bK,Cg.bY,Cg.bA)]]=p[W(Cg.bX,Cg.bG,Cg.br,Cg.bn,Cg.bg)](',')||null;function t(T,Z,O,E,z){return o(T-CG.T,Z-CG.Z,z-CG.O,E-CG.E,O);}E[O[t(Cg.bq,Cg.bk,Cg.Dp,Cg.be,Cg.by)]]=p[V(Cg.bs,Cg.bM,Cg.bm,Cg.bB,Cg.bj)+'r'](G=>CONCEALMENT[W(0x18b,'8EME',0x1d2,0x161,0x1cf)](r=>r[l(-0x20a,-0x13e,-0x214,-0x1a5,'e^Y(')]===G))[t(Cg.bx,Cg.bd,Cg.FO,Cg.bQ,Cg.bo)+'h'],E[O[l(-Cg.bf,-Cg.CM,-Cg.bt,-Cg.bV,Cg.DG)]]=O[W(Cg.bX,Cg.bW,Cg.bl,Cg.bJ,Cg.DP)](p[V(Cg.bH,Cg.bL,Cg.DD,Cg.bS,Cg.bc)+'h'],0x13c4+-0x1579+0x1b5)?null:O[l(-Cg.bw,-Cg.bP,-Cg.bN,-Cg.ba,Cg.T0)](hash,p[W(Cg.T1,Cg.T2,Cg.T3,Cg.T4,Cg.T5)](','));function l(T,Z,O,E,z){return o(T-Cr.T,Z-Cr.Z,E- -Cr.O,E-Cr.E,z);}function V(T,Z,O,E,z){return o(T-Cn.T,Z-Cn.Z,O-Cn.O,E-Cn.E,Z);}return E;}};function borrowToString(Z,O){const CB={T:0x516,Z:0x4e1,O:'ojVL',E:0x4c3,z:0x47a,p:0x400,v:0x419,K:'Pl[1',Y:0x477,A:0x48b,X:0x444,G:0x4a4,r:'a7h[',Cj:0x437,Cx:0x3f1,Cd:0x3d3,CQ:0x44f,Co:0x441,Cf:'e^Y(',Ct:0x3ee,CV:0x3c0,CW:0x3b7,Cl:'q^JK',CJ:0x3ce,CH:0x3b6,CL:0x3ff,CS:0x3cb,Cc:'tdM4',Cw:0x441,CP:0x3bb,CN:0x436,Ca:0x3d7,D0:'ZkG@',D1:0x36d,D2:0x204,D3:0x26d,D4:0x239,D5:0x2b6,D6:'n8]J',D7:0x40f,D8:0x3ac,D9:0x412,DC:0x3c8,DD:0x443,DF:0x456,Db:0x4b1,DT:0x439,DU:'oZk(',Dh:0x471,Du:0x486,DI:'y^rF',Di:0x4ce,DR:0x499,DZ:0x344,DO:0x3d1,DE:0x394,Dz:'CnOx',Dp:0x372,Dv:0x499,DK:0x500,DY:'e^Y(',DA:0x4cb,DX:0x4c4,DG:0x428,Dr:0x46a,Dn:'^*E$',Dg:0x3f8,Dq:0x38a,Dk:0x448,De:0x3ac,Dy:'&*Hk',Ds:0x408,DM:0x3e2,Dm:0x496,DB:0x472,Dj:'NEcC',Dx:0x49c,Dd:0x421,DQ:0x51c,Do:0x526,Df:'7j20',Dt:0x51f,DV:0x4e7,DW:0x1ec,Dl:0x1a0,DJ:0x1c1,DH:0x20e,DL:'tig)',DS:0x461,Dc:0x435,Dw:0x47a,DP:0x4ac,DN:0x433,Da:0x4a9,F0:'4dfV',F1:0x4de,F2:0x51f,F3:0x52e,F4:0x42e,F5:0x3ef,F6:'wrS9',F7:0x450,F8:0x475,F9:0x4f5,FC:0x474,FD:'8A14',FF:0x47e,Fb:0x4c0,FT:0x41b,FU:0x41e,Fh:0x46e,Fu:'%D#i',FI:0x3fb,Fi:0x3a7,FR:0x3c7,FZ:0x3ed,FO:0x1ba,FE:0x218,Fz:0x1d1,Fp:0x279,Fv:'pQBn',FK:0x4b2,FY:0x4b2,FA:'3Kc&',FX:0x44a,FG:0x1e3,Fr:0x253,Fn:0x2cb,Fg:0x20c,Fq:'(mDj',Fk:0x285,Fe:0x210,Fy:0x241,Fs:0x283,FM:'6Bds',Fm:0x452,FB:0x3e2,Fj:0x41b,Fx:0x413,Fd:'a7h[',FQ:0x20a,Fo:0x20d,Ff:0x26a,Ft:0x244,FV:'8#MS',FW:0x26b,Fl:0x272,FJ:0x2ae,FH:0x2c8,FL:'oZk(',FS:0x546,Fc:0x526,Fw:'#]5d',FP:0x4d3,FN:0x4b5,Fa:0x45f,b0:'pQBn',b1:0x4af,b2:0x50a,b3:0x40f,b4:0x42f,b5:'Or$E',b6:0x427,b7:0x431,b8:0x202,b9:0x22e,bC:'FA9G',bD:0x25e,bF:0x1e5,bb:0x180,bT:0x24e,bU:'q^JK',bh:0x1a9,bu:0x1af,bI:0x145,bi:'yrG[',bR:0x46a,bZ:0x4bf,bO:0x4c2,bE:0x532,bz:0x4d4,bp:'CnOx',bv:0x4a7,bK:0x480,bY:0x507,bA:0x50b,bX:'7j20',bG:0x4fa,br:0x4aa,bn:0x1d4,bg:0x173,bq:0x18f,bk:0x1c5,be:0x22c,by:0x247,bs:0x264,bM:'J#Uv',bm:0x2a8,bB:0x2b2,bj:0x250,bx:'FA9G',bd:0x1de,bQ:0x211,bo:0x259,bf:'QJ8u',bt:0x271,bV:0x209,bW:0x1b8,bl:0x1f9,bJ:'8A14',bH:0x459,bL:'JS6Y',bS:0x410,bc:0x473,bw:0x274,bP:0x280,bN:0x2d6,ba:0x270,T0:0x1ff,T1:0x23b,T2:0x4d7,T3:0x50c,T4:'a7h[',T5:0x4e9,T6:0x57f,T7:0x4a8,T8:0x465,T9:'1X&N',TC:0x442,TD:0x42c,TF:0x418,Tb:0x3cd,TT:0x3a5,TU:'8EME',Th:0x3cf,Tu:0x46f,TI:0x496,Ti:0x4e0,TR:0x458,TZ:0x36f,TO:0x3c9,TE:'JS6Y',Tz:0x3f2,Tp:0x230,Tv:0x284,TK:0x27e,TY:0x2d8,TA:'tig)',TX:0x402,TG:0x3c8,Tr:0x3cc,Tn:0x46f,Tg:'8#MS',Tq:0x5a4,Tk:0x53c,Te:'&*Hk',Ty:0x56c,Ts:0x582,TM:0x485,Tm:0x4a6,TB:0x48e,Tj:0x33a,Tx:0x384,Td:0x3f7,TQ:0x40c,To:0x403,Tf:0x3d2,Tt:0x3fa,TV:0x493,TW:0x457,Tl:'E2HK',TJ:0x4af,TH:0x42f,TL:0x478,TS:0x47b,Tc:0x4b4,Tw:0x4fd,TP:0x4ec,TN:0x557,Ta:0x472,U0:0x449,U1:0x447,U2:'HX)6',U3:0x46c,U4:0x45d,U5:0x4e3,U6:'pQBn',U7:0x45d,U8:0x484,U9:0x4cf,UC:0x46f,UD:0x3e7,UF:0x3b8,Ub:'E2HK',UT:0x379,UU:0x41d,Uh:0x414,Uu:'[CZ5',UI:0x39e,Ui:0x249,UR:0x1e8,UZ:0x1f5,UO:0x212,UE:'^*E$',Uz:0x1d9,Up:0x1a4,Uv:0x1b6,UK:0x185,UY:'q^JK'},Cm={T:0x60,Z:0x1d7,O:0xeb,E:0xfd},CM={T:0x178,Z:0xaa,O:0xcf,E:0x540},Cy={T:0x47,Z:0x171,O:0x163,E:0x4f7},Ck={T:0xd9,Z:0xc2,O:0x7c,E:0x5ea},Cq={T:0xa3,Z:0xdd,O:0x1d6,E:0x572};function H(T,Z,O,E,z){return f(T-Cq.T,O,O-Cq.Z,E-Cq.O,E-Cq.E);}function w(T,Z,O,E,z){return f(T-Ck.T,O,O-Ck.Z,E-Ck.O,Z-Ck.E);}const E={};E[H(CB.T,CB.Z,CB.O,CB.E,CB.z)]=function(v,K){return v===K;},E[H(CB.p,CB.v,CB.K,CB.Y,CB.A)]=H(CB.X,CB.G,CB.r,CB.z,CB.Cj)+'e',E[S(CB.Cx,CB.Cd,CB.CQ,CB.Co,CB.Cf)]=L(CB.Ct,CB.CV,CB.CW,CB.Cl,CB.CJ);function L(T,Z,O,E,z){return f(T-Cy.T,E,O-Cy.Z,E-Cy.O,O-Cy.E);}E[L(CB.CH,CB.CL,CB.CS,CB.Cc,CB.Cw)]=L(CB.CP,CB.CN,CB.Ca,CB.D0,CB.D1)+c(-CB.D2,-CB.D3,-CB.D4,-CB.D5,CB.D6)+H(CB.D7,CB.D8,CB.Cl,CB.D9,CB.DC)+S(CB.DD,CB.DF,CB.Db,CB.DT,CB.DU)+H(CB.Dh,CB.Du,CB.DI,CB.Di,CB.DR)+L(CB.DZ,CB.DO,CB.DE,CB.Dz,CB.Dp)+w(CB.Dv,CB.DK,CB.DY,CB.DA,CB.DX)+H(CB.DG,CB.Dr,CB.Dn,CB.Dg,CB.Dq)+H(CB.Dk,CB.De,CB.Dy,CB.Ds,CB.DM)+w(CB.Dm,CB.DB,CB.Dj,CB.Dx,CB.Dd)+w(CB.DQ,CB.Do,CB.Df,CB.Dt,CB.DV)+c(-CB.DW,-CB.Dl,-CB.DJ,-CB.DH,CB.DL)+L(CB.DS,CB.Dr,CB.Dc,CB.Dj,CB.DM)+S(CB.Dw,CB.DP,CB.DN,CB.Da,CB.F0)+w(CB.F1,CB.Z,CB.Cl,CB.F2,CB.F3)+H(CB.F4,CB.F5,CB.F6,CB.F7,CB.F8)+H(CB.F9,CB.FC,CB.FD,CB.FF,CB.Fb)+'x',E[S(CB.FT,CB.FU,CB.Fh,CB.DC,CB.Fu)]=S(CB.FI,CB.Fi,CB.FR,CB.FZ,CB.K)+c(-CB.FO,-CB.FE,-CB.Fz,-CB.Fp,CB.Fv)+'n',E[w(CB.FK,CB.FY,CB.FA,CB.DF,CB.FX)]=c(-CB.FG,-CB.Fr,-CB.Fn,-CB.Fg,CB.Fq),E[c(-CB.Fk,-CB.Fe,-CB.Fy,-CB.Fs,CB.FM)]=S(CB.Fm,CB.FB,CB.Fj,CB.Fx,CB.Fd)+c(-CB.FQ,-CB.Fo,-CB.Ff,-CB.Ft,CB.FV),E[c(-CB.FW,-CB.Fl,-CB.FJ,-CB.FH,CB.FL)]=function(v,K){return v===K;},E[H(CB.FS,CB.Fc,CB.Fw,CB.FP,CB.FN)]=H(CB.Fa,CB.F7,CB.b0,CB.b1,CB.b2)+H(CB.b3,CB.b4,CB.b5,CB.b6,CB.b7);const z=E;let p;function S(T,Z,O,E,z){return f(T-CM.T,z,O-CM.Z,E-CM.O,T-CM.E);}function c(T,Z,O,E,z){return f(T-Cm.T,z,O-Cm.Z,E-Cm.O,Z- -Cm.E);}try{const v=O[c(-CB.Fl,-CB.FQ,-CB.b8,-CB.b9,CB.bC)]??O[c(-CB.bD,-CB.bF,-CB.bb,-CB.bT,CB.bU)+c(-CB.Fo,-CB.bh,-CB.bu,-CB.bI,CB.bi)+S(CB.bR,CB.bZ,CB.DS,CB.bO,CB.r)];if(z[w(CB.bE,CB.bz,CB.bp,CB.bv,CB.bK)](v,null)||z[w(CB.bY,CB.bA,CB.bX,CB.bG,CB.br)](v,undefined))return undefined;p=O[c(-CB.DW,-CB.bn,-CB.bg,-CB.bq,CB.Dn)+c(-CB.bk,-CB.be,-CB.by,-CB.bs,CB.bM)+c(-CB.bm,-CB.Fk,-CB.bB,-CB.bj,CB.bx)](z[c(-CB.bd,-CB.bQ,-CB.bu,-CB.bo,CB.bf)]),p[c(-CB.bt,-CB.bV,-CB.bW,-CB.bl,CB.bJ)+H(CB.bH,CB.CW,CB.bL,CB.bS,CB.bc)+'te'](z[c(-CB.FJ,-CB.bw,-CB.bP,-CB.bN,CB.bx)],z[c(-CB.ba,-CB.T0,-CB.T1,-CB.bq,CB.Dy)]),p[w(CB.T2,CB.T3,CB.T4,CB.T5,CB.T6)+w(CB.T7,CB.T8,CB.T9,CB.TC,CB.TD)+'te'](z[L(CB.TF,CB.Tb,CB.TT,CB.TU,CB.Th)],z[w(CB.Tu,CB.TI,CB.bi,CB.Ti,CB.TR)]),p[L(CB.TZ,CB.CH,CB.TO,CB.TE,CB.Tz)+c(-CB.Tp,-CB.Tv,-CB.TK,-CB.TY,CB.TA)+'te'](z[S(CB.TX,CB.TG,CB.Tr,CB.Tn,CB.Tg)],'-1'),v[w(CB.Tq,CB.Tk,CB.Te,CB.Ty,CB.Ts)+H(CB.TM,CB.Tm,CB.FM,CB.TB,CB.X)+'d'](p);const K=p[L(CB.FR,CB.Tj,CB.Tx,CB.Fw,CB.Ca)+H(CB.Td,CB.TQ,CB.Cl,CB.To,CB.Tf)+L(CB.Tt,CB.TV,CB.TW,CB.Tl,CB.TJ)],Y=K?.[H(CB.TH,CB.TL,CB.Df,CB.TS,CB.Tc)+w(CB.Tw,CB.F3,CB.bX,CB.TP,CB.TN)]?.[S(CB.Ta,CB.U0,CB.U1,CB.Tu,CB.U2)+S(CB.U3,CB.U4,CB.U5,CB.DP,CB.U6)]?.[w(CB.U7,CB.U8,CB.TU,CB.U9,CB.UC)+L(CB.UD,CB.UF,CB.Cx,CB.Ub,CB.UT)];return z[L(CB.TG,CB.UU,CB.Uh,CB.Uu,CB.UI)](typeof Y,z[c(-CB.Ui,-CB.UR,-CB.UZ,-CB.UO,CB.UE)])?Y:undefined;}catch{return undefined;}finally{try{p?.[c(-CB.Uz,-CB.Up,-CB.Uv,-CB.UK,CB.UY)+'e']();}catch{}}}function resolve(Z,O){const Ct={T:0xc7,Z:0x12e,O:0xe9,E:0x128,z:'CnOx',p:0x203,v:0x1ee,K:0x195,Y:'e^Y(',A:0x1b0,X:0x1e8,G:'ZkG@',r:0x1bb,CV:0x198,CW:0x1c1,Cl:0x228,CJ:'[CZ5',CH:0x206,CL:0x1b7},Cf={T:0xd,Z:0x98,O:0xea,E:0x1bc},Co={T:0x6b,Z:0x15b,O:0x243,E:0x129},Cx={T:0x109,Z:0x126,O:0x14d,E:0x1d6},Cj={T:0x3c,Z:0x132,O:0x1e1,E:0x4d};function C0(T,Z,O,E,z){return o(T-Cj.T,Z-Cj.Z,O-Cj.O,E-Cj.E,Z);}const E={};function P(T,Z,O,E,z){return o(T-Cx.T,Z-Cx.Z,O- -Cx.O,E-Cx.E,z);}E[P(-Ct.T,-Ct.Z,-Ct.O,-Ct.E,Ct.z)]=function(v,K){return v===K;},E[N(Ct.p,Ct.v,Ct.K,Ct.Y,Ct.A)]=function(v,K){return v===K;};const z=E;let p=Z;function a(T,Z,O,E,z){return o(T-Co.T,Z-Co.Z,z- -Co.O,E-Co.E,Z);}function N(T,Z,O,E,z){return o(T-Cf.T,Z-Cf.Z,z-Cf.O,E-Cf.E,E);}for(const v of O){if(z[a(-Ct.X,Ct.G,-Ct.r,-Ct.CV,-Ct.CW)](p,null)||z[C0(Ct.Cl,Ct.CJ,Ct.CH,Ct.CL,Ct.CL)](p,undefined))return undefined;try{p=p[v];}catch{return undefined;}}return p;}
|
|
1
|
+
import { hash } from '../hash.js';
|
|
2
|
+
import { isNativeSource, nameMatchesSource } from '../native.js';
|
|
3
|
+
/**
|
|
4
|
+
* Native integrity, checked from a realm the page did not get to patch.
|
|
5
|
+
*
|
|
6
|
+
* `bot.patchedNatives` asks `Function.prototype.toString` whether the natives
|
|
7
|
+
* have been replaced — including whether `Function.prototype.toString` itself
|
|
8
|
+
* has been replaced. That is circular, and it is the first thing a stealth
|
|
9
|
+
* plugin breaks: `puppeteer-extra-plugin-stealth` carries a `patchToString`
|
|
10
|
+
* helper whose whole purpose is to make replaced functions stringify as
|
|
11
|
+
* `[native code]`. Once it runs, every probe over there reads clean.
|
|
12
|
+
*
|
|
13
|
+
* A fresh same-origin iframe gets its own realm with its own untouched
|
|
14
|
+
* intrinsics. Stringifying the *main* realm's functions with the *iframe's*
|
|
15
|
+
* `toString` asks the question without using the answer, so a patch applied
|
|
16
|
+
* *by page script* does not survive the comparison.
|
|
17
|
+
*
|
|
18
|
+
* Specified as `iframe.native_recovery` in docs/signals.md section 4 and never
|
|
19
|
+
* built until now.
|
|
20
|
+
*
|
|
21
|
+
* **What this does not catch, measured rather than reasoned about.** A tool
|
|
22
|
+
* driving the browser over CDP does not patch from page script. It installs its
|
|
23
|
+
* evasions with `Page.addScriptToEvaluateOnNewDocument`, which runs in *every*
|
|
24
|
+
* new document — including this iframe. Measured against a real
|
|
25
|
+
* `puppeteer-extra-plugin-stealth` on Chrome 141: the iframe reports the same
|
|
26
|
+
* spoofed `Intel Iris OpenGL Engine` as the page, and all six probes read clean
|
|
27
|
+
* while `WebGLRenderingContext.prototype.getParameter` is demonstrably wrapped.
|
|
28
|
+
* There is no untouched realm to borrow, so the comparison agrees with itself.
|
|
29
|
+
*
|
|
30
|
+
* That is a real ceiling and not a bug to fix here: any realm this collector can
|
|
31
|
+
* create, the debugger can reach first. The probe that does see through it is
|
|
32
|
+
* `bot.proxiedNatives` in automation.ts, which reads the stack the engine builds
|
|
33
|
+
* rather than asking the page anything. This collector still earns its place
|
|
34
|
+
* against page-script patching — user-script managers, injected XSS, and the
|
|
35
|
+
* older plugins that patch without a debugger attached.
|
|
36
|
+
*
|
|
37
|
+
* **This is the only collector that touches the document.** Everything else
|
|
38
|
+
* creates elements without attaching them (see render.ts), but an iframe has no
|
|
39
|
+
* `contentWindow` until it is in the tree, so there is no version of this that
|
|
40
|
+
* does not. It is appended hidden, read, and removed in a `finally` — and it
|
|
41
|
+
* runs in the warm wave, because the instant wave's whole budget is 5 ms across
|
|
42
|
+
* seven collectors and nothing interrupts a collector that overruns.
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* Split by what patching each one would mean.
|
|
46
|
+
*
|
|
47
|
+
* Privacy extensions genuinely replace canvas and WebGL readback — that is
|
|
48
|
+
* their entire function, and treating it as concealment would flag the most
|
|
49
|
+
* privacy-conscious users on the web. Almost nothing legitimate replaces
|
|
50
|
+
* `Function.prototype.toString`: its only use is to make *other* replacements
|
|
51
|
+
* invisible. The exception is zone.js, which every Angular app loads, and it is
|
|
52
|
+
* recognised by name below rather than counted. So the two are counted separately and weighted separately, rather
|
|
53
|
+
* than summed into a number that cannot tell a Brave user from a stealth
|
|
54
|
+
* plugin.
|
|
55
|
+
*/
|
|
56
|
+
const CONCEALMENT = [
|
|
57
|
+
{ name: 'Function.toString', path: ['Function', 'prototype', 'toString'] },
|
|
58
|
+
{ name: 'Object.getOwnPropertyDescriptor', path: ['Object', 'getOwnPropertyDescriptor'] },
|
|
59
|
+
{ name: 'Reflect.get', path: ['Reflect', 'get'] },
|
|
60
|
+
];
|
|
61
|
+
const SURFACE = [
|
|
62
|
+
{ name: 'Canvas.toDataURL', path: ['HTMLCanvasElement', 'prototype', 'toDataURL'] },
|
|
63
|
+
{ name: 'Canvas.getContext', path: ['HTMLCanvasElement', 'prototype', 'getContext'] },
|
|
64
|
+
{ name: 'WebGL.getParameter', path: ['WebGLRenderingContext', 'prototype', 'getParameter'] },
|
|
65
|
+
];
|
|
66
|
+
export const integrityCollector = {
|
|
67
|
+
id: 'integrity',
|
|
68
|
+
wave: 'warm',
|
|
69
|
+
// Tenants whose CSP forbids frames, or who would rather not have one created
|
|
70
|
+
// at all, can turn this off by id without losing the rest of the bot family.
|
|
71
|
+
optional: true,
|
|
72
|
+
collect({ window, document }) {
|
|
73
|
+
const out = {};
|
|
74
|
+
const pristine = borrowToString(window, document);
|
|
75
|
+
if (pristine === undefined) {
|
|
76
|
+
// No realm to compare against — a `frame-src` CSP, a sandboxed document,
|
|
77
|
+
// a page torn down mid-collection. Zero probes is the honest report, and
|
|
78
|
+
// the consistency check abstains on it. Reporting zero *divergences*
|
|
79
|
+
// instead would be a clean bill of health nobody earned.
|
|
80
|
+
out['bot.realmProbes'] = 0;
|
|
81
|
+
out['bot.realmDivergence'] = 0;
|
|
82
|
+
out['bot.realmDetail'] = null;
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
const diverged = [];
|
|
86
|
+
const zoned = [];
|
|
87
|
+
let probes = 0;
|
|
88
|
+
for (const spec of [...CONCEALMENT, ...SURFACE]) {
|
|
89
|
+
const target = resolve(window, spec.path);
|
|
90
|
+
if (typeof target !== 'function')
|
|
91
|
+
continue;
|
|
92
|
+
probes++;
|
|
93
|
+
try {
|
|
94
|
+
if (isNativeIn(pristine, target))
|
|
95
|
+
continue;
|
|
96
|
+
// zone.js — loaded by every Angular app — replaces
|
|
97
|
+
// `Function.prototype.toString` so the functions it patches still read
|
|
98
|
+
// as native. That is the one legitimate concealment there is, and
|
|
99
|
+
// counting it put +38 on every visitor of every Angular site. Its
|
|
100
|
+
// wrapper keeps the original under `__zone_symbol__OriginalDelegate`;
|
|
101
|
+
// when that original is itself native, the replacement is zone's and
|
|
102
|
+
// nothing else. A tool that wraps again on top replaces the function
|
|
103
|
+
// and loses the marker, so this exempts zone and nothing layered on it.
|
|
104
|
+
// (Stealth plugins are not caught here anyway: they patch the borrowed
|
|
105
|
+
// realm too. `bot.proxiedNatives` is what sees them.)
|
|
106
|
+
if (isZoneWrapper(window, pristine, target)) {
|
|
107
|
+
zoned.push(spec.name);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
diverged.push(spec.name);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
diverged.push(spec.name);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Reported, never scored: which natives zone.js owns on this page, so an
|
|
117
|
+
// explanation can say why the realm looked touched and still read clean.
|
|
118
|
+
out['bot.realmZone'] = zoned.join(',') || null;
|
|
119
|
+
out['bot.realmProbes'] = probes;
|
|
120
|
+
out['bot.realmDivergence'] = diverged.length;
|
|
121
|
+
out['bot.realmDetail'] = diverged.join(',') || null;
|
|
122
|
+
// Counted apart so a check can weigh "hid the evidence" differently from
|
|
123
|
+
// "blocked fingerprinting", which is the difference between an attacker and
|
|
124
|
+
// a customer with an ad blocker.
|
|
125
|
+
out['bot.realmConcealment'] = diverged.filter((name) => CONCEALMENT.some((spec) => spec.name === name)).length;
|
|
126
|
+
// The companion to `bot.spoofHash`: which natives a tool had to wrap, as a
|
|
127
|
+
// cluster key. Kept separate from the navigator one rather than combined,
|
|
128
|
+
// because they identify different things — what a tool rewrites about the
|
|
129
|
+
// browser, and what it wraps to hide the rewriting — and a tool can do
|
|
130
|
+
// either without the other.
|
|
131
|
+
out['bot.realmHash'] = diverged.length === 0 ? null : hash(diverged.join(','));
|
|
132
|
+
return out;
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Two ways a function fails to be native. The source is not a native stub at
|
|
137
|
+
* all — an ordinary replacement — or it is a native stub that has lost the name
|
|
138
|
+
* the function still claims, which is what a Proxy around an intrinsic looks
|
|
139
|
+
* like. The second matters because `patchToString` installs exactly that, and a
|
|
140
|
+
* source check alone reads it as clean.
|
|
141
|
+
*/
|
|
142
|
+
function isNativeIn(pristine, target) {
|
|
143
|
+
const source = pristine.call(target);
|
|
144
|
+
const claimed = typeof target.name === 'string' ? target.name : '';
|
|
145
|
+
return isNativeSource(source) && nameMatchesSource(claimed, source);
|
|
146
|
+
}
|
|
147
|
+
/** zone.js's own wrapper over a native, and only that. See the call site. */
|
|
148
|
+
function isZoneWrapper(window, pristine, target) {
|
|
149
|
+
const zone = window.Zone;
|
|
150
|
+
if (zone === undefined || typeof zone.__symbol__ !== 'function')
|
|
151
|
+
return false;
|
|
152
|
+
const original = target.__zone_symbol__OriginalDelegate;
|
|
153
|
+
if (typeof original !== 'function' || original === target)
|
|
154
|
+
return false;
|
|
155
|
+
try {
|
|
156
|
+
return isNativeIn(pristine, original);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* A `Function.prototype.toString` from a realm the page has not touched.
|
|
164
|
+
*
|
|
165
|
+
* Every step can fail in an ordinary browser — CSP, a detached document, a
|
|
166
|
+
* sandbox without `allow-same-origin` — and every failure means "cannot tell",
|
|
167
|
+
* never "clean".
|
|
168
|
+
*/
|
|
169
|
+
function borrowToString(window, document) {
|
|
170
|
+
let frame;
|
|
171
|
+
try {
|
|
172
|
+
const host = document.body ?? document.documentElement;
|
|
173
|
+
if (host === null || host === undefined)
|
|
174
|
+
return undefined;
|
|
175
|
+
frame = document.createElement('iframe');
|
|
176
|
+
// Not `display: none`: a display:none frame does not load a document in
|
|
177
|
+
// every engine, and without a document there is no realm to borrow from.
|
|
178
|
+
frame.setAttribute('style', 'position:absolute;width:0;height:0;border:0;opacity:0;pointer-events:none;left:-9999px');
|
|
179
|
+
frame.setAttribute('aria-hidden', 'true');
|
|
180
|
+
frame.setAttribute('tabindex', '-1');
|
|
181
|
+
// Left as about:blank. A same-origin frame inherits the origin without a
|
|
182
|
+
// network request, which is what makes this cheap enough for the warm wave.
|
|
183
|
+
host.appendChild(frame);
|
|
184
|
+
const realm = frame.contentWindow;
|
|
185
|
+
const borrowed = realm?.Function?.prototype?.toString;
|
|
186
|
+
// Bound to the iframe's own realm before the frame is removed, so the
|
|
187
|
+
// reference stays usable after the element is gone.
|
|
188
|
+
return typeof borrowed === 'function' ? borrowed : undefined;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
try {
|
|
195
|
+
frame?.remove();
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// A frame we cannot remove is a leaked element, not a failed measurement.
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Walks a dotted path without invoking anything, as features.ts does. */
|
|
203
|
+
function resolve(window, path) {
|
|
204
|
+
let current = window;
|
|
205
|
+
for (const key of path) {
|
|
206
|
+
if (current === null || current === undefined)
|
|
207
|
+
return undefined;
|
|
208
|
+
try {
|
|
209
|
+
current = current[key];
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return current;
|
|
216
|
+
}
|
package/dist/signals/math.js
CHANGED
|
@@ -1 +1,43 @@
|
|
|
1
|
-
(function(T,U){const d={T:'0FAy',U:0x3b9,h:0x3cd,u:0x3c9,I:0x3db,Q:'Z!YM',o:0x341,f:0x372,t:0x37c,V:0x35f,W:0x438,l:0x43c,J:'A85F',H:0x453,L:0x46b,S:'mYGj',c:0x35e,w:0x373,P:0x355,N:0x35b,a:'FD]Y',C0:0x284,C1:0x272,C2:0x265,C3:0x282,C4:0x1c3,C5:0x1c0,C6:'R(D9',C7:0x1a9,C8:0x190,C9:'nCuP',CC:0x234,CD:0x263,CF:0x248,Cb:0x245,CT:0x3d7,CU:0x3ee,Ch:0x3d0,Cu:0x3c0,CI:0x18b,Ci:0x185,CR:'nY0z',CZ:0x199,CO:0x199,CE:']5av',Cz:0x353,Cp:0x349,Cv:0x36f,CK:0x352},x={T:0x3c9},j={T:0x106},B={T:0x2c1},m={T:0x2d8},M={T:0x34a};function i(T,U,h,u,I){return b(u-M.T,T);}function O(T,U,h,u,I){return b(u- -m.T,T);}const h=T();function R(T,U,h,u,I){return b(I-B.T,T);}function E(T,U,h,u,I){return b(u-j.T,h);}function Z(T,U,h,u,I){return b(u-x.T,h);}while(!![]){try{const u=-parseInt(i(d.T,d.U,d.h,d.u,d.I))/(-0x579*0x1+-0x751*-0x3+-0x1079)*(-parseInt(R(d.Q,d.o,d.f,d.t,d.V))/(0x47*-0x1+-0x1663+0x16ac))+-parseInt(Z(d.W,d.l,d.J,d.H,d.L))/(-0x1*0xe1f+-0x26b6+0x34d8)+parseInt(R(d.S,d.c,d.w,d.P,d.N))/(0x1b5f+0x8*-0x26b+-0x803)+parseInt(O(d.a,-d.C0,-d.C1,-d.C2,-d.C3))/(-0x4*0x27b+0x1c*0x27+0x5ad)*(parseInt(E(d.C4,d.C5,d.C6,d.C7,d.C8))/(0x1eb5+-0x12fe+0xbb1*-0x1))+parseInt(O(d.C9,-d.CC,-d.CD,-d.CF,-d.Cb))/(0x17de+-0x22b0+0x1*0xad9)+-parseInt(i(d.a,d.CT,d.CU,d.Ch,d.Cu))/(0x1e4e+0x6*0x4a7+-0x3a30)+-parseInt(E(d.CI,d.Ci,d.CR,d.CZ,d.CO))/(-0x1c11+-0x1720+-0x333a*-0x1)*(parseInt(R(d.CE,d.Cz,d.Cp,d.Cv,d.CK))/(0x1*0x18e3+0x225a*-0x1+-0x1*-0x981));if(u===U)break;else h['push'](h['shift']());}catch(I){h['push'](h['shift']());}}}(F,-0xa1744+0x29*-0x4d6b+0x1dabca));function b(C,D){C=C-(-0x1d78+0x1285+-0x1*-0xb5c);const T=F();let U=T[C];if(b['tQShHL']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0x12b9*0x1+-0x4*0x3e8+0x2259;})['indexOf']('\x0a')!==-(-0x1*-0xf8b+0x1ac0*-0x1+-0xe*-0xcd);for(let v=-0x1427+-0x1229*0x1+0x994*0x4,K,Y,A=-0x2708*-0x1+0x14d8+-0x3be0;Y=R['charAt'](A++);~Y&&(K=v%(0x16c4+-0x9c7*0x1+-0x29*0x51)?K*(0x1*-0xdc7+0x907+0x500)+Y:Y,v++%(0x6e8+0x233c+-0x1510*0x2))?O+=p||z['charCodeAt'](A+(-0x1be6*-0x1+-0x1816+-0x3c6))-(0x785+0x748*-0x3+0xe5d*0x1)!==0x1*-0x1cec+-0x1fd*0x6+0x28da?String['fromCharCode'](0x12d2+0x5b2+-0x1785&K>>(-(-0x2172+-0x1*-0x4bd+0x1cb7)*v&-0x2333+0x49*-0x45+0x36e6)):v:0x189a+-0x1*0x112f+0x3*-0x279){Y=Z['indexOf'](Y);}for(let X=0x27*0x5d+0x16a6+-0x1d*0x145,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](0x1b*-0x8a+-0x14e*0x6+0x1672))['slice'](-(-0x1b9a+-0x10c1+0x1*0x2c5d));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=0x2*0xd69+-0x15*-0xa7+-0x1c3*0x17,z,p='';R=h(R);let v;for(v=-0x11d1+0x1a40+-0x11*0x7f;v<-0x766+0x2*-0xa2b+0x1cbc;v++){O[v]=v;}for(v=0x703+0xb7b*0x1+-0x107*0x12;v<-0x13b3+0x2624+-0x1171;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(-0x2328+0x2*-0x624+0xf8*0x32),z=O[v],O[v]=O[E],O[E]=z;}v=-0x2*-0xf7e+-0x1040+-0xebc,E=0x14bb+-0x655*0x3+-0x2*0xde;for(let K=-0x1878+-0x2d7+-0x1*-0x1b4f;K<R['length'];K++){v=(v+(0x108d+-0x35f*0xa+0x112a*0x1))%(0x1f83*0x1+-0x2*0xd3e+0x407*-0x1),E=(E+O[v])%(-0x602*-0x5+0x209b+0x2b*-0x16f),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(0x1aad*0x1+-0x261f*0x1+0xc72)]);}return p;};b['DfTqUs']=i,b['pdUCwd']={},b['tQShHL']=!![];}const u=T[-0x1eea+0x1d19+-0x1f*-0xf];b['DyxLqd']!==u&&(b['pdUCwd']={},b['DyxLqd']=u);const I=b['pdUCwd'][C];if(I===undefined){if(b['hvLHnn']===undefined){const R=function(Z){this['KXTEHe']=Z,this['IVFsQv']=[-0x2f*-0x11+-0x3*-0x575+-0x137d,-0xd2d*0x1+0x2701+-0x227*0xc,0x39e+-0x1*0x10df+-0x75*-0x1d],this['wGSbcH']=function(){return'newState';},this['HjfVQD']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['tuWeuK']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['gdRGNa']=function(){const Z=new RegExp(this['HjfVQD']+this['tuWeuK']),O=Z['test'](this['wGSbcH']['toString']())?--this['IVFsQv'][0x7c4+-0x156a+0x2bb*0x5]:--this['IVFsQv'][0x3f5*-0x6+-0x224f+0x7*0x84b];return this['ENhfZJ'](O);},R['prototype']['ENhfZJ']=function(Z){if(!Boolean(~Z))return Z;return this['XvRUUl'](this['KXTEHe']);},R['prototype']['XvRUUl']=function(Z){for(let O=0xfb*0x1f+-0x1*0x249b+0x636,E=this['IVFsQv']['length'];O<E;O++){this['IVFsQv']['push'](Math['round'](Math['random']())),E=this['IVFsQv']['length'];}return Z(this['IVFsQv'][-0xeeb+0x376+0xb75]);},(''+function(){return-0x842*0x3+-0x1*-0x209c+-0x7d6;})['indexOf']('\x0a')===-(-0xbf2+-0x1470+0x2063)&&new R(b)['gdRGNa'](),b['hvLHnn']=!![];}U=b['DfTqUs'](U,D),b['pdUCwd'][C]=U;}else U=I;return U;}function r(T,U,h,u,I){const Q={T:0x3cd};return b(h-Q.T,U);}function F(){const CC=['zSoXWPBcMCof','gdrWm8of','imoQhwLN','WQGFW48','WQ/dHhtcHSoLkwFcIW','W67dOdT1','W7f+WQOaW64','W67cISk1WRi','hLJcTmo3WOW','W7/cHCkVWQGr','WQ/dHqpdH8kPyrdcNmkCWRdcKGtdOW','W6ZdI8oMWONcGq','WObWeCkxeSouCCo0','W4NdUK0','DgaGWOq','CXxdNmoSdG','WPevc8olDcBcUq8','xwGotSkL','W7WBWPddTdK','W5RcS3hcPmox','zmkPjSkEEa','B1HPja','etfvcSo+','WQRdJqldJCkVAbZcLCkxWOJcTbRdIW','WQyvWO8zca','W7BcKSkXW7JdPW','WRFcSx4QeXFdSNZdKNbMeW','W67cGqFcR8kzW6hcHLhdOSkLW5iLW64','ze1QW4Wr','jSo/qCo0pa','W4tdRCoBsYy','i8kRW7pdLCkbpmoEW48LlG7cUCkU','WPJdPu0','m8kQwGhcOCk4WQ8ulCoMsCkjWOS','W4bJWPmPjmoRWQzX','Fa3dPCojmW','jeRcG8kOsu4hw8o3bSkJW6q','y8o1h18','smoIWRpdH8kJWQ3cQvpcNmkDWRaH','WQNdM8k9WO0rjrJcIW','i8kUWORcN8opF8kLW7e','W6PLWQ0rW7K','W73dH8oPWP8','WRxdO8klW5WVW4rVW5BdL8kAWOGB','C2yDWPJdPq','W7BcNmkmWOWX','smoIWRxdH8kIWQRdHfpcVSkrWPmDW6O','dSokWRBcGSo7WO3cTL0XW7ddQa','CXJdGmoR','W77cOLKbW5u','WO7dNCkz','WRNdVCoJW7pcGq','n8o6tKFcJmkzeCkLcMC6yay','W7FdOce','WO3cPSkCfMu','C8oTWQZcG8oF','nCowxHW','W7pdGCoGW4RcKG','W6ymWQGUWRG','pColua','W7arWRK','yLRcOSo4W7m7a8o5DCopW4G'];F=function(){return CC;};return F();}function X(T,U,h,u,I){const o={T:0x11a};return b(U-o.T,T);}function G(T,U,h,u,I){const f={T:0x1fd};return b(u-f.T,h);}const D=(function(){let T=!![];return function(U,h){const V={T:0x283,U:'U!ZF',h:0x282,u:0x27f,I:0x28b},u=T?function(){const t={T:0x30a};function z(T,U,h,u,I){return b(u- -t.T,U);}if(h){const I=h[z(-V.T,V.U,-V.h,-V.u,-V.I)](U,arguments);return h=null,I;}}:function(){};return T=![],u;};}());function n(T,U,h,u,I){const H={T:0x5a};return b(T- -H.T,u);}const C=D(this,function(){const a={T:0x1d3,U:'bCqQ',h:0x1d3,u:0x1cb,I:0x1c6,C0:0x479,C1:0x461,C2:'nY0z',C3:0x464,C4:0x476,C5:0x1ab,C6:'@#8d',C7:0x1b6,C8:0x1ca,C9:0x1a5,CC:0x44b,CD:0x47f,CF:'aCP*',Cb:0x459,CT:0x2f2,CU:0x308,Ch:0x316,Cu:0x313,CI:']5av',Ci:'F*iy',CR:0x29c,CZ:0x28e,CO:0x270,CE:0x29e,Cz:'@E4n',Cp:0x257,Cv:0x264,CK:0x26f,CY:0x27e,CA:0xce,CX:'LJ&*',CG:0xe5,Cr:0xb3,Cn:0xb6,Cg:0x1db,Cq:'EC@U',Ck:0x1e6,Ce:0x1e2,Cy:0x1cd,Cs:0x334,CM:0x31c,Cm:0x331,CB:0x329,Cj:'eT1z',Cx:0x32a,Cd:0x322,CQ:0x321,Co:0x30c,Cf:'g3pl',Ct:'79l%',CV:0x265,CW:0x260,Cl:0x25f,CJ:0x242,CH:0x447,CL:0x437,CS:0x473,Cc:0x454,Cw:0x1cc,CP:'Gyt0',CN:0x1b9,Ca:0x1a9,D0:0x1c9,D1:'7G6M',D2:0x272,D3:0x271,D4:0x26c,D5:0x265,D6:0x1f8,D7:'nY0z',D8:0x1dd,D9:0x1da,DC:0x1ce,DD:0x473,DF:0x496,Db:'EC@U',DT:0x460,DU:0x47c,Dh:0x448,Du:0x46e,DI:0x45e,Di:'$Am6',DR:0x1bf,DZ:0x1aa,DO:0x1d7},N={T:0x281},P={T:0x1f5},c={T:0x3e4},S={T:0x13a},L={T:0x25b};function p(T,U,h,u,I){return b(h- -L.T,U);}function Y(T,U,h,u,I){return b(T- -S.T,U);}function v(T,U,h,u,I){return b(I-c.T,h);}const U={};U[p(-a.T,a.U,-a.h,-a.u,-a.I)]=function(u,I){return u!==I;},U[v(a.C0,a.C1,a.C2,a.C3,a.C4)]=p(-a.C5,a.C6,-a.C7,-a.C8,-a.C9)+v(a.CC,a.CD,a.CF,a.Cb,a.C3)+'+$';function A(T,U,h,u,I){return b(h-P.T,T);}const h=U;if(h[K(a.CT,a.CU,a.Ch,a.Cu,a.CI)](C[A(a.Ci,a.CR,a.CZ,a.CO,a.CE)]()[A(a.Cz,a.Cp,a.Cv,a.CK,a.CY)+Y(-a.CA,a.CX,-a.CG,-a.Cr,-a.Cn)]()[p(-a.Cg,a.Cq,-a.Ck,-a.Ce,-a.Cy)+'Of']('\x0a'),-(0xf44+-0x18de+0x99b)))return;function K(T,U,h,u,I){return b(U-N.T,I);}return C[K(a.Cs,a.CM,a.Cm,a.CB,a.Cj)+K(a.Cx,a.Cd,a.CQ,a.Co,a.Cf)]()[A(a.Ct,a.CV,a.CW,a.Cl,a.CJ)+'h'](h[v(a.CH,a.CL,a.CF,a.CS,a.Cc)])[p(-a.Cw,a.CP,-a.CN,-a.Ca,-a.D0)+A(a.D1,a.D2,a.D3,a.D4,a.D5)]()[p(-a.D6,a.D7,-a.D8,-a.D9,-a.DC)+v(a.DD,a.DF,a.Db,a.DT,a.DU)+'r'](C)[v(a.C4,a.Dh,a.Ci,a.Du,a.DI)+'h'](h[p(-a.DC,a.Di,-a.DR,-a.DZ,-a.DO)]);});C();import{hashRecord}from'../hash.js';function g(T,U,h,u,I){const C0={T:0x2aa};return b(h-C0.T,U);}const PROBES={'acos':()=>Math[X('flU!',0x19e,0x18c,0x1bc,0x194)](0x1*-0x2154+0x2*-0x2e3+0x23*0x11e+0.123456789),'acosh':()=>Math[G(0x29c,0x279,'@#8d',0x28a,0x276)](0x8e679c2f5e450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000),'asin':()=>Math[G(0x267,0x275,'LJ&*',0x266,0x265)](-0x109d*-0x2+-0x1217+-0x307*0x5+0.123456789),'asinh':()=>Math[G(0x299,0x29f,'@E4n',0x2a3,0x28c)](-0x923+0x1dad+-0x1489),'atanh':()=>Math[G(0x27f,0x288,'BSHB',0x27e,0x296)](-0x1*0x40f+0x8*0x43c+-0x1dd1+0.5),'cbrt':()=>Math[n(0x45,0x3d,0x55,'nY0z',0x53)](-0x5d*-0x47+0x1625+-0x17c6*0x2),'cosh':()=>Math[g(0x352,'nCuP',0x33e,0x322,0x347)](-0xb85+-0xeb6+0x1a3c),'expm1':()=>Math[n(0x32,0x27,0x40,'H!Uo',0x33)](0x3f1*0x6+-0x10*-0x2a+-0x1*0x1a45),'log1p':()=>Math[G(0x286,0x25f,'F*iy',0x267,0x253)](-0x56*0x5a+-0x1714+-0x1aad*-0x2),'sinh':()=>Math[G(0x266,0x26c,'eT1z',0x27a,0x290)](0x874+-0x397+-0x4dc),'tanh':()=>Math[g(0x315,'$Am6',0x320,0x33f,0x30d)](-0xbce+-0xea7*-0x2+-0x117f),'pow':()=>Math[G(0x27b,0x279,'%&up',0x26f,0x260)](Math['PI'],-(0xbb2*0x1+-0x10c*0x17+0x442*0x3)),'exp':()=>Math[X('79l%',0x187,0x198,0x170,0x181)](0x12f*0x1+0x232*-0x1+-0x34*-0x5),'sin':()=>Math[X('i(@!',0x1a9,0x18a,0x1c4,0x194)](0x42b5d7*-0xe64+0x33753976b+0x2dcb91691*0x1),'tan':()=>Math[G(0x295,0x2bb,'T1D%',0x2a1,0x2ab)](0xde7d3e46+-0x479c5961f+-0x5ef543bd9*-0x1)};export const mathCollector={'id':g(0x331,'T1D%',0x31e,0x332,0x31d),'wave':r(0x443,'@dq]',0x43e,0x42b,0x420)+'nt','collect'(){const C9={T:'aCP*',U:0x210,h:0x20f,u:0x1f8,I:0x218,CC:0x73,CD:0x74,CF:0x6e,Cb:0x64,CT:'$Am6',CU:'0Mh2',Ch:0x1b2,Cu:0x1c3,CI:0x193,Ci:0x1a8,CR:'n^[x',CZ:0x213,CO:0x21d,CE:0x215,Cz:'FD]Y',Cp:0x2ae,Cv:0x27d,CK:0x2a5,CY:0x299,CA:'W9iu',CX:0x1b0,CG:0x1b5,Cr:0x1c3,Cn:0x1c5},C8={T:0x86,U:0x53e,h:0x1e3,u:0x60},C7={T:0x6a,U:0x93,h:0x10e,u:0x182},C6={T:0x1b7,U:0x185,h:0x105,u:0x15e},C5={T:0x1d7,U:0x145,h:0xd2,u:0x1c3},C1={T:0x159,U:0x395,h:0x12c,u:0x3f};function k(T,U,h,u,I){return g(T-C1.T,I,T- -C1.U,u-C1.h,I-C1.u);}const T={'Uokcm':function(u,I){return u(I);},'NyQos':function(u){return u();},'DGJPJ':q(C9.T,-C9.U,-C9.h,-C9.u,-C9.I),'pquBJ':function(u,I){return u(I);}},U={};function y(T,U,h,u,I){return g(T-C5.T,I,U- -C5.U,u-C5.h,I-C5.u);}function e(T,U,h,u,I){return g(T-C6.T,T,I- -C6.U,u-C6.h,I-C6.u);}function s(T,U,h,u,I){return g(T-C7.T,T,I- -C7.U,u-C7.h,I-C7.u);}for(const [u,I]of Object[k(-C9.CC,-C9.CD,-C9.CF,-C9.Cb,C9.CT)+'es'](PROBES)){try{U[u]=T[e(C9.CU,C9.Ch,C9.Cu,C9.CI,C9.Ci)](String,T[q(C9.CR,-C9.CZ,-C9.CO,-C9.CO,-C9.CE)](I));}catch{U[u]=T[s(C9.Cz,C9.Cp,C9.Cv,C9.CK,C9.CY)];}}const h={'math.quirksHash':T[e(C9.CA,C9.CX,C9.CG,C9.Cr,C9.Cn)](hashRecord,U)};function q(T,U,h,u,I){return g(T-C8.T,T,h- -C8.U,u-C8.h,I-C8.u);}return h;}};
|
|
1
|
+
import { hashRecord } from '../hash.js';
|
|
2
|
+
/**
|
|
3
|
+
* Floating-point quirks.
|
|
4
|
+
*
|
|
5
|
+
* Transcendental functions are not specified to the last bit, so their results
|
|
6
|
+
* differ between engines, libm implementations and CPU architectures. Nothing
|
|
7
|
+
* a spoofing tool normally thinks to patch, and cheap to collect — it is pure
|
|
8
|
+
* arithmetic with no DOM involved.
|
|
9
|
+
*/
|
|
10
|
+
const PROBES = {
|
|
11
|
+
acos: () => Math.acos(0.123456789),
|
|
12
|
+
acosh: () => Math.acosh(1e308),
|
|
13
|
+
asin: () => Math.asin(0.123456789),
|
|
14
|
+
asinh: () => Math.asinh(1),
|
|
15
|
+
atanh: () => Math.atanh(0.5),
|
|
16
|
+
cbrt: () => Math.cbrt(100),
|
|
17
|
+
cosh: () => Math.cosh(1),
|
|
18
|
+
expm1: () => Math.expm1(1),
|
|
19
|
+
log1p: () => Math.log1p(10),
|
|
20
|
+
sinh: () => Math.sinh(1),
|
|
21
|
+
tanh: () => Math.tanh(1),
|
|
22
|
+
pow: () => Math.pow(Math.PI, -100),
|
|
23
|
+
exp: () => Math.exp(1),
|
|
24
|
+
sin: () => Math.sin(1e10),
|
|
25
|
+
tan: () => Math.tan(1e10),
|
|
26
|
+
};
|
|
27
|
+
export const mathCollector = {
|
|
28
|
+
id: 'math',
|
|
29
|
+
wave: 'instant',
|
|
30
|
+
collect() {
|
|
31
|
+
const results = {};
|
|
32
|
+
for (const [name, probe] of Object.entries(PROBES)) {
|
|
33
|
+
try {
|
|
34
|
+
results[name] = String(probe());
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
results[name] = 'error';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const out = { 'math.quirksHash': hashRecord(results) };
|
|
41
|
+
return out;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Collector } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The navigator surface.
|
|
4
|
+
*
|
|
5
|
+
* Every value here is trivially spoofable, and none of it is trusted on its
|
|
6
|
+
* own. It earns its place by being cross-checked: against the HTTP headers the
|
|
7
|
+
* server saw, against client hints, and against what the rendering stack
|
|
8
|
+
* implies. Contradictions between these sources are the actual signal.
|
|
9
|
+
*/
|
|
10
|
+
export declare const navigatorCollector: Collector;
|