加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
jd_mall_active.js 104.93 KB
一键复制 编辑 原始数据 按行查看 历史
瓜皮程序员 提交于 2021-12-16 23:16 . feat jd_mall_active
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851
/*
逛京东会场
活动入口:逛京东会场
自定义环境变量 ACT_URL 为json地址,格式参考默认
脚本更新时间:2021-12-7 14:20
脚本兼容: Node.js
新手写脚本,难免有bug,能用且用。
============Quantumultx===============
[task_local]
#逛京东会场
0 0,20 * * * https://raw.githubusercontent.com/yongyuanlin/jd_scripts/master/jd_mall_active.js, tag=逛京东会场, enabled=true
================Loon==============
[Script]
cron "0 0,20 * * *" script-path=https://raw.githubusercontent.com/yongyuanlin/jd_scripts/master/jd_mall_active.js,tag=逛京东会场
===============Surge=================
逛京东会场 = type=cron,cronexp="0 0,20 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/yongyuanlin/jd_scripts/master/jd_mall_active.js
============小火箭=========
逛京东会场 = type=cron,script-path=https://raw.githubusercontent.com/yongyuanlin/jd_scripts/master/jd_mall_active.js, cronexpr="0 0,20 * * *", timeout=3600, enable=true
*/
const jd_env = require('./utils/JDEnv.js');
const $ = jd_env.env('逛京东会场');
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
let cookiesArr = [],
cookie;
let actURL = '';
if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => {
cookiesArr.push(jdCookieNode[item]);
});
if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {};
if (process.env.ACT_URL && process.env.ACT_URL === '') console.log = () => {};
actURL = process.env.ACT_URL || 'https://cdn.jsdelivr.net/gh/yongyuanlin/cast@main/mast/mall_active.json';
} else {
cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...$.toObj($.getdata('CookiesJD') || '[]').map((item) => item.cookie)].filter((item) => !!item);
}
!(async () => {
if (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { 'open-url': 'https://bean.m.jd.com/bean/signIndex.action' });
return;
}
$.getCodeListerr = false;
mallActiveList = await getCodeList(actURL);
if ($.getCodeListerr === true) {
for (let i = 0; i < cookiesArr.length; i++) {
if (cookiesArr[i]) {
cookie = cookiesArr[i];
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]);
$.index = i + 1;
$.isLogin = true;
$.nickName = '';
//await TotalBean();
console.log(`\n******开始【京东账号${$.index}${$.nickName || $.UserName}*********\n`);
if (!$.isLogin) {
$.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {
'open-url': 'https://bean.m.jd.com/bean/signIndex.action',
});
if ($.isNode()) {
await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);
}
continue;
}
for (let vo in mallActiveList) {
for (let index = 0; index < mallActiveList[vo].length; index++) {
await main(vo, mallActiveList[vo][index].split(',')[random(0, mallActiveList[vo][index].split(',').length)]);
}
}
}
}
} else {
console.log('请正确配置自定义环境变量 ACT_URL 为json地址,格式参考默认');
}
})()
.catch((e) => {
$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '');
})
.finally(() => {
$.done();
});
async function main(urlID, code) {
let userName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]);
$.UA = `jdapp;iPhone;10.2.0;13.1.2;${randomString(
40
)};M/5.0;network/wifi;ADID/;model/iPhone8,1;addressid/2308460622;appBuild/167853;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;`;
$.max = false;
$.hotFlag = false;
$.code = code;
for (let i = 0; i < 1 && !$.max; i++) {
$.newCookie = '';
$.url1 = '';
$.url2 = '';
$.eid = '';
await getInfo1();
if (!$.url1) {
console.log(`${userName},初始化1失败,可能黑号`);
$.hotFlag = true;
break;
}
await getInfo2(urlID);
if (!$.url2) {
console.log(`${userName},初始化2失败,可能黑号`);
$.hotFlag = true;
break;
}
$.actId = $.url2.match(/mall\/active\/([^/]+)\/index\.html/) && $.url2.match(/mall\/active\/([^/]+)\/index\.html/)[1];
let arr = getBody($.UA, $.url2);
await getEid(arr);
console.log(`$.actId:` + $.actId);
await $.wait(500);
}
}
function getEid(arr) {
return new Promise((resolve) => {
const options = {
url: `https://gia.jd.com/fcf.html?a=${arr.a}`,
body: `d=${arr.d}`,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'User-Agent': $.UA,
},
};
$.post(options, async (err, resp, data) => {
try {
if (err) {
throw new Error(err);
} else {
if (data.indexOf('*_*') > 0) {
data = data.split('*_*', 2);
data = JSON.parse(data[1]);
$.eid = data.eid;
} else {
console.log(`京豆api返回数据为空,请检查自身原因`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
function randomString(e) {
e = e || 32;
let t = 'abcdef0123456789',
a = t.length,
n = '';
for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
return n;
}
async function getCoupons() {
return new Promise((resolve) => {
let opts = {
url: `https://api.m.jd.com/api?functionId=getUnionFreeCoupon&appid=u&loginType=2&_=${Date.now()}&body=${encodeURIComponent(JSON.stringify({ couponUrl: $.couponUrl, source: 20118 }))}`,
headers: {
Host: 'api.m.jd.com',
Accept: 'application/json, text/plain, */*',
Origin: 'https://prodev.m.jd.com',
'Accept-Encoding': 'gzip, deflate, br',
'User-Agent': $.UA,
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
Referer: 'https://prodev.m.jd.com/',
Cookie: `${cookie} ${$.newCookie}`,
},
};
$.get(opts, async (err, resp, data) => {
try {
if (err) {
console.log(`${$.toStr(err)}`);
console.log(`${$.name} API请求失败,请检查网路重试`);
} else {
let res = $.toObj(data, data);
if (typeof res == 'object') {
if (res.msg) {
console.log('异常:' + res.msg);
}
if (res.msg.indexOf('上限') !== -1 || res.msg.indexOf('未登录') !== -1) {
$.max = true;
}
if (res.code == 200 && res.data) {
if (res.data.couponType == 2) {
console.log(`获得红包:${res.data.discount || 0}元`);
}
}
} else {
console.log(data);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
});
});
}
async function getInfo2(urlID) {
return new Promise((resolve) => {
const options = {
url: $.url1,
followRedirect: false,
headers: {
Cookie: `${cookie} ${$.newCookie}`,
'user-agent': $.UA,
},
};
$.get(options, async (err, resp, data) => {
try {
let setcookies = (resp && resp['headers'] && (resp['headers']['set-cookie'] || resp['headers']['Set-Cookie'] || '')) || '';
let setcookie = '';
if (setcookies) {
if (typeof setcookies != 'object') {
setcookie = setcookies.split(',');
} else setcookie = setcookies;
for (let ck of setcookie) {
let name = ck.split(';')[0].trim();
if (name.split('=')[1]) {
if ($.newCookie.indexOf(name.split('=')[1]) == -1) $.newCookie += name.replace(/ /g, '') + '; ';
}
}
}
$.url2 = (resp && resp['headers'] && (resp['headers']['location'] || resp['headers']['Location'] || '')) || '';
$.url2 = decodeURIComponent($.url2);
switch (urlID) {
case 'prodev':
$.url2 = ($.url2.match(/(https:\/\/prodev\.m\.jd\.com\/mall[^'"]+)/) && $.url2.match(/(https:\/\/prodev\.m\.jd\.com\/mall[^'"]+)/)[1]) || '';
break;
case 'pro':
$.url2 = ($.url2.match(/(https:\/\/pro\.m\.jd\.com\/mall[^'"]+)/) && $.url2.match(/(https:\/\/pro\.m\.jd\.com\/mall[^'"]+)/)[1]) || '';
break;
default:
break;
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
async function getInfo1(cookie) {
return new Promise((resolve) => {
const options = {
url: `https://u.jd.com/${$.code}`,
followRedirect: false,
headers: {
Cookie: cookie,
'user-agent': $.UA,
},
};
$.get(options, async (err, resp, data) => {
try {
let setcookies = (resp && resp['headers'] && (resp['headers']['set-cookie'] || resp['headers']['Set-Cookie'] || '')) || '';
let setcookie = '';
if (setcookies) {
if (typeof setcookies != 'object') {
setcookie = setcookies.split(',');
} else setcookie = setcookies;
for (let ck of setcookie) {
let name = ck.split(';')[0].trim();
if (name.split('=')[1]) {
if ($.newCookie.indexOf(name.split('=')[1]) == -1) $.newCookie += name.replace(/ /g, '') + '; ';
}
}
}
$.url1 = (data.match(/(https:\/\/u\.jd\.com\/jda[^']+)/) && data.match(/(https:\/\/u\.jd\.com\/jda[^']+)/)[1]) || '';
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
});
}
const navigator = {
userAgent: $.isNode() ? require('./USER_AGENTS').USER_AGENT : $.UA,
plugins: { length: 0 },
language: 'zh-CN',
};
const screen = {
availHeight: 812,
availWidth: 375,
colorDepth: 24,
height: 812,
width: 375,
pixelDepth: 24,
};
const window = {};
const document = {
location: {
ancestorOrigins: {},
href: 'https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html',
origin: 'https://prodev.m.jd.com',
protocol: 'https:',
host: 'prodev.m.jd.com',
hostname: 'prodev.m.jd.com',
port: '',
pathname: '/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html',
search: '',
hash: '',
},
};
var start_time = new Date().getTime(),
_jdfp_canvas_md5 = '',
_jdfp_webgl_md5 = '',
_fingerprint_step = 1,
_JdEid = '',
_eidFlag = !1,
risk_jd_local_fingerprint = '',
_jd_e_joint_;
function t(a) {
if (null == a || void 0 == a || '' == a) return 'NA';
if (null == a || void 0 == a || '' == a) var b = '';
else {
b = [];
for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32;
}
a = 8 * a.length;
b[a >> 5] |= 128 << a % 32;
b[(((a + 64) >>> 9) << 4) + 14] = a;
a = 1732584193;
c = -271733879;
for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) {
var z = a,
C = c,
D = l,
B = h;
a = v(a, c, l, h, b[q + 0], 7, -680876936);
h = v(h, a, c, l, b[q + 1], 12, -389564586);
l = v(l, h, a, c, b[q + 2], 17, 606105819);
c = v(c, l, h, a, b[q + 3], 22, -1044525330);
a = v(a, c, l, h, b[q + 4], 7, -176418897);
h = v(h, a, c, l, b[q + 5], 12, 1200080426);
l = v(l, h, a, c, b[q + 6], 17, -1473231341);
c = v(c, l, h, a, b[q + 7], 22, -45705983);
a = v(a, c, l, h, b[q + 8], 7, 1770035416);
h = v(h, a, c, l, b[q + 9], 12, -1958414417);
l = v(l, h, a, c, b[q + 10], 17, -42063);
c = v(c, l, h, a, b[q + 11], 22, -1990404162);
a = v(a, c, l, h, b[q + 12], 7, 1804603682);
h = v(h, a, c, l, b[q + 13], 12, -40341101);
l = v(l, h, a, c, b[q + 14], 17, -1502002290);
c = v(c, l, h, a, b[q + 15], 22, 1236535329);
a = x(a, c, l, h, b[q + 1], 5, -165796510);
h = x(h, a, c, l, b[q + 6], 9, -1069501632);
l = x(l, h, a, c, b[q + 11], 14, 643717713);
c = x(c, l, h, a, b[q + 0], 20, -373897302);
a = x(a, c, l, h, b[q + 5], 5, -701558691);
h = x(h, a, c, l, b[q + 10], 9, 38016083);
l = x(l, h, a, c, b[q + 15], 14, -660478335);
c = x(c, l, h, a, b[q + 4], 20, -405537848);
a = x(a, c, l, h, b[q + 9], 5, 568446438);
h = x(h, a, c, l, b[q + 14], 9, -1019803690);
l = x(l, h, a, c, b[q + 3], 14, -187363961);
c = x(c, l, h, a, b[q + 8], 20, 1163531501);
a = x(a, c, l, h, b[q + 13], 5, -1444681467);
h = x(h, a, c, l, b[q + 2], 9, -51403784);
l = x(l, h, a, c, b[q + 7], 14, 1735328473);
c = x(c, l, h, a, b[q + 12], 20, -1926607734);
a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558);
h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463);
l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562);
c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556);
a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060);
h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353);
l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632);
c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640);
a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174);
h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222);
l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979);
c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189);
a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487);
h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835);
l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520);
c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651);
a = w(a, c, l, h, b[q + 0], 6, -198630844);
h = w(h, a, c, l, b[q + 7], 10, 1126891415);
l = w(l, h, a, c, b[q + 14], 15, -1416354905);
c = w(c, l, h, a, b[q + 5], 21, -57434055);
a = w(a, c, l, h, b[q + 12], 6, 1700485571);
h = w(h, a, c, l, b[q + 3], 10, -1894986606);
l = w(l, h, a, c, b[q + 10], 15, -1051523);
c = w(c, l, h, a, b[q + 1], 21, -2054922799);
a = w(a, c, l, h, b[q + 8], 6, 1873313359);
h = w(h, a, c, l, b[q + 15], 10, -30611744);
l = w(l, h, a, c, b[q + 6], 15, -1560198380);
c = w(c, l, h, a, b[q + 13], 21, 1309151649);
a = w(a, c, l, h, b[q + 4], 6, -145523070);
h = w(h, a, c, l, b[q + 11], 10, -1120210379);
l = w(l, h, a, c, b[q + 2], 15, 718787259);
c = w(c, l, h, a, b[q + 9], 21, -343485551);
a = A(a, z);
c = A(c, C);
l = A(l, D);
h = A(h, B);
}
b = [a, c, l, h];
a = '';
for (c = 0; c < 4 * b.length; c++) a += '0123456789abcdef'.charAt((b[c >> 2] >> ((c % 4) * 8 + 4)) & 15) + '0123456789abcdef'.charAt((b[c >> 2] >> ((c % 4) * 8)) & 15);
return a;
}
function u(a, b, c, l, h, q) {
a = A(A(b, a), A(l, q));
return A((a << h) | (a >>> (32 - h)), c);
}
function v(a, b, c, l, h, q, z) {
return u((b & c) | (~b & l), a, b, h, q, z);
}
function x(a, b, c, l, h, q, z) {
return u((b & l) | (c & ~l), a, b, h, q, z);
}
function w(a, b, c, l, h, q, z) {
return u(c ^ (b | ~l), a, b, h, q, z);
}
function A(a, b) {
var c = (a & 65535) + (b & 65535);
return (((a >> 16) + (b >> 16) + (c >> 16)) << 16) | (c & 65535);
}
_fingerprint_step = 2;
var y = '',
n = navigator.userAgent.toLowerCase();
n.indexOf('jdapp') && (n = n.substring(0, 90));
var e = navigator.language,
f = n;
-1 != f.indexOf('ipad') ||
-1 != f.indexOf('iphone os') ||
-1 != f.indexOf('midp') ||
-1 != f.indexOf('rv:1.2.3.4') ||
-1 != f.indexOf('ucweb') ||
-1 != f.indexOf('android') ||
-1 != f.indexOf('windows ce') ||
f.indexOf('windows mobile');
var r = 'NA',
k = 'NA';
try {
-1 != f.indexOf('win') && -1 != f.indexOf('95') && ((r = 'windows'), (k = '95')),
-1 != f.indexOf('win') && -1 != f.indexOf('98') && ((r = 'windows'), (k = '98')),
-1 != f.indexOf('win 9x') && -1 != f.indexOf('4.90') && ((r = 'windows'), (k = 'me')),
-1 != f.indexOf('win') && -1 != f.indexOf('nt 5.0') && ((r = 'windows'), (k = '2000')),
-1 != f.indexOf('win') && -1 != f.indexOf('nt') && ((r = 'windows'), (k = 'NT')),
-1 != f.indexOf('win') && -1 != f.indexOf('nt 5.1') && ((r = 'windows'), (k = 'xp')),
-1 != f.indexOf('win') && -1 != f.indexOf('32') && ((r = 'windows'), (k = '32')),
-1 != f.indexOf('win') && -1 != f.indexOf('nt 5.1') && ((r = 'windows'), (k = '7')),
-1 != f.indexOf('win') && -1 != f.indexOf('6.0') && ((r = 'windows'), (k = '8')),
-1 == f.indexOf('win') || (-1 == f.indexOf('nt 6.0') && -1 == f.indexOf('nt 6.1')) || ((r = 'windows'), (k = '9')),
-1 != f.indexOf('win') && -1 != f.indexOf('nt 6.2') && ((r = 'windows'), (k = '10')),
-1 != f.indexOf('linux') && (r = 'linux'),
-1 != f.indexOf('unix') && (r = 'unix'),
-1 != f.indexOf('sun') && -1 != f.indexOf('os') && (r = 'sun os'),
-1 != f.indexOf('ibm') && -1 != f.indexOf('os') && (r = 'ibm os/2'),
-1 != f.indexOf('mac') && -1 != f.indexOf('pc') && (r = 'mac'),
-1 != f.indexOf('aix') && (r = 'aix'),
-1 != f.indexOf('powerpc') && (r = 'powerPC'),
-1 != f.indexOf('hpux') && (r = 'hpux'),
-1 != f.indexOf('netbsd') && (r = 'NetBSD'),
-1 != f.indexOf('bsd') && (r = 'BSD'),
-1 != f.indexOf('osf1') && (r = 'OSF1'),
-1 != f.indexOf('irix') && ((r = 'IRIX'), (k = '')),
-1 != f.indexOf('freebsd') && (r = 'FreeBSD'),
-1 != f.indexOf('symbianos') && ((r = 'SymbianOS'), (k = f.substring(f.indexOf('SymbianOS/') + 10, 3)));
} catch (a) {}
_fingerprint_step = 3;
var g = 'NA',
m = 'NA';
try {
-1 != f.indexOf('msie') && ((g = 'ie'), (m = f.substring(f.indexOf('msie ') + 5)), m.indexOf(';') && (m = m.substring(0, m.indexOf(';'))));
-1 != f.indexOf('firefox') && ((g = 'Firefox'), (m = f.substring(f.indexOf('firefox/') + 8)));
-1 != f.indexOf('opera') && ((g = 'Opera'), (m = f.substring(f.indexOf('opera/') + 6, 4)));
-1 != f.indexOf('safari') && ((g = 'safari'), (m = f.substring(f.indexOf('safari/') + 7)));
-1 != f.indexOf('chrome') && ((g = 'chrome'), (m = f.substring(f.indexOf('chrome/') + 7)), m.indexOf(' ') && (m = m.substring(0, m.indexOf(' '))));
-1 != f.indexOf('navigator') && ((g = 'navigator'), (m = f.substring(f.indexOf('navigator/') + 10)));
-1 != f.indexOf('applewebkit') && ((g = 'applewebkit_chrome'), (m = f.substring(f.indexOf('applewebkit/') + 12)), m.indexOf(' ') && (m = m.substring(0, m.indexOf(' '))));
-1 != f.indexOf('sogoumobilebrowser') && (g = '\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668');
if (-1 != f.indexOf('ucbrowser') || -1 != f.indexOf('ucweb')) g = 'UC\u6d4f\u89c8\u5668';
if (-1 != f.indexOf('qqbrowser') || -1 != f.indexOf('tencenttraveler')) g = 'QQ\u6d4f\u89c8\u5668';
-1 != f.indexOf('metasr') && (g = '\u641c\u72d7\u6d4f\u89c8\u5668');
-1 != f.indexOf('360se') && (g = '360\u6d4f\u89c8\u5668');
-1 != f.indexOf('the world') && (g = '\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668');
-1 != f.indexOf('maxthon') && (g = '\u9068\u6e38\u6d4f\u89c8\u5668');
} catch (a) {}
class JdJrTdRiskFinger {
f = {
options: function () {
return {};
},
nativeForEach: Array.prototype.forEach,
nativeMap: Array.prototype.map,
extend: function (a, b) {
if (null == a) return b;
for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]);
return b;
},
getData: function () {
return y;
},
get: function (a) {
var b = 1 * m,
c = [];
'ie' == g && 7 <= b ? (c.push(n), c.push(e), (y = y + ",'userAgent':'" + t(n) + "','language':'" + e + "'"), this.browserRedirect(n)) : ((c = this.userAgentKey(c)), (c = this.languageKey(c)));
c.push(g);
c.push(m);
c.push(r);
c.push(k);
y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + m + "'";
c = this.colorDepthKey(c);
c = this.screenResolutionKey(c);
c = this.timezoneOffsetKey(c);
c = this.sessionStorageKey(c);
c = this.localStorageKey(c);
c = this.indexedDbKey(c);
c = this.addBehaviorKey(c);
c = this.openDatabaseKey(c);
c = this.cpuClassKey(c);
c = this.platformKey(c);
c = this.hardwareConcurrencyKey(c);
c = this.doNotTrackKey(c);
c = this.pluginsKey(c);
c = this.canvasKey(c);
c = this.webglKey(c);
b = this.x64hash128(c.join('~~~'), 31);
return a(b);
},
userAgentKey: function (a) {
a.push(navigator.userAgent), (y = y + ",'userAgent':'" + t(navigator.userAgent) + "'"), this.browserRedirect(navigator.userAgent);
return a;
},
replaceAll: function (a, b, c) {
for (; 0 <= a.indexOf(b); ) a = a.replace(b, c);
return a;
},
browserRedirect: function (a) {
var b = a.toLowerCase();
a = 'ipad' == b.match(/ipad/i);
var c = 'iphone os' == b.match(/iphone os/i),
l = 'midp' == b.match(/midp/i),
h = 'rv:1.2.3.4' == b.match(/rv:1.2.3.4/i),
q = 'ucweb' == b.match(/ucweb/i),
z = 'android' == b.match(/android/i),
C = 'windows ce' == b.match(/windows ce/i);
b = 'windows mobile' == b.match(/windows mobile/i);
y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'";
},
languageKey: function (a) {
'' || (a.push(navigator.language), (y = y + ",'language':'" + this.replaceAll(navigator.language, ' ', '_') + "'"));
return a;
},
colorDepthKey: function (a) {
'' || (a.push(screen.colorDepth), (y = y + ",'colorDepth':'" + screen.colorDepth + "'"));
return a;
},
screenResolutionKey: function (a) {
if (!this.options.excludeScreenResolution) {
var b = this.getScreenResolution();
'undefined' !== typeof b && (a.push(b.join('x')), (y = y + ",'screenResolution':'" + b.join('x') + "'"));
}
return a;
},
getScreenResolution: function () {
return this.options.detectScreenOrientation ? (screen.height > screen.width ? [screen.height, screen.width] : [screen.width, screen.height]) : [screen.height, screen.width];
},
timezoneOffsetKey: function (a) {
this.options.excludeTimezoneOffset || (a.push(new Date().getTimezoneOffset()), (y = y + ",'timezoneOffset':'" + new Date().getTimezoneOffset() / 60 + "'"));
return a;
},
sessionStorageKey: function (a) {
!this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push('sessionStorageKey'), (y += ",'sessionStorage':true"));
return a;
},
localStorageKey: function (a) {
!this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push('localStorageKey'), (y += ",'localStorage':true"));
return a;
},
indexedDbKey: function (a) {
!this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push('indexedDbKey'), (y += ",'indexedDb':true"));
return a;
},
addBehaviorKey: function (a) {
document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push('addBehaviorKey'), (y += ",'addBehavior':true")) : (y += ",'addBehavior':false");
return a;
},
openDatabaseKey: function (a) {
!this.options.excludeOpenDatabase && window.openDatabase ? (a.push('openDatabase'), (y += ",'openDatabase':true")) : (y += ",'openDatabase':false");
return a;
},
cpuClassKey: function (a) {
this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), (y = y + ",'cpu':'" + this.getNavigatorCpuClass() + "'"));
return a;
},
platformKey: function (a) {
this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), (y = y + ",'platform':'" + this.getNavigatorPlatform() + "'"));
return a;
},
hardwareConcurrencyKey: function (a) {
var b = this.getHardwareConcurrency();
a.push(b);
y = y + ",'ccn':'" + b + "'";
return a;
},
doNotTrackKey: function (a) {
this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), (y = y + ",'track':'" + this.getDoNotTrack() + "'"));
return a;
},
canvasKey: function (a) {
if (!this.options.excludeCanvas && this.isCanvasSupported()) {
var b = this.getCanvasFp();
a.push(b);
_jdfp_canvas_md5 = t(b);
y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'";
}
return a;
},
webglKey: function (a) {
if (!this.options.excludeWebGL && this.isCanvasSupported()) {
var b = this.getWebglFp();
_jdfp_webgl_md5 = t(b);
a.push(b);
y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'";
}
return a;
},
pluginsKey: function (a) {
this.isIE()
? (a.push(this.getIEPluginsString()), (y = y + ",'plugins':'" + t(this.getIEPluginsString()) + "'"))
: (a.push(this.getRegularPluginsString()), (y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + "'"));
return a;
},
getRegularPluginsString: function () {
return this.map(
navigator.plugins,
function (a) {
var b = this.map(a, function (c) {
return [c.type, c.suffixes].join('~');
}).join(',');
return [a.name, a.description, b].join('::');
},
this
).join(';');
},
getIEPluginsString: function () {
return window.ActiveXObject
? this.map(
'AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1'.split(
';'
),
function (a) {
try {
return new ActiveXObject(a), a;
} catch (b) {
return null;
}
}
).join(';')
: '';
},
hasSessionStorage: function () {
try {
return !!window.sessionStorage;
} catch (a) {
return !0;
}
},
hasLocalStorage: function () {
try {
return !!window.localStorage;
} catch (a) {
return !0;
}
},
hasIndexedDB: function () {
return true;
return !!window.indexedDB;
},
getNavigatorCpuClass: function () {
return navigator.cpuClass ? navigator.cpuClass : 'NA';
},
getNavigatorPlatform: function () {
return navigator.platform ? navigator.platform : 'NA';
},
getHardwareConcurrency: function () {
return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 'NA';
},
getDoNotTrack: function () {
return navigator.doNotTrack ? navigator.doNotTrack : 'NA';
},
getCanvasFp: function () {
return '';
var a = navigator.userAgent.toLowerCase();
if ((0 < a.indexOf('jdjr-app') || 0 <= a.indexOf('jdapp')) && (0 < a.indexOf('iphone') || 0 < a.indexOf('ipad'))) return null;
a = document.createElement('canvas');
var b = a.getContext('2d');
b.fillStyle = 'red';
b.fillRect(30, 10, 200, 100);
b.strokeStyle = '#1a3bc1';
b.lineWidth = 6;
b.lineCap = 'round';
b.arc(50, 50, 20, 0, Math.PI, !1);
b.stroke();
b.fillStyle = '#42e1a2';
b.font = "15.4px 'Arial'";
b.textBaseline = 'alphabetic';
b.fillText('PR flacks quiz gym: TV DJ box when? \u2620', 15, 60);
b.shadowOffsetX = 1;
b.shadowOffsetY = 2;
b.shadowColor = 'white';
b.fillStyle = 'rgba(0, 0, 200, 0.5)';
b.font = "60px 'Not a real font'";
b.fillText('No\u9a97', 40, 80);
return a.toDataURL();
},
getWebglFp: function () {
var a = navigator.userAgent;
a = a.toLowerCase();
if ((0 < a.indexOf('jdjr-app') || 0 <= a.indexOf('jdapp')) && (0 < a.indexOf('iphone') || 0 < a.indexOf('ipad'))) return null;
a = function (D) {
b.clearColor(0, 0, 0, 1);
b.enable(b.DEPTH_TEST);
b.depthFunc(b.LEQUAL);
b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT);
return '[' + D[0] + ', ' + D[1] + ']';
};
var b = this.getWebglCanvas();
if (!b) return null;
var c = [],
l = b.createBuffer();
b.bindBuffer(b.ARRAY_BUFFER, l);
var h = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0]);
b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW);
l.itemSize = 3;
l.numItems = 3;
h = b.createProgram();
var q = b.createShader(b.VERTEX_SHADER);
b.shaderSource(
q,
'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'
);
b.compileShader(q);
var z = b.createShader(b.FRAGMENT_SHADER);
b.shaderSource(z, 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}');
b.compileShader(z);
b.attachShader(h, q);
b.attachShader(h, z);
b.linkProgram(h);
b.useProgram(h);
h.vertexPosAttrib = b.getAttribLocation(h, 'attrVertex');
h.offsetUniform = b.getUniformLocation(h, 'uniformOffset');
b.enableVertexAttribArray(h.vertexPosArray);
b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0);
b.uniform2f(h.offsetUniform, 1, 1);
b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems);
null != b.canvas && c.push(b.canvas.toDataURL());
c.push('extensions:' + b.getSupportedExtensions().join(';'));
c.push('extensions:' + b.getSupportedExtensions().join(';'));
c.push('w1' + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE)));
c.push('w2' + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE)));
c.push('w3' + b.getParameter(b.ALPHA_BITS));
c.push('w4' + (b.getContextAttributes().antialias ? 'yes' : 'no'));
c.push('w5' + b.getParameter(b.BLUE_BITS));
c.push('w6' + b.getParameter(b.DEPTH_BITS));
c.push('w7' + b.getParameter(b.GREEN_BITS));
c.push(
'w8' +
(function (D) {
var B,
F = D.getExtension('EXT_texture_filter_anisotropic') || D.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || D.getExtension('MOZ_EXT_texture_filter_anisotropic');
return F ? ((B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), 0 === B && (B = 2), B) : null;
})(b)
);
c.push('w9' + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS));
c.push('w10' + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE));
c.push('w11' + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS));
c.push('w12' + b.getParameter(b.MAX_RENDERBUFFER_SIZE));
c.push('w13' + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS));
c.push('w14' + b.getParameter(b.MAX_TEXTURE_SIZE));
c.push('w15' + b.getParameter(b.MAX_VARYING_VECTORS));
c.push('w16' + b.getParameter(b.MAX_VERTEX_ATTRIBS));
c.push('w17' + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS));
c.push('w18' + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS));
c.push('w19' + a(b.getParameter(b.MAX_VIEWPORT_DIMS)));
c.push('w20' + b.getParameter(b.RED_BITS));
c.push('w21' + b.getParameter(b.RENDERER));
c.push('w22' + b.getParameter(b.SHADING_LANGUAGE_VERSION));
c.push('w23' + b.getParameter(b.STENCIL_BITS));
c.push('w24' + b.getParameter(b.VENDOR));
c.push('w25' + b.getParameter(b.VERSION));
try {
var C = b.getExtension('WEBGL_debug_renderer_info');
C && (c.push('wuv:' + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push('wur:' + b.getParameter(C.UNMASKED_RENDERER_WEBGL)));
} catch (D) {}
return c.join('\u00a7');
},
isCanvasSupported: function () {
return true;
var a = document.createElement('canvas');
return !(!a.getContext || !a.getContext('2d'));
},
isIE: function () {
return 'Microsoft Internet Explorer' === navigator.appName || ('Netscape' === navigator.appName && /Trident/.test(navigator.userAgent)) ? !0 : !1;
},
getWebglCanvas: function () {
return null;
var a = document.createElement('canvas'),
b = null;
try {
var c = navigator.userAgent;
c = c.toLowerCase();
((0 < c.indexOf('jdjr-app') || 0 <= c.indexOf('jdapp')) && (0 < c.indexOf('iphone') || 0 < c.indexOf('ipad'))) || (b = a.getContext('webgl') || a.getContext('experimental-webgl'));
} catch (l) {}
b || (b = null);
return b;
},
each: function (a, b, c) {
if (null !== a)
if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c);
else if (a.length === +a.length) for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++);
else for (l in a) if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break;
},
map: function (a, b, c) {
var l = [];
if (null == a) return l;
if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c);
this.each(a, function (h, q, z) {
l[l.length] = b.call(c, h, q, z);
});
return l;
},
x64Add: function (a, b) {
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += a[3] + b[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += a[2] + b[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += a[1] + b[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += a[0] + b[0];
c[0] &= 65535;
return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]];
},
x64Multiply: function (a, b) {
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += a[3] * b[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += a[2] * b[3];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[2] += a[3] * b[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += a[1] * b[3];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += a[2] * b[2];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += a[3] * b[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0];
c[0] &= 65535;
return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]];
},
x64Rotl: function (a, b) {
b %= 64;
if (32 === b) return [a[1], a[0]];
if (32 > b) return [(a[0] << b) | (a[1] >>> (32 - b)), (a[1] << b) | (a[0] >>> (32 - b))];
b -= 32;
return [(a[1] << b) | (a[0] >>> (32 - b)), (a[0] << b) | (a[1] >>> (32 - b))];
},
x64LeftShift: function (a, b) {
b %= 64;
return 0 === b ? a : 32 > b ? [(a[0] << b) | (a[1] >>> (32 - b)), a[1] << b] : [a[1] << (b - 32), 0];
},
x64Xor: function (a, b) {
return [a[0] ^ b[0], a[1] ^ b[1]];
},
x64Fmix: function (a) {
a = this.x64Xor(a, [0, a[0] >>> 1]);
a = this.x64Multiply(a, [4283543511, 3981806797]);
a = this.x64Xor(a, [0, a[0] >>> 1]);
a = this.x64Multiply(a, [3301882366, 444984403]);
return (a = this.x64Xor(a, [0, a[0] >>> 1]));
},
x64hash128: function (a, b) {
a = a || '';
b = b || 0;
var c = a.length % 16,
l = a.length - c,
h = [0, b];
b = [0, b];
for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16)
(q = [
(a.charCodeAt(B + 4) & 255) | ((a.charCodeAt(B + 5) & 255) << 8) | ((a.charCodeAt(B + 6) & 255) << 16) | ((a.charCodeAt(B + 7) & 255) << 24),
(a.charCodeAt(B) & 255) | ((a.charCodeAt(B + 1) & 255) << 8) | ((a.charCodeAt(B + 2) & 255) << 16) | ((a.charCodeAt(B + 3) & 255) << 24),
]),
(z = [
(a.charCodeAt(B + 12) & 255) | ((a.charCodeAt(B + 13) & 255) << 8) | ((a.charCodeAt(B + 14) & 255) << 16) | ((a.charCodeAt(B + 15) & 255) << 24),
(a.charCodeAt(B + 8) & 255) | ((a.charCodeAt(B + 9) & 255) << 8) | ((a.charCodeAt(B + 10) & 255) << 16) | ((a.charCodeAt(B + 11) & 255) << 24),
]),
(q = this.x64Multiply(q, C)),
(q = this.x64Rotl(q, 31)),
(q = this.x64Multiply(q, D)),
(h = this.x64Xor(h, q)),
(h = this.x64Rotl(h, 27)),
(h = this.x64Add(h, b)),
(h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809])),
(z = this.x64Multiply(z, D)),
(z = this.x64Rotl(z, 33)),
(z = this.x64Multiply(z, C)),
(b = this.x64Xor(b, z)),
(b = this.x64Rotl(b, 31)),
(b = this.x64Add(b, h)),
(b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, 944331445]));
q = [0, 0];
z = [0, 0];
switch (c) {
case 15:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48));
case 14:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40));
case 13:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32));
case 12:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24));
case 11:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16));
case 10:
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8));
case 9:
(z = this.x64Xor(z, [0, a.charCodeAt(B + 8)])), (z = this.x64Multiply(z, D)), (z = this.x64Rotl(z, 33)), (z = this.x64Multiply(z, C)), (b = this.x64Xor(b, z));
case 8:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56));
case 7:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48));
case 6:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40));
case 5:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32));
case 4:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24));
case 3:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16));
case 2:
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8));
case 1:
(q = this.x64Xor(q, [0, a.charCodeAt(B)])), (q = this.x64Multiply(q, C)), (q = this.x64Rotl(q, 31)), (q = this.x64Multiply(q, D)), (h = this.x64Xor(h, q));
}
h = this.x64Xor(h, [0, a.length]);
b = this.x64Xor(b, [0, a.length]);
h = this.x64Add(h, b);
b = this.x64Add(b, h);
h = this.x64Fmix(h);
b = this.x64Fmix(b);
h = this.x64Add(h, b);
b = this.x64Add(b, h);
return (
('00000000' + (h[0] >>> 0).toString(16)).slice(-8) +
('00000000' + (h[1] >>> 0).toString(16)).slice(-8) +
('00000000' + (b[0] >>> 0).toString(16)).slice(-8) +
('00000000' + (b[1] >>> 0).toString(16)).slice(-8)
);
},
};
}
var JDDSecCryptoJS =
JDDSecCryptoJS ||
(function (t, u) {
var v = {},
x = (v.lib = {}),
w = (x.Base = (function () {
function g() {}
return {
extend: function (m) {
g.prototype = this;
var a = new g();
m && a.mixIn(m);
a.hasOwnProperty('init') ||
(a.init = function () {
a.$super.init.apply(this, arguments);
});
a.init.prototype = a;
a.$super = this;
return a;
},
create: function () {
var m = this.extend();
m.init.apply(m, arguments);
return m;
},
init: function () {},
mixIn: function (m) {
for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]);
m.hasOwnProperty('toString') && (this.toString = m.toString);
},
clone: function () {
return this.init.prototype.extend(this);
},
};
})()),
A = (x.WordArray = w.extend({
init: function (g, m) {
g = this.words = g || [];
this.sigBytes = m != u ? m : 4 * g.length;
},
toString: function (g) {
return (g || n).stringify(this);
},
concat: function (g) {
var m = this.words,
a = g.words,
b = this.sigBytes;
g = g.sigBytes;
this.clamp();
if (b % 4) for (var c = 0; c < g; c++) m[(b + c) >>> 2] |= ((a[c >>> 2] >>> (24 - (c % 4) * 8)) & 255) << (24 - ((b + c) % 4) * 8);
else if (65535 < a.length) for (c = 0; c < g; c += 4) m[(b + c) >>> 2] = a[c >>> 2];
else m.push.apply(m, a);
this.sigBytes += g;
return this;
},
clamp: function () {
var g = this.words,
m = this.sigBytes;
g[m >>> 2] &= 4294967295 << (32 - (m % 4) * 8);
g.length = t.ceil(m / 4);
},
clone: function () {
var g = w.clone.call(this);
g.words = this.words.slice(0);
return g;
},
random: function (g) {
for (var m = [], a = 0; a < g; a += 4) m.push((4294967296 * t.random()) | 0);
return new A.init(m, g);
},
}));
x.UUID = w.extend({
generateUuid: function () {
for (var g = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split(''), m = 0, a = g.length; m < a; m++)
switch (g[m]) {
case 'x':
g[m] = t.floor(16 * t.random()).toString(16);
break;
case 'y':
g[m] = (t.floor(4 * t.random()) + 8).toString(16);
}
return g.join('');
},
});
var y = (v.enc = {}),
n = (y.Hex = {
stringify: function (g) {
var m = g.words;
g = g.sigBytes;
var a = [];
for (var b = 0; b < g; b++) {
var c = (m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255;
a.push((c >>> 4).toString(16));
a.push((c & 15).toString(16));
}
return a.join('');
},
parse: function (g) {
for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << (24 - (b % 8) * 4);
return new A.init(a, m / 2);
},
}),
e = (y.Latin1 = {
stringify: function (g) {
var m = g.words;
g = g.sigBytes;
for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode((m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255));
return a.join('');
},
parse: function (g) {
for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << (24 - (b % 4) * 8);
return new A.init(a, m);
},
}),
f = (y.Utf8 = {
stringify: function (g) {
try {
return decodeURIComponent(escape(e.stringify(g)));
} catch (m) {
throw Error('Malformed UTF-8 data');
}
},
parse: function (g) {
return e.parse(unescape(encodeURIComponent(g)));
},
}),
r = (x.BufferedBlockAlgorithm = w.extend({
reset: function () {
this._data = new A.init();
this._nDataBytes = 0;
},
_append: function (g) {
'string' == typeof g && (g = f.parse(g));
this._data.concat(g);
this._nDataBytes += g.sigBytes;
},
_process: function (g) {
var m = this._data,
a = m.words,
b = m.sigBytes,
c = this.blockSize,
l = b / (4 * c);
l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0);
g = l * c;
b = t.min(4 * g, b);
if (g) {
for (var h = 0; h < g; h += c) this._doProcessBlock(a, h);
h = a.splice(0, g);
m.sigBytes -= b;
}
return new A.init(h, b);
},
clone: function () {
var g = w.clone.call(this);
g._data = this._data.clone();
return g;
},
_minBufferSize: 0,
}));
x.Hasher = r.extend({
cfg: w.extend(),
init: function (g) {
this.cfg = this.cfg.extend(g);
this.reset();
},
reset: function () {
r.reset.call(this);
this._doReset();
},
update: function (g) {
this._append(g);
this._process();
return this;
},
finalize: function (g) {
g && this._append(g);
return this._doFinalize();
},
blockSize: 16,
_createHelper: function (g) {
return function (m, a) {
return new g.init(a).finalize(m);
};
},
_createHmacHelper: function (g) {
return function (m, a) {
return new k.HMAC.init(g, a).finalize(m);
};
},
});
var k = (v.algo = {});
v.channel = {};
return v;
})(Math);
JDDSecCryptoJS.lib.Cipher ||
(function (t) {
var u = JDDSecCryptoJS,
v = u.lib,
x = v.Base,
w = v.WordArray,
A = v.BufferedBlockAlgorithm,
y = (v.Cipher = A.extend({
cfg: x.extend(),
createEncryptor: function (g, m) {
return this.create(this._ENC_XFORM_MODE, g, m);
},
createDecryptor: function (g, m) {
return this.create(this._DEC_XFORM_MODE, g, m);
},
init: function (g, m, a) {
this.cfg = this.cfg.extend(a);
this._xformMode = g;
this._key = m;
this.reset();
},
reset: function () {
A.reset.call(this);
this._doReset();
},
process: function (g) {
this._append(g);
return this._process();
},
finalize: function (g) {
g && this._append(g);
return this._doFinalize();
},
keySize: 4,
ivSize: 4,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: (function () {
function g(m) {
if ('string' != typeof m) return k;
}
return function (m) {
return {
encrypt: function (a, b, c) {
return g(b).encrypt(m, a, b, c);
},
decrypt: function (a, b, c) {
return g(b).decrypt(m, a, b, c);
},
};
};
})(),
}));
v.StreamCipher = y.extend({
_doFinalize: function () {
return this._process(!0);
},
blockSize: 1,
});
var n = (u.mode = {}),
e = (v.BlockCipherMode = x.extend({
createEncryptor: function (g, m) {
return this.Encryptor.create(g, m);
},
createDecryptor: function (g, m) {
return this.Decryptor.create(g, m);
},
init: function (g, m) {
this._cipher = g;
this._iv = m;
},
}));
n = n.CBC = (function () {
function g(a, b, c) {
var l = this._iv;
l ? (this._iv = t) : (l = this._prevBlock);
for (var h = 0; h < c; h++) a[b + h] ^= l[h];
}
var m = e.extend();
m.Encryptor = m.extend({
processBlock: function (a, b) {
var c = this._cipher,
l = c.blockSize;
g.call(this, a, b, l);
c.encryptBlock(a, b);
this._prevBlock = a.slice(b, b + l);
},
});
m.Decryptor = m.extend({
processBlock: function (a, b) {
var c = this._cipher,
l = c.blockSize,
h = a.slice(b, b + l);
c.decryptBlock(a, b);
g.call(this, a, b, l);
this._prevBlock = h;
},
});
return m;
})();
var f = ((u.pad = {}).Pkcs7 = {
pad: function (g, m) {
m *= 4;
m -= g.sigBytes % m;
for (var a = (m << 24) | (m << 16) | (m << 8) | m, b = [], c = 0; c < m; c += 4) b.push(a);
m = w.create(b, m);
g.concat(m);
},
unpad: function (g) {
g.sigBytes -= g.words[(g.sigBytes - 1) >>> 2] & 255;
},
});
v.BlockCipher = y.extend({
cfg: y.cfg.extend({
mode: n,
padding: f,
}),
reset: function () {
y.reset.call(this);
var g = this.cfg,
m = g.iv;
g = g.mode;
if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor;
else (a = g.createDecryptor), (this._minBufferSize = 1);
this._mode = a.call(g, this, m && m.words);
},
_doProcessBlock: function (g, m) {
this._mode.processBlock(g, m);
},
_doFinalize: function () {
var g = this.cfg.padding;
if (this._xformMode == this._ENC_XFORM_MODE) {
g.pad(this._data, this.blockSize);
var m = this._process(!0);
} else (m = this._process(!0)), g.unpad(m);
return m;
},
blockSize: 4,
});
var r = (v.CipherParams = x.extend({
init: function (g) {
this.mixIn(g);
},
toString: function (g) {
return (g || this.formatter).stringify(this);
},
}));
u.format = {};
var k = (v.SerializableCipher = x.extend({
cfg: x.extend({}),
encrypt: function (g, m, a, b) {
b = this.cfg.extend(b);
var c = g.createEncryptor(a, b);
m = c.finalize(m);
c = c.cfg;
return r.create({
ciphertext: m,
key: a,
iv: c.iv,
algorithm: g,
mode: c.mode,
padding: c.padding,
blockSize: g.blockSize,
formatter: b.format,
});
},
decrypt: function (g, m, a, b) {
b = this.cfg.extend(b);
m = this._parse(m, b.format);
return g.createDecryptor(a, b).finalize(m.ciphertext);
},
_parse: function (g, m) {
return 'string' == typeof g ? m.parse(g, this) : g;
},
}));
})();
(function () {
var t = JDDSecCryptoJS,
u = t.lib.BlockCipher,
v = t.algo,
x = [],
w = [],
A = [],
y = [],
n = [],
e = [],
f = [],
r = [],
k = [],
g = [];
(function () {
for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : (b << 1) ^ 283;
var c = 0,
l = 0;
for (b = 0; 256 > b; b++) {
var h = l ^ (l << 1) ^ (l << 2) ^ (l << 3) ^ (l << 4);
h = (h >>> 8) ^ (h & 255) ^ 99;
x[c] = h;
w[h] = c;
var q = a[c],
z = a[q],
C = a[z],
D = (257 * a[h]) ^ (16843008 * h);
A[c] = (D << 24) | (D >>> 8);
y[c] = (D << 16) | (D >>> 16);
n[c] = (D << 8) | (D >>> 24);
e[c] = D;
D = (16843009 * C) ^ (65537 * z) ^ (257 * q) ^ (16843008 * c);
f[h] = (D << 24) | (D >>> 8);
r[h] = (D << 16) | (D >>> 16);
k[h] = (D << 8) | (D >>> 24);
g[h] = D;
c ? ((c = q ^ a[a[a[C ^ q]]]), (l ^= a[a[l]])) : (c = l = 1);
}
})();
var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
v = v.AES = u.extend({
_doReset: function () {
var a = this._key,
b = a.words,
c = a.sigBytes / 4;
a = 4 * ((this._nRounds = c + 6) + 1);
for (var l = (this._keySchedule = []), h = 0; h < a; h++)
if (h < c) l[h] = b[h];
else {
var q = l[h - 1];
h % c
? 6 < c && 4 == h % c && (q = (x[q >>> 24] << 24) | (x[(q >>> 16) & 255] << 16) | (x[(q >>> 8) & 255] << 8) | x[q & 255])
: ((q = (q << 8) | (q >>> 24)), (q = (x[q >>> 24] << 24) | (x[(q >>> 16) & 255] << 16) | (x[(q >>> 8) & 255] << 8) | x[q & 255]), (q ^= m[(h / c) | 0] << 24));
l[h] = l[h - c] ^ q;
}
b = this._invKeySchedule = [];
for (c = 0; c < a; c++) (h = a - c), (q = c % 4 ? l[h] : l[h - 4]), (b[c] = 4 > c || 4 >= h ? q : f[x[q >>> 24]] ^ r[x[(q >>> 16) & 255]] ^ k[x[(q >>> 8) & 255]] ^ g[x[q & 255]]);
},
encryptBlock: function (a, b) {
this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x);
},
decryptBlock: function (a, b) {
var c = a[b + 1];
a[b + 1] = a[b + 3];
a[b + 3] = c;
this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w);
c = a[b + 1];
a[b + 1] = a[b + 3];
a[b + 3] = c;
},
_doCryptBlock: function (a, b, c, l, h, q, z, C) {
for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) {
var J = l[B >>> 24] ^ h[(F >>> 16) & 255] ^ q[(H >>> 8) & 255] ^ z[G & 255] ^ c[I++],
K = l[F >>> 24] ^ h[(H >>> 16) & 255] ^ q[(G >>> 8) & 255] ^ z[B & 255] ^ c[I++],
L = l[H >>> 24] ^ h[(G >>> 16) & 255] ^ q[(B >>> 8) & 255] ^ z[F & 255] ^ c[I++];
G = l[G >>> 24] ^ h[(B >>> 16) & 255] ^ q[(F >>> 8) & 255] ^ z[H & 255] ^ c[I++];
B = J;
F = K;
H = L;
}
J = ((C[B >>> 24] << 24) | (C[(F >>> 16) & 255] << 16) | (C[(H >>> 8) & 255] << 8) | C[G & 255]) ^ c[I++];
K = ((C[F >>> 24] << 24) | (C[(H >>> 16) & 255] << 16) | (C[(G >>> 8) & 255] << 8) | C[B & 255]) ^ c[I++];
L = ((C[H >>> 24] << 24) | (C[(G >>> 16) & 255] << 16) | (C[(B >>> 8) & 255] << 8) | C[F & 255]) ^ c[I++];
G = ((C[G >>> 24] << 24) | (C[(B >>> 16) & 255] << 16) | (C[(F >>> 8) & 255] << 8) | C[H & 255]) ^ c[I++];
a[b] = J;
a[b + 1] = K;
a[b + 2] = L;
a[b + 3] = G;
},
keySize: 8,
});
t.AES = u._createHelper(v);
})();
(function () {
var t = JDDSecCryptoJS,
u = t.lib,
v = u.WordArray,
x = u.Hasher,
w = [];
u = t.algo.SHA1 = x.extend({
_doReset: function () {
this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
},
_doProcessBlock: function (A, y) {
for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > m; m++) {
if (16 > m) w[m] = A[y + m] | 0;
else {
var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16];
w[m] = (a << 1) | (a >>> 31);
}
a = ((e << 5) | (e >>> 27)) + g + w[m];
a = 20 > m ? a + (((f & r) | (~f & k)) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + 1859775393) : 60 > m ? a + (((f & r) | (f & k) | (r & k)) - 1894007588) : a + ((f ^ r ^ k) - 899497514);
g = k;
k = r;
r = (f << 30) | (f >>> 2);
f = e;
e = a;
}
n[0] = (n[0] + e) | 0;
n[1] = (n[1] + f) | 0;
n[2] = (n[2] + r) | 0;
n[3] = (n[3] + k) | 0;
n[4] = (n[4] + g) | 0;
},
_doFinalize: function () {
var A = this._data,
y = A.words,
n = 8 * this._nDataBytes,
e = 8 * A.sigBytes;
y[e >>> 5] |= 128 << (24 - (e % 32));
y[(((e + 64) >>> 9) << 4) + 14] = Math.floor(n / 4294967296);
y[(((e + 64) >>> 9) << 4) + 15] = n;
A.sigBytes = 4 * y.length;
this._process();
return this._hash;
},
clone: function () {
var A = x.clone.call(this);
A._hash = this._hash.clone();
return A;
},
});
t.SHA1 = x._createHelper(u);
t.HmacSHA1 = x._createHmacHelper(u);
})();
(function () {
var t = JDDSecCryptoJS,
u = t.channel;
u.Downlink = {
deBase32: function (v) {
if (void 0 == v || '' == v || null == v) return '';
var x = t.enc.Hex.parse('30313233343536373839616263646566'),
w = t.enc.Hex.parse('724e5428476f307361374d3233784a6c');
return t.AES.decrypt(
{
ciphertext: t.enc.Base32.parse(v),
},
w,
{
mode: t.mode.CBC,
padding: t.pad.Pkcs7,
iv: x,
}
).toString(t.enc.Utf8);
},
deBase64: function (v) {
return '';
},
};
u.Uplink = {
enAsBase32: function (v) {
return '';
},
enAsBase64: function (v) {
return '';
},
};
})();
(function () {
var t = JDDSecCryptoJS,
u = t.lib.WordArray;
t.enc.Base32 = {
stringify: function (v) {
var x = v.words,
w = v.sigBytes,
A = this._map;
v.clamp();
v = [];
for (var y = 0; y < w; y += 5) {
for (var n = [], e = 0; 5 > e; e++) n[e] = (x[(y + e) >>> 2] >>> (24 - ((y + e) % 4) * 8)) & 255;
n = [
(n[0] >>> 3) & 31,
((n[0] & 7) << 2) | ((n[1] >>> 6) & 3),
(n[1] >>> 1) & 31,
((n[1] & 1) << 4) | ((n[2] >>> 4) & 15),
((n[2] & 15) << 1) | ((n[3] >>> 7) & 1),
(n[3] >>> 2) & 31,
((n[3] & 3) << 3) | ((n[4] >>> 5) & 7),
n[4] & 31,
];
for (e = 0; 8 > e && y + 0.625 * e < w; e++) v.push(A.charAt(n[e]));
}
if ((x = A.charAt(32))) for (; v.length % 8; ) v.push(x);
return v.join('');
},
parse: function (v) {
var x = v.length,
w = this._map,
A = w.charAt(32);
A && ((A = v.indexOf(A)), -1 != A && (x = A));
A = [];
for (var y = 0, n = 0; n < x; n++) {
var e = n % 8;
if (0 != e && 2 != e && 5 != e) {
var f = 255 & (w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8),
r = 255 & (w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8);
e = e % 3 ? 0 : 255 & (w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7));
A[y >>> 2] |= (f | r | e) << (24 - (y % 4) * 8);
y++;
}
}
return u.create(A, y);
},
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
};
})();
class JDDMAC {
static t() {
return '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'
.split(' ')
.map(function (v) {
return parseInt(v, 16);
});
}
mac(v) {
for (var x = -1, w = 0, A = v.length; w < A; w++) x = (x >>> 8) ^ t[(x ^ v.charCodeAt(w)) & 255];
return (x ^ -1) >>> 0;
}
}
var _CurrentPageProtocol = 'https:' == document.location.protocol ? 'https://' : 'http://',
_JdJrTdRiskDomainName = window.__fp_domain || 'gia.jd.com',
_url_query_str = '',
_root_domain = '',
_CurrentPageUrl = (function () {
var t = document.location.href.toString();
try {
_root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1];
} catch (v) {}
var u = t.indexOf('?');
0 < u && ((_url_query_str = t.substring(u + 1)), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring(0, 499)), (t = t.substring(0, u)));
return (t = t.substring(_CurrentPageProtocol.length));
})(),
jd_shadow__ = (function () {
try {
var t = JDDSecCryptoJS,
u = [];
u.push(_CurrentPageUrl);
var v = t.lib.UUID.generateUuid();
u.push(v);
var x = new Date().getTime();
u.push(x);
var w = t.SHA1(u.join('')).toString().toUpperCase();
u = [];
u.push('JD3');
u.push(w);
var A = new JDDMAC().mac(u.join(''));
u.push(A);
var y = t.enc.Hex.parse('30313233343536373839616263646566'),
n = t.enc.Hex.parse('4c5751554935255042304e6458323365'),
e = u.join('');
return t.AES.encrypt(t.enc.Utf8.parse(e), n, {
mode: t.mode.CBC,
padding: t.pad.Pkcs7,
iv: y,
}).ciphertext.toString(t.enc.Base32);
} catch (f) {
console.log(f);
}
})();
var td_collect = new (function () {
function t() {
var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection;
if (n) {
var e = function (k) {
var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/,
m =
/\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/;
try {
var a = g.exec(k);
if (null == a || 0 == a.length || void 0 == a) a = m.exec(k);
var b = a[1];
void 0 === f[b] && w.push(b);
f[b] = !0;
} catch (c) {}
},
f = {};
try {
var r = new n({
iceServers: [
{
url: 'stun:stun.services.mozilla.com',
},
],
});
} catch (k) {}
try {
void 0 === r &&
(r = new n({
iceServers: [],
}));
} catch (k) {}
if (r || window.mozRTCPeerConnection)
try {
r.createDataChannel('chat', {
reliable: !1,
});
} catch (k) {}
r &&
((r.onicecandidate = function (k) {
k.candidate && e(k.candidate.candidate);
}),
r.createOffer(
function (k) {
r.setLocalDescription(
k,
function () {},
function () {}
);
},
function () {}
),
setTimeout(function () {
try {
r.localDescription.sdp.split('\n').forEach(function (k) {
0 === k.indexOf('a=candidate:') && e(k);
});
} catch (k) {}
}, 800));
}
}
function u(n) {
var e;
return (e = document.cookie.match(new RegExp('(^| )' + n + '=([^;]*)(;|$)'))) ? e[2] : '';
}
function v() {
function n(g) {
var m = {};
r.style.fontFamily = g;
document.body.appendChild(r);
m.height = r.offsetHeight;
m.width = r.offsetWidth;
document.body.removeChild(r);
return m;
}
var e = ['monospace', 'sans-serif', 'serif'],
f = [],
r = document.createElement('span');
r.style.fontSize = '72px';
r.style.visibility = 'hidden';
r.innerHTML = 'mmmmmmmmmmlli';
for (var k = 0; k < e.length; k++) f[k] = n(e[k]);
this.checkSupportFont = function (g) {
for (var m = 0; m < f.length; m++) {
var a = n(g + ',' + e[m]),
b = f[m];
if (a.height !== b.height || a.width !== b.width) return !0;
}
return !1;
};
}
function x(n) {
var e = {};
e.name = n.name;
e.filename = n.filename.toLowerCase();
e.description = n.description;
void 0 !== n.version && (e.version = n.version);
e.mimeTypes = [];
for (var f = 0; f < n.length; f++) {
var r = n[f],
k = {};
k.description = r.description;
k.suffixes = r.suffixes;
k.type = r.type;
e.mimeTypes.push(k);
}
return e;
}
this.bizId = '';
this.bioConfig = {
type: '42',
operation: 1,
duraTime: 2,
interval: 50,
};
this.worder = null;
this.deviceInfo = {
userAgent: '',
isJdApp: !1,
isJrApp: !1,
sdkToken: '',
fp: '',
eid: '',
};
this.isRpTok = !1;
this.obtainLocal = function (n) {
n = 'undefined' !== typeof n && n ? !0 : !1;
var e = {};
try {
var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, '$1');
0 !== f.length && (e.cookie = f);
} catch (k) {}
try {
window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = window.localStorage.getItem('3AB9D23F7A4B3C9B'));
} catch (k) {}
try {
window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage['3AB9D23F7A4B3C9B']);
} catch (k) {}
try {
p.globalStorage && (e.globalStorage = window.globalStorage['.localdomain']['3AB9D23F7A4B3C9B']);
} catch (k) {}
try {
d && 'function' == typeof d.load && 'function' == typeof d.getAttribute && (d.load('jdgia_user_data'), (e.userData = d.getAttribute('3AB9D23F7A4B3C9B')));
} catch (k) {}
try {
E.indexedDbId && (e.indexedDb = E.indexedDbId);
} catch (k) {}
try {
E.webDbId && (e.webDb = E.webDbId);
} catch (k) {}
try {
for (var r in e)
if (32 < e[r].length) {
_JdEid = e[r];
n || (_eidFlag = !0);
break;
}
} catch (k) {}
try {
('undefined' === typeof _JdEid || 0 >= _JdEid.length) && this.db('3AB9D23F7A4B3C9B');
if ('undefined' === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u('3AB9D23F7A4B3C9B');
if ('undefined' === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0;
} catch (k) {}
return _JdEid;
};
var w = [],
A =
'Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin'.split(
';'
),
y =
'4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako'.split(
';'
);
this.toJson = 'object' === typeof JSON && JSON.stringify;
this.init = function () {
_fingerprint_step = 6;
t();
_fingerprint_step = 7;
'function' !== typeof this.toJson &&
(this.toJson = function (n) {
var e = typeof n;
if ('undefined' === e || null === n) return 'null';
if ('number' === e || 'boolean' === e) return n + '';
if ('object' === e && n && n.constructor === Array) {
e = [];
for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f]));
return '[' + (e + ']');
}
if ('object' === e) {
e = [];
for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f]));
return '{' + (e + '}');
}
});
this.sdkCollectInit();
};
this.sdkCollectInit = function () {
try {
try {
bp_bizid && (this.bizId = bp_bizid);
} catch (f) {
this.bizId = 'jsDefault';
}
var n = navigator.userAgent.toLowerCase(),
e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf('android') || -1 < n.indexOf('adr'));
this.deviceInfo.isJdApp = -1 < n.indexOf('jdapp');
this.deviceInfo.isJrApp = -1 < n.indexOf('jdjr');
this.deviceInfo.userAgent = navigator.userAgent;
this.deviceInfo.isAndroid = e;
this.createWorker();
} catch (f) {}
};
this.db = function (n, e) {
try {
_fingerprint_step = 'm';
if (window.openDatabase) {
var f = window.openDatabase('sqlite_jdtdstorage', '', 'jdtdstorage', 1048576);
void 0 !== e && '' != e
? f.transaction(function (r) {
r.executeSql(
'CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))',
[],
function (k, g) {},
function (k, g) {}
);
r.executeSql(
'INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)',
[n, e],
function (k, g) {},
function (k, g) {}
);
})
: f.transaction(function (r) {
r.executeSql(
'SELECT value FROM cache WHERE name=?',
[n],
function (k, g) {
1 <= g.rows.length && (_JdEid = g.rows.item(0).value);
},
function (k, g) {}
);
});
}
_fingerprint_step = 'n';
} catch (r) {}
};
this.setCookie = function (n, e) {
void 0 !== e && '' != e && (document.cookie = n + '=' + e + '; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=' + _root_domain);
};
this.tdencrypt = function (n) {
n = this.toJson(n);
n = encodeURIComponent(n);
var e = '',
f = 0;
do {
var r = n.charCodeAt(f++);
var k = n.charCodeAt(f++);
var g = n.charCodeAt(f++);
var m = r >> 2;
r = ((r & 3) << 4) | (k >> 4);
var a = ((k & 15) << 2) | (g >> 6);
var b = g & 63;
isNaN(k) ? (a = b = 64) : isNaN(g) && (b = 64);
e =
e +
'23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-'.charAt(m) +
'23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-'.charAt(r) +
'23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-'.charAt(a) +
'23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-'.charAt(b);
} while (f < n.length);
return e + '/';
};
this.collect = function () {
var n = new Date();
try {
var e = document.createElement('div'),
f = {},
r =
'ActiveBorder ActiveCaption AppWorkspace Background ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText'.split(
' '
);
if (window.getComputedStyle)
for (var k = 0; k < r.length; k++) document.body.appendChild(e), (e.style.color = r[k]), (f[r[k]] = window.getComputedStyle(e).getPropertyValue('color')), document.body.removeChild(e);
} catch (D) {}
e = {
ca: {},
ts: {},
m: {},
};
r = e.ca;
r.tdHash = _jdfp_canvas_md5;
var g = !1;
if ((k = window.WebGLRenderingContext))
(k = navigator.userAgent), (k = k.toLowerCase()), (k = (0 < k.indexOf('jdjr-app') || 0 <= k.indexOf('jdapp')) && (0 < k.indexOf('iphone') || 0 < k.indexOf('ipad')) ? !0 : !1), (k = !k);
if (k) {
var m = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'],
a = [],
b;
for (k = 0; k < m.length; k++)
try {
var c = !1;
(c = document.createElement('canvas').getContext(m[k], {
stencil: !0,
})) &&
c &&
((b = c), a.push(m[k]));
} catch (D) {}
a.length &&
(g = {
name: a,
gl: b,
});
}
if (g) {
k = g.gl;
r.contextName = g.name.join();
r.webglversion = k.getParameter(k.VERSION);
r.shadingLV = k.getParameter(k.SHADING_LANGUAGE_VERSION);
r.vendor = k.getParameter(k.VENDOR);
r.renderer = k.getParameter(k.RENDERER);
b = [];
try {
(b = k.getSupportedExtensions()), (r.extensions = b);
} catch (D) {}
try {
var l = k.getExtension('WEBGL_debug_renderer_info');
l && ((r.wuv = k.getParameter(l.UNMASKED_VENDOR_WEBGL)), (r.wur = k.getParameter(l.UNMASKED_RENDERER_WEBGL)));
} catch (D) {}
}
e.m.documentMode = document.documentMode;
e.m.compatMode = document.compatMode;
l = [];
// r = new v;
// for (k = 0; k < A.length; k++) b = A[k], r.checkSupportFont(b) && l.push(b);
e.fo = l;
k = {};
l = [];
for (var h in navigator) 'object' != typeof navigator[h] && (k[h] = navigator[h]), l.push(h);
k.enumerationOrder = l;
k.javaEnabled = false;
try {
k.taintEnabled = navigator.taintEnabled();
} catch (D) {}
e.n = k;
k = navigator.userAgent.toLowerCase();
if ((h = k.match(/rv:([\d.]+)\) like gecko/))) var q = h[1];
if ((h = k.match(/msie ([\d.]+)/))) q = h[1];
h = [];
if (q)
for (
q =
'AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);rmocx.RealPlayer G2 Control;Scripting.Dictionary;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;SWCtl.SWCtl;TDCCtl.TDCCtl;WMPlayer.OCX'.split(
';'
),
k = 0;
k < q.length;
k++
) {
var z = q[k];
try {
var C = new ActiveXObject(z);
l = {};
l.name = z;
try {
l.version = C.GetVariable('$version');
} catch (D) {}
try {
l.version = C.GetVersions();
} catch (D) {}
(l.version && 0 < l.version.length) || (l.version = '');
h.push(l);
} catch (D) {}
}
else {
q = navigator.plugins;
l = {};
for (k = 0; k < q.length; k++) (z = q[k]), (l[z.name] = 1), h.push(x(z));
for (k = 0; k < y.length; k++) (C = y[k]), l[C] || ((z = q[C]), z && h.push(x(z)));
}
q = 'availHeight availWidth colorDepth bufferDepth deviceXDPI deviceYDPI height width logicalXDPI logicalYDPI pixelDepth updateInterval'.split(' ');
z = {};
for (k = 0; q.length > k; k++) (C = q[k]), void 0 !== screen[C] && (z[C] = screen[C]);
q = ['devicePixelRatio', 'screenTop', 'screenLeft'];
l = {};
for (k = 0; q.length > k; k++) (C = q[k]), void 0 !== window[C] && (l[C] = window[C]);
e.p = h;
e.w = l;
e.s = z;
e.sc = f;
e.tz = n.getTimezoneOffset();
e.lil = w.sort().join('|');
e.wil = '';
f = {};
try {
(f.cookie = navigator.cookieEnabled),
(f.localStorage = !!window.localStorage),
(f.sessionStorage = !!window.sessionStorage),
(f.globalStorage = !!window.globalStorage),
(f.indexedDB = !!window.indexedDB);
} catch (D) {}
e.ss = f;
e.ts.deviceTime = n.getTime();
e.ts.deviceEndTime = new Date().getTime();
return this.tdencrypt(e);
};
this.collectSdk = function (n) {
try {
var e = this,
f = !1,
r = e.getLocal('BATQW722QTLYVCRD');
if (null != r && void 0 != r && '' != r)
try {
var k = JSON.parse(r),
g = new Date().getTime();
null != k &&
void 0 != k.t &&
'number' == typeof k.t &&
(12e5 >= g - k.t && void 0 != k.tk && null != k.tk && '' != k.tk && k.tk.startsWith('jdd')
? ((e.deviceInfo.sdkToken = k.tk), (f = !0))
: void 0 != k.tk && null != k.tk && '' != k.tk && (e.deviceInfo.sdkToken = k.tk));
} catch (m) {}
r = !1;
e.deviceInfo.isJdApp
? ((e.deviceInfo.clientVersion = navigator.userAgent.split(';')[2]),
(r = 0 < e.compareVersion(e.deviceInfo.clientVersion, '7.0.2')) &&
!f &&
e.getJdSdkCacheToken(function (m) {
e.deviceInfo.sdkToken = m;
(null != m && '' != m && m.startsWith('jdd')) || e.getJdBioToken(n);
}))
: e.deviceInfo.isJrApp &&
((e.deviceInfo.clientVersion = navigator.userAgent.match(/clientVersion=([^&]*)(&|$)/)[1]),
(r = 0 < e.compareVersion(e.deviceInfo.clientVersion, '4.6.0')) &&
!f &&
e.getJdJrSdkCacheToken(function (m) {
e.deviceInfo.sdkToken = m;
(null != m && '' != m && m.startsWith('jdd')) || e.getJdJrBioToken(n);
}));
'function' == typeof n && n(e.deviceInfo);
} catch (m) {}
};
this.compareVersion = function (n, e) {
try {
if (n === e) return 0;
var f = n.split('.');
var r = e.split('.');
for (n = 0; n < f.length; n++) {
var k = parseInt(f[n]);
if (!r[n]) return 1;
var g = parseInt(r[n]);
if (k < g) break;
if (k > g) return 1;
}
} catch (m) {}
return -1;
};
this.isWKWebView = function () {
return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1;
};
this.getErrorToken = function (n) {
try {
if (n) {
var e = (n + '').match(/"token":"(.*?)"/);
if (e && 1 < e.length) return e[1];
}
} catch (f) {}
return '';
};
this.getJdJrBioToken = function (n) {
var e = this;
'undefined' != typeof JrBridge &&
null != JrBridge &&
'undefined' != typeof JrBridge._version &&
(0 > e.compareVersion(JrBridge._version, '2.0.0')
? console.error('\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio')
: JrBridge.callNative(
{
type: e.bioConfig.type,
operation: e.bioConfig.operation,
biometricData: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
},
function (f) {
try {
'object' != typeof f && (f = JSON.parse(f)), (e.deviceInfo.sdkToken = f.token);
} catch (r) {
console.error(r);
}
null != e.deviceInfo.sdkToken &&
'' != e.deviceInfo.sdkToken &&
((f = {
tk: e.deviceInfo.sdkToken,
t: new Date().getTime(),
}),
e.store('BATQW722QTLYVCRD', JSON.stringify(f)));
}
));
};
this.getJdJrSdkCacheToken = function (n) {
var e = this;
try {
'undefined' == typeof JrBridge ||
null == JrBridge ||
'undefined' == typeof JrBridge._version ||
0 > e.compareVersion(JrBridge._version, '2.0.0') ||
JrBridge.callNative(
{
type: e.bioConfig.type,
operation: 5,
biometricData: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
},
function (f) {
var r = '';
try {
'object' != typeof f && (f = JSON.parse(f)), (r = f.token);
} catch (k) {
console.error(k);
}
null != r &&
'' != r &&
'function' == typeof n &&
(n(r),
r.startsWith('jdd') &&
((f = {
tk: r,
t: new Date().getTime(),
}),
e.store('BATQW722QTLYVCRD', JSON.stringify(f))));
}
);
} catch (f) {}
};
this.getJdBioToken = function (n) {
var e = this;
n = JSON.stringify({
businessType: 'bridgeBiologicalProbe',
callBackName: '_bioDeviceCb',
params: {
pin: '',
jsonData: {
type: e.bioConfig.type,
operation: e.bioConfig.operation,
data: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
biometricData: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
},
},
});
e.isWKWebView()
? window.webkit.messageHandlers.JDAppUnite.postMessage({
method: 'notifyMessageToNative',
params: n,
})
: window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n);
window._bioDeviceCb = function (f) {
try {
var r = 'object' == typeof f ? f : JSON.parse(f);
if (void 0 != r && null != r && '0' != r.status) return;
null != r.data.token && void 0 != r.data.token && '' != r.data.token && (e.deviceInfo.sdkToken = r.data.token);
} catch (k) {
(f = e.getErrorToken(f)), null != f && '' != f && (e.deviceInfo.sdkToken = f);
}
null != e.deviceInfo.sdkToken &&
'' != e.deviceInfo.sdkToken &&
((f = {
tk: e.deviceInfo.sdkToken,
t: new Date().getTime(),
}),
e.store('BATQW722QTLYVCRD', JSON.stringify(f)));
};
};
this.getJdSdkCacheToken = function (n) {
try {
var e = this,
f = JSON.stringify({
businessType: 'bridgeBiologicalProbe',
callBackName: '_bioDeviceSdkCacheCb',
params: {
pin: '',
jsonData: {
type: e.bioConfig.type,
operation: 5,
data: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
biometricData: {
bizId: e.bizId,
duraTime: e.bioConfig.duraTime,
interval: e.bioConfig.interval,
},
},
},
});
e.isWKWebView()
? window.webkit.messageHandlers.JDAppUnite.postMessage({
method: 'notifyMessageToNative',
params: f,
})
: window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f);
window._bioDeviceSdkCacheCb = function (r) {
var k = '';
try {
var g = 'object' == typeof r ? r : JSON.parse(r);
if (void 0 != g && null != g && '0' != g.status) return;
k = g.data.token;
} catch (m) {
k = e.getErrorToken(r);
}
null != k &&
'' != k &&
'function' == typeof n &&
(n(k),
k.startsWith('jdd') &&
((r = {
tk: k,
t: new Date().getTime(),
}),
e.store('BATQW722QTLYVCRD', JSON.stringify(r))));
};
} catch (r) {}
};
this.store = function (n, e) {
try {
this.setCookie(n, e);
} catch (f) {}
try {
window.localStorage && window.localStorage.setItem(n, e);
} catch (f) {}
try {
window.sessionStorage && window.sessionStorage.setItem(n, e);
} catch (f) {}
try {
window.globalStorage && window.globalStorage['.localdomain'].setItem(n, e);
} catch (f) {}
try {
this.db(n, _JdEid);
} catch (f) {}
};
this.getLocal = function (n) {
var e = {},
f = null;
try {
var r = document.cookie.replace(new RegExp('(?:(?:^|.*;\\s*)' + n + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1');
0 !== r.length && (e.cookie = r);
} catch (g) {}
try {
window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = window.localStorage.getItem(n));
} catch (g) {}
try {
window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[n]);
} catch (g) {}
try {
p.globalStorage && (e.globalStorage = window.globalStorage['.localdomain'][n]);
} catch (g) {}
try {
d && 'function' == typeof d.load && 'function' == typeof d.getAttribute && (d.load('jdgia_user_data'), (e.userData = d.getAttribute(n)));
} catch (g) {}
try {
E.indexedDbId && (e.indexedDb = E.indexedDbId);
} catch (g) {}
try {
E.webDbId && (e.webDb = E.webDbId);
} catch (g) {}
try {
for (var k in e)
if (32 < e[k].length) {
f = e[k];
break;
}
} catch (g) {}
try {
if (null == f || 'undefined' === typeof f || 0 >= f.length) f = u(n);
} catch (g) {}
return f;
};
this.createWorker = function () {
if (window.Worker) {
try {
var n = new Blob(
[
"onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};",
],
{
type: 'application/javascript',
}
);
} catch (e) {
(window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder),
(n = new BlobBuilder()),
n.append(
"onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};"
),
(n = n.getBlob());
}
try {
this.worker = new Worker(URL.createObjectURL(n));
} catch (e) {}
}
};
this.reportWorker = function (n, e, f, r) {
try {
null != this.worker &&
(this.worker.postMessage(
JSON.stringify({
url: n,
data: e,
success: !1,
async: !1,
})
),
(this.worker.onmessage = function (k) {}));
} catch (k) {}
};
})();
function td_collect_exe() {
_fingerprint_step = 8;
var t = td_collect.collect();
td_collect.collectSdk();
var u = 'string' === typeof orderId ? orderId : '',
v = 'undefined' !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1;
u = {
pin: _jdJrTdCommonsObtainPin(v),
oid: u,
p: 'https:' == document.location.protocol ? 's' : 'h',
fp: risk_jd_local_fingerprint,
ctype: v,
v: '2.7.10.4',
f: '3',
};
try {
(u.o = _CurrentPageUrl), (u.qs = _url_query_str);
} catch (w) {}
_fingerprint_step = 9;
0 >= _JdEid.length && ((_JdEid = td_collect.obtainLocal()), 0 < _JdEid.length && (_eidFlag = !0));
u.fc = _JdEid;
try {
u.t = jd_risk_token_id;
} catch (w) {}
try {
if ('undefined' != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid;
else {
var x = _JdJrRiskClientStorage.jdtdstorage_cookie('qd_uid');
u.qi = void 0 == x ? '' : x;
}
} catch (w) {}
'undefined' != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__);
try {
td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && '' != td_collect.deviceInfo.sdkToken
? ((u.stk = td_collect.deviceInfo.sdkToken), (td_collect.isRpTok = !0))
: (td_collect.isRpTok = !1);
} catch (w) {
td_collect.isRpTok = !1;
}
x = td_collect.tdencrypt(u);
// console.log(u)
return { a: x, d: t };
}
function _jdJrTdCommonsObtainPin(t) {
var u = '';
'string' === typeof jd_jr_td_risk_pin && 1 == t
? (u = jd_jr_td_risk_pin)
: 'string' === typeof pin
? (u = pin)
: 'object' === typeof pin && 'string' === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin);
return u;
}
function getBody(userAgent, url = document.location.href) {
navigator.userAgent = userAgent;
let href = url;
let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url);
let [, origin, protocol, host, pathname] = choose;
document.location.href = href;
document.location.origin = origin;
document.location.protocol = protocol;
document.location.host = host;
document.location.pathname = pathname;
const JF = new JdJrTdRiskFinger();
let fp = JF.f.get(function (t) {
risk_jd_local_fingerprint = t;
return t;
});
let arr = td_collect_exe();
return { fp, ...arr };
}
function Env(t, e) {
'undefined' != typeof process && JSON.stringify(process.env).indexOf('GITHUB') > -1 && process.exit(0);
class s {
constructor(t) {
this.env = t;
}
send(t, e = 'GET') {
t = 'string' == typeof t ? { url: t } : t;
let s = this.get;
return (
'POST' === e && (s = this.post),
new Promise((e, i) => {
s.call(this, t, (t, s, r) => {
t ? i(t) : e(s);
});
})
);
}
get(t) {
return this.send.call(this.env, t);
}
post(t) {
return this.send.call(this.env, t, 'POST');
}
}
return new (class {
constructor(t, e) {
(this.name = t),
(this.http = new s(this)),
(this.data = null),
(this.dataFile = 'box.dat'),
(this.logs = []),
(this.isMute = !1),
(this.isNeedRewrite = !1),
(this.logSeparator = '\n'),
(this.startTime = new Date().getTime()),
Object.assign(this, e),
this.log('', `🔔${this.name}, 开始!`);
}
isNode() {
return 'undefined' != typeof module && !!module.exports;
}
isQuanX() {
return 'undefined' != typeof $task;
}
isSurge() {
return 'undefined' != typeof $httpClient && 'undefined' == typeof $loon;
}
isLoon() {
return 'undefined' != typeof $loon;
}
toObj(t, e = null) {
try {
return JSON.parse(t);
} catch {
return e;
}
}
toStr(t, e = null) {
try {
return JSON.stringify(t);
} catch {
return e;
}
}
getjson(t, e) {
let s = e;
const i = this.getdata(t);
if (i)
try {
s = JSON.parse(this.getdata(t));
} catch {}
return s;
}
setjson(t, e) {
try {
return this.setdata(JSON.stringify(t), e);
} catch {
return !1;
}
}
getScript(t) {
return new Promise((e) => {
this.get({ url: t }, (t, s, i) => e(i));
});
}
runScript(t, e) {
return new Promise((s) => {
let i = this.getdata('@chavy_boxjs_userCfgs.httpapi');
i = i ? i.replace(/\n/g, '').trim() : i;
let r = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout');
(r = r ? 1 * r : 20), (r = e && e.timeout ? e.timeout : r);
const [o, h] = i.split('@'),
n = {
url: `http://${h}/v1/scripting/evaluate`,
body: { script_text: t, mock_type: 'cron', timeout: r },
headers: { 'X-Key': o, Accept: '*/*' },
};
this.post(n, (t, e, i) => s(i));
}).catch((t) => this.logErr(t));
}
loaddata() {
if (!this.isNode()) return {};
{
(this.fs = this.fs ? this.fs : require('fs')), (this.path = this.path ? this.path : require('path'));
const t = this.path.resolve(this.dataFile),
e = this.path.resolve(process.cwd(), this.dataFile),
s = this.fs.existsSync(t),
i = !s && this.fs.existsSync(e);
if (!s && !i) return {};
{
const i = s ? t : e;
try {
return JSON.parse(this.fs.readFileSync(i));
} catch (t) {
return {};
}
}
}
}
writedata() {
if (this.isNode()) {
(this.fs = this.fs ? this.fs : require('fs')), (this.path = this.path ? this.path : require('path'));
const t = this.path.resolve(this.dataFile),
e = this.path.resolve(process.cwd(), this.dataFile),
s = this.fs.existsSync(t),
i = !s && this.fs.existsSync(e),
r = JSON.stringify(this.data);
s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r);
}
}
lodash_get(t, e, s) {
const i = e.replace(/\[(\d+)\]/g, '.$1').split('.');
let r = t;
for (const t of i) if (((r = Object(r)[t]), void 0 === r)) return s;
return r;
}
lodash_set(t, e, s) {
return Object(t) !== t
? t
: (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []),
(e.slice(0, -1).reduce((t, s, i) => (Object(t[s]) === t[s] ? t[s] : (t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {})), t)[e[e.length - 1]] = s),
t);
}
getdata(t) {
let e = this.getval(t);
if (/^@/.test(t)) {
const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t),
r = s ? this.getval(s) : '';
if (r)
try {
const t = JSON.parse(r);
e = t ? this.lodash_get(t, i, '') : e;
} catch (t) {
e = '';
}
}
return e;
}
setdata(t, e) {
let s = !1;
if (/^@/.test(e)) {
const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e),
o = this.getval(i),
h = i ? ('null' === o ? null : o || '{}') : '{}';
try {
const e = JSON.parse(h);
this.lodash_set(e, r, t), (s = this.setval(JSON.stringify(e), i));
} catch (e) {
const o = {};
this.lodash_set(o, r, t), (s = this.setval(JSON.stringify(o), i));
}
} else s = this.setval(t, e);
return s;
}
getval(t) {
return this.isSurge() || this.isLoon()
? $persistentStore.read(t)
: this.isQuanX()
? $prefs.valueForKey(t)
: this.isNode()
? ((this.data = this.loaddata()), this.data[t])
: (this.data && this.data[t]) || null;
}
setval(t, e) {
return this.isSurge() || this.isLoon()
? $persistentStore.write(t, e)
: this.isQuanX()
? $prefs.setValueForKey(t, e)
: this.isNode()
? ((this.data = this.loaddata()), (this.data[e] = t), this.writedata(), !0)
: (this.data && this.data[e]) || null;
}
initGotEnv(t) {
(this.got = this.got ? this.got : require('got')),
(this.cktough = this.cktough ? this.cktough : require('tough-cookie')),
(this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()),
t && ((t.headers = t.headers ? t.headers : {}), void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar));
}
get(t, e = () => {}) {
t.headers && (delete t.headers['Content-Type'], delete t.headers['Content-Length']),
this.isSurge() || this.isLoon()
? (this.isSurge() && this.isNeedRewrite && ((t.headers = t.headers || {}), Object.assign(t.headers, { 'X-Surge-Skip-Scripting': !1 })),
$httpClient.get(t, (t, s, i) => {
!t && s && ((s.body = i), (s.statusCode = s.status)), e(t, s, i);
}))
: this.isQuanX()
? (this.isNeedRewrite && ((t.opts = t.opts || {}), Object.assign(t.opts, { hints: !1 })),
$task.fetch(t).then(
(t) => {
const { statusCode: s, statusCode: i, headers: r, body: o } = t;
e(null, { status: s, statusCode: i, headers: r, body: o }, o);
},
(t) => e(t)
))
: this.isNode() &&
(this.initGotEnv(t),
this.got(t)
.on('redirect', (t, e) => {
try {
if (t.headers['set-cookie']) {
const s = t.headers['set-cookie'].map(this.cktough.Cookie.parse).toString();
s && this.ckjar.setCookieSync(s, null), (e.cookieJar = this.ckjar);
}
} catch (t) {
this.logErr(t);
}
})
.then(
(t) => {
const { statusCode: s, statusCode: i, headers: r, body: o } = t;
e(null, { status: s, statusCode: i, headers: r, body: o }, o);
},
(t) => {
const { message: s, response: i } = t;
e(s, i, i && i.body);
}
));
}
post(t, e = () => {}) {
if (
(t.body && t.headers && !t.headers['Content-Type'] && (t.headers['Content-Type'] = 'application/x-www-form-urlencoded'),
t.headers && delete t.headers['Content-Length'],
this.isSurge() || this.isLoon())
)
this.isSurge() && this.isNeedRewrite && ((t.headers = t.headers || {}), Object.assign(t.headers, { 'X-Surge-Skip-Scripting': !1 })),
$httpClient.post(t, (t, s, i) => {
!t && s && ((s.body = i), (s.statusCode = s.status)), e(t, s, i);
});
else if (this.isQuanX())
(t.method = 'POST'),
this.isNeedRewrite && ((t.opts = t.opts || {}), Object.assign(t.opts, { hints: !1 })),
$task.fetch(t).then(
(t) => {
const { statusCode: s, statusCode: i, headers: r, body: o } = t;
e(null, { status: s, statusCode: i, headers: r, body: o }, o);
},
(t) => e(t)
);
else if (this.isNode()) {
this.initGotEnv(t);
const { url: s, ...i } = t;
this.got.post(s, i).then(
(t) => {
const { statusCode: s, statusCode: i, headers: r, body: o } = t;
e(null, { status: s, statusCode: i, headers: r, body: o }, o);
},
(t) => {
const { message: s, response: i } = t;
e(s, i, i && i.body);
}
);
}
}
time(t, e = null) {
const s = e ? new Date(e) : new Date();
let i = {
'M+': s.getMonth() + 1,
'd+': s.getDate(),
'H+': s.getHours(),
'm+': s.getMinutes(),
's+': s.getSeconds(),
'q+': Math.floor((s.getMonth() + 3) / 3),
S: s.getMilliseconds(),
};
/(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + '').substr(4 - RegExp.$1.length)));
for (let e in i) new RegExp('(' + e + ')').test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ('00' + i[e]).substr(('' + i[e]).length)));
return t;
}
msg(e = t, s = '', i = '', r) {
const o = (t) => {
if (!t) return t;
if ('string' == typeof t) return this.isLoon() ? t : this.isQuanX() ? { 'open-url': t } : this.isSurge() ? { url: t } : void 0;
if ('object' == typeof t) {
if (this.isLoon()) {
let e = t.openUrl || t.url || t['open-url'],
s = t.mediaUrl || t['media-url'];
return { openUrl: e, mediaUrl: s };
}
if (this.isQuanX()) {
let e = t['open-url'] || t.url || t.openUrl,
s = t['media-url'] || t.mediaUrl;
return { 'open-url': e, 'media-url': s };
}
if (this.isSurge()) {
let e = t.url || t.openUrl || t['open-url'];
return { url: e };
}
}
};
if ((this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog)) {
let t = ['', '==============📣系统通知📣=============='];
t.push(e), s && t.push(s), i && t.push(i), console.log(t.join('\n')), (this.logs = this.logs.concat(t));
}
}
log(...t) {
t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator));
}
logErr(t, e) {
const s = !this.isSurge() && !this.isQuanX() && !this.isLoon();
s ? this.log('', `❗️${this.name}, 错误!`, t.stack) : this.log('', `❗️${this.name}, 错误!`, t);
}
wait(t) {
return new Promise((e) => setTimeout(e, t));
}
done(t = {}) {
const e = new Date().getTime(),
s = (e - this.startTime) / 1e3;
this.log('', `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t);
}
})(t, e);
}
function random(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function getCodeList(url) {
return new Promise((resolve) => {
const options = {
url: `${url}?${new Date()}`,
timeout: 10000,
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88',
},
};
$.get(options, async (err, resp, data) => {
try {
if (err) {
// $.log(err)
$.getCodeListerr = false;
} else {
if (data) data = JSON.parse(data);
$.getCodeListerr = true;
}
} catch (e) {
$.logErr(e, resp);
data = null;
} finally {
resolve(data);
}
});
});
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化