DX算法还原
早在之前作者就写过一篇关于顶象的滑块验证,潦潦草草几句话就带过了。
出于互相学习的想法,给了一个大学生,奈何不讲武德把源码甩群里了,虽然在大佬们眼里不难,
不过拿着别人的东西乱传还是不太好。自认倒霉,大表哥们互相学习学习。文末作者留下还原的案
例,大表哥们可以拿去研究研究。
网址:https://www.dingxiang-inc.com/business/captcha
其实可以看到顶象官方的验证方式还是挺多的,这里说明一下,除了顶象定制版,大部分基本用官方的这一套都能行。 这里就以滑块来说一说。

具体流程:第一次:c1请求(注册ck)第二次:c1请求(返回有效const_id,这也就是下一步图片请求中的参数c)第三步:https://cap.dingxiang-inc.com/api/a(获取图片以及sid等后续加密用到的值)第四步:https://cap.dingxiang-inc.com/api/v1(验证)
这里作者提一句,一般关于顶象的东西,补环境还是来得快点,基本_dx下都包含所有的逻辑,补完套来用就好。

具体分析:
第一次c1请求:

第二次c1请求:
此处的长的Param参数跟顶象接入id,第一次返回的data有关。
具体的分析流程在index.js里,感兴趣的大表哥可以去断个点跟一跟。作者去扣过逻辑,值得注意的问题是,顶象的js每天变两次,所以要扣逻辑的话还是保存一份本地来搞,或者不刷新页面。
这里我就直接给出dom补的方案获取有效const_id
const {JSDOM} = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {url: "https://flights.sda.cn/login?redirect=%2F%2Fnew.sda.cn"
});
const jsdom_window = jsdom.window;// 固定变量
/*Date.prototype.getTime = function () {return 1663520336000;
}
Date.now = function chen_date_now() {return new Date().getTime();
}
Math.random = function () {return 0.16601174644686956;
}if (Function.prototype.originalToString == undefined) {Function.prototype.originalToString = Function.prototype.toString;
}
Function.prototype.toString = function () {let originalToString = this.originalToString();if (originalToString.indexOf("this instanceof") >= 0) {return "function F(c){var u=t[40];if(!(this instanceof F))return new F(c);this[[h,v,u].join(r[4])]=O,this[o[40]]=[],this[a[37]]=[],this[e[46]]=null,this[a[38]]=null,(0,L[i[43]])(c)&&c(D(this[n[48]],this),D(this[o[41]],this))}";} else {return originalToString;}
}
*/var _json = JSON;function get_data(appId) {var origin = jsdom_window.XMLHttpRequest.prototype.open;jsdom_window.XMLHttpRequest.prototype.open = function (...args) {args[2] = false;this['timeout'] = 0;return origin.apply(this, args);}// jsdom_window.XMLHttpRequest.prototype._send = jsdom_window.XMLHttpRequest.prototype.send;// jsdom_window.XMLHttpRequest.prototype.send = function () {// this._send();// }let data = "";// window基础var eventObj = {};var window = {"Symbol": function (a, b, c, d, e, f, g) {return undefined;},"location": {"href": "https://flights.sda.cn/login?redirect=%2F%2Fnew.sda.cn","protocol": "https:"},"Object": Object,"Array": Array,"encodeURIComponent": encodeURIComponent,"document": {"head": {"appendChild": function () {},"removeChild": function () {debugger;}},"body": {"scrollLeft": 0,"appendChild": function (a, b, c, d, e, f, g) {debugger;},"removeChild": function (a, b, c, d, e, f, g) {debugger;}},"createElement": function (a, b, c, d, e, f, g) {if (a == 'canvas') {return {"getContext": function (a, b, c, d, e, f, g) {if (a == "2d") {return {"fillRect": function (a, b, c, d, e, f, g) {},"fillText": function (a, b, c, d, e, f, g) {},"arc": function () {},"stroke": function () {}}}},"toDataURL": function my_toDataURL() {},"webgl": function () {},"experimental-webgl": function () {}}} else {}},"createEvent": function (a, b, c, d, e, f, g) {// debugger;},"documentElement": {"scrollLeft": 0,"getAttribute": function (a, b, c, d, e, f, g) {// debugger;}},"readyState": "interactive","addEventListener": function (a, b, c, d, e, f, g) {eventObj[a] = b;},"referrer": "","createEvent": function (a, b, c, d, e, f, g) {if (a == "TouchEvent") {throw DOMException("Failed to execute 'createEvent' on 'Document': The provided event type ('TouchEvent') is invalid.");}debugger;},"implementation": {"hasFeature": function (a, b, c, d, e, f, g) {if (a == "MouseEvents" && b == "2.0") {return true;}debugger;}},"getElementById": function (a, b, c, d, e, f, g) {debugger;}},"RegExp": RegExp,"XMLHttpRequest": jsdom_window.XMLHttpRequest,"Date": Date,// "_dx": {// "inSDK": false,// "Captcha": function (a, b, c, d, e, f, g) {// debugger;// },// "UA": {}// },"Math": Math,"String": String,"isNaN": isNaN,"outerHeight": 1040,"innerHeight": 937,"outerWidth": 1920,"innerWidth": 1920,"parseInt": parseInt,"screenLeft": 0,"screenTop": 40,"encodeURIComponent": encodeURIComponent,"localStorage": {"getItem": function (a, b, c, d, e, f, g) {// console.log("localStorage.getItem ", a, b, c);return undefined;}, "setItem": function (a, b, c, d, e, f, g) {// console.log("localStorage.setItem ", a, b, c);}},"sessionStorage": {"getItem": function (a, b, c, d, e, f, g) {// console.log("sessionStorage.getItem ", a, b, c)return undefined;},"setItem": function (a, b, c, d, e, f, g) {// console.log("sessionStorage.setItem ", a, b, c);}},"Error": function (a, b, c, d, e, f, g) {// debugger;},"Math": Math,"Image": function (a, b, c, d, e, f, g) {// debugger;return {};},"isNaN": isNaN,"JSON": {"parse": function (a) {console.log(a);data = data + "###" + a;var result = _json.parse(a);return result;}},"devicePixelRatio": 1,"indexedDB": {},"openDatabase": function (a, b, c, d, e, f, g) {debugger;},"WebGLRenderingContext": function (a, b, c, d, e, f, g) {debugger;},"history": {"length": 2},"Float32Array": Float32Array,"unescape": unescape,"eval": eval,"performance": {"timing": {"domContentLoadedEventEnd": 1632072660783},"getEntriesByName": function (a, b, c, d, e, f, g) {debugger;}},"decodeURIComponent": decodeURIComponent,"isFinite": function (a, b, c, d, e, f, g) {// debugger;},"setTimeout": function (a, b, c, e, d) {a();}};// navigatorlet Navigator = function () {}Navigator.prototype.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36";Navigator.prototype.platform = "Win32";Navigator.prototype.webdriver = false;Navigator.prototype.deviceMemory = 8;Navigator.prototype.hardwareConcurrency = 16;Navigator.prototype.maxTouchPoints = 0;Navigator.prototype.language = "zh-CN";Navigator.prototype.productSub = "20030107";Navigator.prototype.languages = ["zh-CN"];Navigator.prototype.cookieEnabled = true;Navigator.prototype.plugins = {};window.navigator = new Navigator();let Screen = function () {}Screen.prototype.width = 1920;Screen.prototype.height = 1080;Screen.prototype.availWidth = 1920;Screen.prototype.availHeight = 1040;Screen.prototype.colorDepth = 24;window.screen = new Screen();with (window) {//index.js}var _Format_2176 = {"appId": appId,"timeout": 3000,"iframeUrl": "https://cdn.dingxiang-inc.com/ctu-group/constid-js/messager.html","iframeOrign": "https://cdn.dingxiang-inc.com"}window._dx._ConstID_Private(_Format_2176, function () {});return data;
}var data = get_data('c08872185674ff1787fead6dbac18146');
console.log(data);
有喜欢扣js的大表哥可以参考这个去扣c1两个包中的Params,一长一短,兄弟们太短了可不太行哦,

拒绝颜色从我做起,

哈哈哈,正事要紧,需要的话看看下面这个哇。
var h={"lid": "a008fb6cd80be29981f8fec28e8edfb1c68e00dfc82c6281b4b898d05e1db89d6543e0dc","lidType": 1,"cache": true,"can": "981ca80af415f5c9fb420b3cf8fc233d","web": "e11de126215c6cca83f1fc404ed1e5e3","gi": "Google Inc. (NVIDIA);ANGLE (NVIDIA, NVIDIA GeForce GT 1030 Direct3D11 vs_5_0 ps_5_0, D3D11-30.0.15.1215)","pr": 1,"dm": 8,"cc": "unknown","hc": 12,"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36","np": "Win32","lug": "zh-CN","ce": 1,"ts": "0;false;false","timezone": "Asia/Shanghai","to": -480,"ls": 1,"ss": 1,"ind": 1,"ab": 0,"od": 1,"cd": 24,"res": "1920;1080","ar": "1920;1050","vs": "1920;150","ws": "1920;1050","rp": "PDF Viewer;Chrome PDF Viewer;Chromium PDF Viewer;Microsoft Edge PDF Viewer;WebKit built-in PDF","adb": false,"hl": 3,"cl": 17,"st": 41904,"ct": 11290,"hlb": false,"hll": false,"hlo": false,"hlr": false,"db": 1,"sm": 0,"appKey": "dxdxdxtest2017keyc3e83b6940835"
};
var result='2940#X8m8rKK15ojqNsAvpfPzCkF8QntgdepvonAMrUkJpZNKLsRTqfwSLpw40SE29JDao4JVLsG4qbzCVsi17ZwcdkAv0ZzSLUG6G5pbEstFqQlKdHgYXXQLnhWjuR8KXAZdH2IXjFUtosi7QFFex+UyQX8XiFsgGuRto0ilSAegGivEGmhY+SS/E0tluFhYWAsVJ02/SCRgWzxqmFnuXYrafr4cTd9HUroqDLoiUX5gjRCkk87Qjj8PfaXNa6uTO8myaRXufuZMmrm0rtMor5+jiYVQsIwe8NrZl2ajTXyi+I4SONhAO2yStU4jTXyi+I4SOgTjY8xSMNCz8tLeYYNZlKQjiIcjO/6cT/FPkndelgNcMNac82qQiK/eT/ZZeh0ciVD38gJcMNac7iaum//uOJ/uOfac76hjm2X17ZPjr5p8YXX1XTZkXW1MY8XUT1MoT343eo9QwJdpw/8iXX4l3uaV6/nuY2m79+jm5bzGQQALtlkil5hMzqKFxBYOb7FgEBLfcosEVKFZBWkAo4ENrshFebHC9HwWzJN4gORjxohF7xibEspISx1zCqByeFE9K4D9AHYkBQqOBvBVAGihVkzsxIAorGlISxigEsqn0viAyGFrrJJ1bvNtCGhjeOqSEr2XjY4vUToCX98b/NmhWXVXj62B8LTojV/JDDCGnc3UXXfLfN/LUwXFXmRRxbRNwUGJ7fFEL0NfSg6yts0JBmXX1p1dGqvaKRdmq8P3L8c85t7s/v7pLE8ljQam38XvKV6yKB7WFkqb3rX1s647sR8B32X1pjxdXCrjuXXPud584uOoDT/XmEyTIhyoqMfXmxdtcehU0MWXmtvLOYnqIL8fXm1QdGevqbPw200vKWsw2B0sqTyX33Xv3PxjuPcwfauTm24H6VX+XXgDDY2DAmWnEmL5lXCnKmWkXmmS8yTSjMaGjXaqjrOqXX4SPXmcORrG+6n+PhgC1T3LsL2bhzfSjVoSvt7eYP2shwu8nLVpU6ZGvTynaY5BvAonHXQsIaXEFh57fd/yYma6ZY/QFdCbi82Y1TWUj6oU/hrWXyQgPh5x3937h2aIsEfBOLu6kRoLHN/4XX07921Tu4omycphXC5XmCujfMPTA83Xm5FrLiq/xOnYXXxLFLxuJdcBDzu7X2XigGicgK0r5UFS588XYBnyTFRtoCRoTP2Im8XsuDVTHabcXNnUHTr1XXpjRI2Qr5fI+gtQq2WXYKRvd4URAbHXd4s/YXX1XTIjXWu7Y8X1T1qQT3W1YrXx+Cc1vEr6Rz3F6E2X/E5PYVINTrMqhX4CYmOUIXf4W3Q/fuxPmNo1R6S=';
function hc(i) {for (var a = [3, 2, 4, 0, 1], u = 0; true; ) {switch (a[u++]) {case 0:for (var c = 0; c < i.length; c++) {var s = i.charCodeAt(c), f = s ^ d;d = s,v += String.fromCharCode(f)}continue;case 1:return v;case 2:var v = '';continue;case 3:if (!i)return '';continue;case 4:var d = 61380;continue}break}
};
var k_function_list=[function(i) {for (var a = 'c', u = 'h', c = 'd', s = "A", f = '', v = 56737, w = 0; w < i['length']; w++) {var m = i['charCodeAt'](w) ^ v;v = m,f += String['fromCharCode'](m & 255)}return f},function(t) {for (var a = '', u = "NxMLsN8Ng7lA", c = 32, s = 0; s < t["length"]; s++) {var f = t["charCodeAt"](s);c = (c + 3) % u["length"],f ^= u["charCodeAt"](c),a += String["fromCharCode"](f & 255)}return a},function(i) {for (var a = '', u = 8, c = 7, s = 221, f = 0; f < i['length']; f++) {s = ((s << u ^ s) & 240) + (s >> c),a += String['fromCharCode']((i['charCodeAt'](f) ^ s) & 255)}return a},function(n) {for (var e = '', i = 5, a = 18657, u = 0; u < n['length']; u++) {var c = n['charCodeAt'](u), s = (c >> i) + (c << 8 - i) + a & 255;e += String['fromCharCode'](s)}return e},function(t) {for (var r = '', i = '2359', a =0; a < t['length']; a++) {var u = t['charCodeAt'](a) ^ i;i = u,r += String['fromCharCode'](u & 255)}return r},//4function(i) {for (var a = "vPV$", u = '', c = 6, s = 3, f = 0; f < i['length']; f++) {var v = i['charCodeAt'](f) - c & 255, d = (v >> s) + (v << 8 - s) & 255;u += String['fromCharCode'](d)}return u},function(i) {for (var a = '', u = '891', c = 4, s = 7, f = u, v =0; v < i['length']; v++) {f = ((f << c ^ f) & 240) + (f >> s),a += String['fromCharCode']((i["charCodeAt"](v) ^ f) & 255)}return a},function(e) {for (var i = "vWS3", a = '', u = 2, c = 5, s = 0; s < e["length"]; s++) {var f = e["charCodeAt"](s) - u & 255, v = (f >> c) + (f << 8 - c) & 255;a += String['fromCharCode'](v)}return a},//7function(n) {for (var i = '', a = 3, u =5, c = 0; c < n["length"]; c++) {var s = n["charCodeAt"](c), f = (s >> a) + (s << u) & 255;i += String["fromCharCode"](f)}return i},function(i) {for (var a = [0, 1, 4, 2, 5, 3], u = 0; true; ) {switch (a[u++]) {case 0:var c = 'c', s = 'h', f = 'e', v = "ar", d = "de";continue;case 1:var l ="";continue;case 2:var j = 0;continue;case 3:return l;case 4:var h = "Hx6Vcs7S5x";continue;case 5:for (var p = 0; p < i["length"]; p++) {var g = i["length"](p);g ^= h["charCodeAt"](j),++j >= h["length"] && (j = 0),l += String["fromCharCode"](g & 255)}continue}break}},function(e) {for (var i = '', a = 72439, u = 0; u < e["length"]; u++) {var c = e["charCodeAt"](u) ^ a;a = c,i += String["fromCharCode"](c & 255)}return i},function(i) {for (var a = [2, 1, 5, 0, 4, 3], u = 0; true; ) {switch (a[u++]) {case 0:var c = j;continue;case 1:var s = "";continue;case 2:var f = "fromCha", v = "rCode";continue;case 3:return s;case 4:for (var d = 0; d < i["length"]; d++) {var l = i["charCodeAt"](d) ^ c;c = l,s += String["fromCharCode"](l & 255)}continue;case 5:var j = 67845;continue}break}},//11function(i) {for (var a = [5, 0, 1, 2, 4, 3], u = 0; true; ) {switch (a[u++]) {case 0:var c = '';continue;case 1:var s = "NS7SN5gd5U8ls";continue;case 2:var f = 0;continue;case 3:return c;case 4:for (var v = 0; v < i['length']; v++) {var d = i["charCodeAt"](v);d ^= s["charCodeAt"](f),++f >= s["length"] && (f = 0),c += String["fromCharCode"](d & 255)}continue;case 5:var l = "絷", j = "?", h = "?", p = "?";continue}break}},function(r) {for (var i = "n", a = "g", u = "", c = 115, s = 6, f = 0; f < r["length"]; f++) {var v = c ^ r["charCodeAt"](f);u += String["fromCharCode"]((v >> s ^ r["charCodeAt"](f)) & 255)}return u},function(i) {for (var a = 'c', u = "h", c = "a", s = "d", f = "A", v = "", d = 241, l = 0; l < i["length"]; l++) {var j = (i["charCodeAt"](l) ^ d) & 255;v += String["fromCharCode"](j),d = j}return v},function(n) {for (var i = "", a = 2755, u = 451, c = 0; c < n['length']; c++) {var s = n["charCodeAt"](c) ^ u;u = u * c % 256 + a,i += String["fromCharCode"](s & 255)}return i},//15function(t) {for (var i = "len", a = "", u = 3, c = 29111, s = 0; s < t["length"]; s++) {var f = t["charCodeAt"](s), v = (f >> u) + (f << 8 - u) + c & 255;a += String["fromCharCode"](v)}return a},function(e) {for (var r = '', i = 208, a = 4, u = 0; u < e['length']; u++) {var c = i ^ e[pc(o[505])](u);r += String["fromCharCode"]((c >> a ^ e["charCodeAt"](u)) & 255)}return r},function(i) {for (var a = '', u = 167, c = 3, s = 4, f = u, v = 0; v < i['length']; v++) {f = ((f << c ^ f) & 240) + (f >> s),a += String["fromCharCode"]((i["charCodeAt"](v) ^ f) & 255)}return a},function(e) {for (var i = "len", a = "", u = 98357, c = 0; c < e['length']; c++) {var s = e["charCodeAt"](c) ^ u;u = s,a += String["fromCharCode"](s & 255)}return a},function(o) {for (var i = '', a = 3, u = 47589, c = 0; c < o['length']; c++) {var s = o["charCodeAt"](c), f = (s >> a) + (s << 8 - a) + u & 255;i += String["fromCharCode"](f)}return i},//20function(e) {for (var i = '', a = 3519, u = 0; u < e['length']; u++) {var c = (e["charCodeAt"](u) ^ a) & 255;i += String["fromCharCode"](c),a = c}return i},function(e) {for (var t = "eAt", i = "", a = 237, u = 8, c = 0; c < e['length']; c++) {var s = a ^ e["charCodeAt"](c);i += String["fromCharCode"]((s >> u ^ e["charCodeAt"](c)) & 255)}return i},function(i) {for (var a = [3, 1, 2, 4, 0], u = 0; true; ) {switch (a[u++]) {case 0:return f;case 1:var c = 143;continue;case 2:var s = c;continue;case 3:var f = "";continue;case 4:for (var v = 0; v < i["length"]; v++) {var d = (i["charCodeAt"](v) ^ s) & 255;f += String["fromCharCode"](d),s = d}continue}break}},function(e) {for (var i = '', a = "bhbXy6HJSaj67jk", u = 0; u < e['length']; u++) {var c = e["charCodeAt"](u) ^ a["charCodeAt"](u % a["length"]);i += String["fromCharCode"](c & 255)}return i},function(i) {for (var a = "", u = 4, c = 16373, s = 0; s < i['length']; s++) {var f = i["charCodeAt"](s), v = (f >> u) + (f << 8 - u) + c & 255;a += String["fromCharCode"](v)}return a},//25function(i) {for (var a = '', u = "J6Br59Hf7NgK", c = 44, s =0; s < i['length']; s++) {var f = i["charCodeAt"](s);c = (c + 4) % u["length"],f ^= u["charCodeAt"](c),a += String["fromCharCode"](f & 255)}return a},function(i) {for (var a = "", u = "KX8Mkg9GJK", c = 36, s =0; s < i["length"]; s++) {var f = i["charCodeAt"](s);c = (c + 1) % u["length"],f ^= u["charCodeAt"](c),a += String["fromCharCode"](f & 255)}return a},function(i) {for (var a = "", u = 2, c = 5, s = 367, f = 0; f < i['length']; f++) {s = ((s << u ^ s) & 240) + (s >> c),a += String["fromCharCode"]((i["charCodeAt"](f) ^ s) & 255)}return a},function(i) {for (var a = [3, 2, 4, 0, 1], u = 0; true; ) {switch (a[u++]) {case 0:for (var c = 0; c < i['length']; c++) {var s = i["charCodeAt"](c), f = (s >> d) + (s << v) & 255;l += String["fromCharCode"](f)}continue;case 1:return l;case 2:var v = 3;continue;case 3:var d = 5;continue;case 4:var l = "";continue}break}}
];
function dc(i) {for (var a = [1, 3, 0, 2, 4, 5], u = 0; true; ) {switch (a[u++]) {case 0:var c = "V587";continue;case 1:if (!i)return '';continue;case 2:var s = 68232;continue;case 3:var f = '';continue;case 4:for (var v = 0; v < i.length; v++) {var d = i.charCodeAt(v);s = (s + '') % c.length,d ^= c.charCodeAt(s),f += String.fromCharCode(d)}continue;case 5:return f}break}
}
function pc(o) {if (!o)return '';var i = [];o = o.split(",");for (var a = 0; a < o.length; a++)i.push(String.fromCharCode(parseInt(o[a], 16)));return i.join('')
}
var C={"stringifyJSON":function(i, a, u) {var c = '6', p = 'd', g = '2', w = '5', m = '2';if (M = '',I = dc(''),typeof u === pc(['6', "e", ",", "7", "5", ",", c, p, ",", "6", g, ",", "6", w, ",", "7", m].join('')))for (var y = 0; y < u; y += 1)I += " ";elsetypeof u === 'string' && (I = u);// if (L = a,// a && typeof a !== "function" && ((typeof a === "undefined" ? "undefined" : T(a)) !== o[8] || typeof a[e[114]] !== o[384]))// throw new Error(dc([Ii, Di, h].join(r[4])));return '"'+JSON.stringify(i)+'"'}
};
var O = function(r, i) {function T(n) {return [v(n, 8), v(n, 0)]};function v(t, o, i) {return t >> o & Math['pow'](2, (typeof i === 'undefined' ? 1 : i) * 8) -1};function A(t) {for (var r = '', i = 0; i < t['length']; i++)r += String['fromCharCode'](t[i]);return r};var a = "co", u = "nc";return (0, A)([r]["concat"]((0, T)(i['length']))) + i
};
function end_code(o, u) {for (var c, s, f, l, d, v, h, g = '', p = 0; p < o.length; )c = o["charCodeAt"](p++),s = o["charCodeAt"](p++),f = o["charCodeAt"](p++),l = c >> 2,d = (c & 3) << 4 | s >> 4,v = (s & 15) << 2 | f >> 6,h = f & 63,isNaN(s) ? v = h = 64 : isNaN(f) && (h = 64),g = g + u.charAt(l) + u.charAt(d) + u.charAt(v) + u.charAt(h);return "2941#"+g
};
gRYsJOBH=function(i) {var a = 'le', u = 'th', c = "e", j = "6e,76,69,73,", h = "49,5a,55,46,", p = "53,78,6c,65,", g = "32,4d,74,77,", w = "56,39,4e,64,", m = "67,62,4b,42,", y = '', b = 30, S = 0;for (var E in i) {var _, x = S % b, A = k_function_list[x], T = (0, C['stringifyJSON'])(((_ = {})[E] = i[E], _));y += O(x + 1, A(T['slice'](1, -1))),S++}return end_code(y, "XmYj3u1PnvisIZUF8ThR/a6DfO+kW4JHrCELycAzSxleoQp02MtwV9Nd57qGgbKB=")
};var o=["",57484,1,3,4,0,"object","S","te","n","ma","??","??????????????","e","?","p","\ude9f\udefc\ude88","pa",":","r","lp","d","fillRec","m","f","j","y","t","l","hardwareCon","htt","ng","ins","6e","windowSi","6f","o","5,58","1,58",",45,","\udeb0\udee6\ude83\udef1\ude85\udee0","\udec9\udeb1\ude9a\udeef\ude81\udee8","eBuff","Loc","pus","h","_UNIFORM_VEC","\u0019t","E","pre","expo","rts","?","a","s","u","a cl","K","callbac","da","__es","ion","ect","??????????????????????????????????","undefin","lla","??","67,65","\udefe\ude91","v","b","\b\u0007","aW","M\u0005","\n\u000f","\b\u0001","cti","joi","pro","\udee9\ude80\udeed","exte","\udef8\ude80\udef4\ude91","SA}\u0005zv","DEFAULT_SE","_Const","??","ch","fr","g","\udef1\ude94\udefa","de","eAt",52,"rm","ay","\udeed\ude9f\udef0\ude84\udeeb\ude9f\udee6\ude96\udef3","Function","length",false,"slice",2,"htgnel","\udefa","onload","onerror","function","gth",true,"getHours","fromCharCode","th","c","ct",5,6,"apply","prototype","_state","_value","gE3TKX8","_reason","defer","reject","ca","__esModule","ce","dnt","dm","hlb","\udeed\ude9f\udef0","??","^B8VL^9[","toString","?","=","push","pop","substring","stringifyJSON",8,"protocol","TRACK_APPID","//","\u0017B2\\\\\u00185\u0007","https://eventreport.dingxiang-inc.com","call","asyncCounter","?","options",7,"ime","69,73,54,68,65,6e,61,62,6c,65","value","noitcnuFsi","promise","\udee6\ude95"," ","P","getContext","si","\ude03","clo","width","style",10,"isPointInPath","VX",125,62,"fillText",45,"noitarepOetisopmoClabolg","beginPath",100,50,"closePath","fill",75,"deviceMemory","geolocation",1500,60000,"gps","ud","\u0014","us","platform","64,65,","[X9^QR","67,65,74,54,69,6d,65","timi","defaultStr","createElement"," ","adsbox","getElementsByClassName","????","noituloseRliava","availHeight","body","innerWidth","ze",",7",",4","2,","7,","sessionStorage","indexedDB","DateTimeFormat","nt","\udefc\ude88\udefc\ude8e\udee7\ude85","\ude8e\udee1\ude93\udefe\udeb1\uded7","AY_","BUF","??","\\WY","B_A","BITS","]","~{","AG","webgl","en","4d,4","\udeb9\ude82\udef4\ude9b\udef2\ude96","IN","get","D","_","77,","65,","clearColor","ge","58,5","getExtension","WEBKIT_EXT_texture_filter_anisotropic","createShader","useProgram","TRIANGLE_STRIP","toDataURL","getSupportedExtensions","??????????????????????????????","ALIASED_LINE_WIDTH_RANGE","getParameter","getContextAttributes","webgl max render buffer size:","MAX_VERTEX_UNIFORM_VECTORS","webgl max viewport dims:","MAX_VIEWPORT_DIMS","RENDERER","retemaraPteg","webgl vendor:","webgl unmasked vendor:","webgl unmasked renderer:","6a,6f,69,6e","~","V","67,","each","MEDIUM","getShaderPrecisionFormat","precision ","?","ight","\udef2\ude87\udef3\ude96\udee4\udeac\udec9\udea0\udec7\udeaf\udedb",")$","refo","toLowerCase","IE",37,"indexO","o^8QW@%\u0015","Windows","mac","Other","??????","indexOf","Linux","Android","availWidth","\udeed\ude88\udefa\ude9c\udef3\ude81\udeec\ude8d\udee3\ude80\udee5","B","N",",69,70,74,5f,66,6e","iver","webdriver","__selenium_evaluate","revird","test","join","00000000000000000000000000000000","withCredentials","ty","Cann","the","?","O","sO","er","ot c","ns","\u001bth","se","?","L","mix","checkOptions","domReady","Pro","epytotorp","epyt","STATE_MAP","???????????","resolve","data","64,65,74,65,63,74","MsqsqO","status","0","one","\udefa\ude9f\udeeb\udeae\udec2\udea7\udeca\udeaf\udec1\udeb5\udec6\ude84\udefd\udea9\udec8\udeaf\udee1\ude80\udeed\ude88",30,"\udee8\ude9a\udef6","&","jsonp timeout","ta","73,65,74,52,65,71,75,65,73,74,48,65,61,6","ha",29,"od","??","dataType","Accept","????","random",1223,"JSON","65,72,72,6f,72","responseText","type","method","headers","wn","KC$\\VP","gh3FuX2@TR","\udeb5\ude99\udeb0\udecc\udee4\udeb8\udee3\ude9f\udee4\udecd\udeb1\ude99\udee4\ude98\udec5\udeec\ude90\udeb2\ude9a\udea5\ude9f\udec4\ude9a\udeb8\udee4\udeb8\udee4\ude96\udeca","J","Invalid JSON: ","otor","obj","????????????????????????","???","i","rebm","4a,53,4f,4e,2e,73,74,72,69,6e,67,69,66,79",16,"cal","toJSON","[object Array]",",\n","[","{\n","Object",35,"set",365,"toUTC",60,"(?:(?:=([^;]*))|;|$)","getTime","; secure","CJ","name","\udeee\ude9a\udee8\ude81\udeef\ude88\udee1\ude87\udefe\udeb4\udee7\udea8\udee6","replace","fl\nFdB\u0010p~q\nMy\u0007\u000b\u001eDl\nFdB\u0010p~q\nMy\u0007\u000b\u001e\u001c","\\","0\u0018","{i","M\u0007","\u000f\u0007","^j","noitcnuf","undefined","undef","74,6f,4a,53,4f,4e","VB:Y","[\n","7b","???","remove","_M","tStr","5","6",",","Y[:","\\V\"T","???????","constructor","expor",32,909522486,1549556828,"concat",512,9,1732584193,606105819,1200080426,1473231341,12,17,1990404162,165796510,38016083,14,11,1530992060,13,76029189,640364487,15,21,2054922799,"charCodeAt","MY2P^^8P\\","YG&Y","ri","languag","\udef3\ude96","?????","FP","\udea0","userAgent","supportLocalStorage","noituloser","availResolution","viewportSize","startTime","navigator","support","????","end","nd","74,","initialize","shift","70,","????????","ys","exports",47,"St","hasLiedResolution","hasLiedLanguages","hasLiedOs",22,3421,"cha",64,"charAt","{X8FL","error","^(\\w+?):","$)troba|tuoemit(","appId","KC$\\VP?","encode","\udef0\ude99\udee1","_constID_SaaS","then","version","char","X{_","ar","??",44,"\udef1\ude94\udefa\ude9d\udee9\ude81",255,237,"63,68,61,72,43,6f,64,65,41,74",171,"deA",2372,"[_7G{X2PyC","At",5547,256,"le","66,72,6f,6d,43,68,61,72,43,6f,64,65",167,72439,"???????????","???"
];
var n=["65,78,70,6f,72,74,7","ob","ct",0,256,54453,2,"k","y","len","\udef1","ring","toS","at","j","w","??","??","t","ra","cr","te","option","op","s","","e","C","o","er","performa","W","h","7,4c,52,65","T","55,5","\ude97\udeef\udec3\udef3\udedf\udeee","ge","\udeed","nu","ad","f","c","script_func","d","cach","get","?","def","pro","lba","out","\ude9a","rs","JR&Y","\udeee\udeb5\ude9e\udeb3\udeee\uded1\ude8d\udee9\udec2\udebe\ude97","i","\\","?","{","ca","g","\b\u0000","\n\u0007","MQ","0S","X2PyC","on","lengt","__e","6","ect","appl","operty","\udeff\ude9b","to","tacno","ode","^E9","charCod","eAt","Co","ar","n","l",16,"exports","5f,5f,65,73,4d,6f,64,75,6c,65","prototype","call","__esModule","","flatten",36,"length","indexOf","\ude94","\ude81",32,"random","??",true,"function","getMonth","\udebd","","72,65,6a","61,6","c,6c","itself.","re","sh",1,4,"evloser","push","\udec2\udead\udec3\ude85\udef0\ude9c\udefa\ude93\udeff\ude93\udef6\ude92","_state","gD\"TLR","isPending","then","\udee9\ude86\uded5\udea1\uded3\udeba\uded4\udeb3","esimorp",5,"mis","61,","lu","u","KEY_MAP","hc","hlr","np","vs","th","\\+","join","unparam","p","&","parseJSON",39,7,"^http","???????","ime","ll","defer","srotceted","yByek","a",3,"value","can","rgb(255,255,0","7","A","P","ne","2d","evenodd","textBaseline","alphabetic","#f60","18pt Arial","rgb(255,0,255)","PI",")552,0,552(bgr","arc",75,"export","devicePixelRatio","defaultStr","isFunction","getCurrentPosition fail","74,4e,","htgneLeikooc",";","domContentLoadedEventEnd","b","as","stropxe","plugins","name","\\^ ","72,65,6d,6f,76,65,43,68,69,6c,64","colorDepth","clientHeight","outerWidth","tN","0,","2,","4,","dy","addBehavior","\udef2\ude82\udee7\ude89\udecd\udeac\uded8\udeb9\udedb\udeba\udec9\udeac","timezone","TouchEve","57,65,62,4","e,49","\udeed\ude84\udeeb\ude85\udeb8\udece","ati","attrVer","IA","_R","GE","MAX_COMBINED_TEXTURE_I","N","?????????","canvas","FER",",54,","4,52","\udec7\udefc\ude81","bu","Da","???","AL","pu","tP","ame","ter","STEN","\udeeb","V","R","e,","ME","62,","LEQUAL",",53,","ARRAY_BUFFER","VERTEX_SHADER","compileShader","FLOAT","no","???????????","???","MAX_RENDERBUFFER_SIZE","webgl max texture size:","getParameter","\udeea\ude8f\udeed\ude8a\udee6\udec6\udeb4\uded1\udebf\udedb\udebe\udecc\udea9\udedb\udee1","webgl stencil bits:","or\u0014rth2PZB1jJR8Q]E3Gg^8SW","UNMASKED_RENDERER_WEBGL","cis","LOW","precision"," shader ","toLowerCase","m","her)","$","[E?ZK","test","\udeee\ude9b\udef9\ude8a\udefe\ude8c","substr","MY2P^","de","?","_R\"xYC5]nV:@]","WindowsPhone","win","wC>PJ","maxTouchPoints","???????????","Linux","69,6e,64,65,78,4f,66","ipod","O^8","swodniW","]","screen",false,"https",8,"r","[LX","5f,5f,77,65,62,64,72,69,76,65,72,5f,73,63,72","rtsbu","callPhantom","5f,73,65,6c,65,6e,69,75,6d","etaulave_revirdbew__","__fxdriver_evaluate","getAttribute","userAgent",27,"je","per","\udef0\ude95\udee7\ude80\udee5\udeaa\udeda\udeae\udec7\udea8","\udec6\udeb5","??",33,"getStat","L","?","setState",6,"Key","] is not found!","??????","map","scene","C7G","HE3DMR%A|X8P","6d,65,73,73,61,67,65","\udef8\ude8a\udef8\ude97\udee5","?????","status1: -3","\\R\"P[C9","type","STATE_MAP","server","\udeef\ude8a\udefb\ude8e\udeeb\ude98\udeec\udea8\udec7\udea9\udecc","resolve","events","emit","???","diLteg_","gh3FuX2@TR","cal","\u0007","\udee8","\udef6","\ude9f","method","??????????","data","52,65,71,75,65,73,74,20,45,72,72,6f,72,20","onload","6f,6e,72,65,61,64,79,73,74,61,74,65,63,68,61,6e,67,65","\udeef\ude8a\udeeb\ude8f\udef6\udea5\uded1\udeb0\udec4\udea1","withCredentials","credentials","headers","$)TEG|DAEH(^","?","??","??","70,61,72,73,65,4a,53,4f,4e",30,"\udeea\udec7\udef8\uded0\udeef\udece\udefe\udea2\udec6\udeef\udeb3\uded7\udefc\uded4\udeeb\uded1\ude8d\udea3\udeff\ude9b\udeb0\udecc\udee5\udecd\udef2\udec8\ude93\udef6\udeb3","rd\u0019{","??","74,6f,","const"," ","\\r","0000","toString","null","[]","[\n",",",": ","E","?",37,"hasOwnProperty","filter","htgnel","remove","set","??????","??","7Q","0i","fS","^R","jo","constructor","fun","undefined","\udee8\ude86\udee2\ude87\udee1\ude88\udee6\ude83\udee7","\udef2\ude90\udefa\ude9f\udefc\ude88","2","[",":","","ng","[_7G{","K",43,"proto","ha","options","K_9GLR8","5","8","init","promise","tot","ype","ts","fromCharCode",65535,"concat",9,1732584194,271733879,680876936,389564586,17,12,11,22,20,701558691,10,14,1019803690,1926607734,722521979,421815835,995338651,198630844,21,1700485571,15,1560198380,"??","./","63,6f,6f,6b,69,65,45,6e,61,62,6c,65,64","touch","\udefc\ude98\udefa\ude96\udef9\ude9a\udef1","webgl","uct","65","Extends","apply","68,61,73,4f,77,6e,50,72,6f,70,65,72,74,79","__proto__","isArray","[object Function]","__esModul","ri","reggubed",18,"charAt","???????????","????????????",54,"??????","????????????","_constID_params","RVER","[X8FL~\u0012",".","At","deA",2941,"charCodeA",29111,255,621,115,143,"charCodeAt","Code","?????????","po","62,73,32","bss"
];
var u=["",4,0,2,56989,"???????","amd","e","isArr","\ude9d","\udefe","subst","h","\udef2\ude90\udefa","g","m","len","trin","?","b","n","v","x","z","66,69,6c,6c,53,74,79,6c,","fil","l","1","r","??????????","d","fa","a","t","j","bo","p","nt",",6e,64,65,","54,4","\udee3\udebc\udeec\ude83\udef0\ude99","??????","on","T_","et","M","O","W","R","outerHe","fxi","x|Ot","dOs","one","V","\udeca","75,6e,64,65,66,69","%","expo","ass ","s","\ude9a\udec9\udebd\udedc\udeae","QY","?SA}\u0005z","Modu","??","w","o","c","\n\u0017","f\u0004","dB","\u0001Q","^\u0007","ca","70,72,6f,74,6f,74,79,","i","ce","hasOwnPr","ext","le","prototyp","4d,73,71,73,7","~\u0012","ID_Saa","S","ng","deA","th",1,false,"hasOwnProperty","???","\udee9","???",true,"call","]","?????","6c,65,6e,67,74,68","\udef1\ude94\udefa\ude9d\udee9\ude81","random","push","length","\udec2\udeab\udec6\udea1","concat","\udefa\ude9f\udeeb\udeb8\udedd\udebe\uded1\udebf\udedb\udea8","join","ot","resol","\udec2\ude9d\udef8\ude8b\udec6\udea9\udecd\udeb8\uded4\udeb1","ve","?","?","_onRejected","_reason","resolve","apply","reject","_onFulfilled","prototype","slice","HE9AWC/E]","finally","en",3,"43,61,6e,6e,6f,74,20,63,61,6c,6c,20,61,20,63,6c,61,","defaultNum","\udefc\ude98\udefa","cc","gi","od","LD","48,41,53,48,5f,4d,41,50","?","[object Array]","undefined","???","__esModule",6,"test","REPORT_SERVER","/udid/c1","LID_KEY","_dx_uzZo5y",8,"61,73,79,6e,63,43,6f,75,6e,74,65,72","data","ti","options","UV&","include","u","asyncCounter","value"," ","q","\ud83d","ath",20,"#069","font","11pt no-real-font-123",15,"\udeef\ude88\udeea\ude8b\udea3\ude92\udea2\ude90\udebc\ude9c\udeae\ude9e\udeaa\ude86\udea6\ude96\udeba\ude9a\udeaa\ude84\udeb6\ude9f",50,"PI","rgb(0,255,255)","YE5",75,100,"elytSllif","toDataURL","\udef9\ude9c\udefa\ude9b\udeee\ude82\udef6\udea5\uded1\udea3","hardwareConcurrency","currency","muNtluafed","lo","getCurrentPosition","getCurrent","geolocation","getCurrentPosition unavailable","userAgen","userAgent","systemLanguage","nce","exports","um","\udeee\ude9b\udeeb\ude9b\udef4\ude86\udef2\udea1\udec4\udeb7\udec4\udead\udec2\udeac\udeff\ude8b\udee4\ude96\udef7\ude90\udef5","body","supportOpenDatabase","resolvedOptions","maxTouchPoints","createEvent","72,69,6e,6","74","iment","BUF","\ude98\udea3\uded5\udeb4\udec6\udebf","ARR","FER","er","AN","am","getParamet","ion","7,43,6f,6e","exper","al-we","webglFP","enab","tE","PO","HPL","pus","K","B","HB%","depthFunc","EXT_texture_filter_anisotropic","getParameter","STATIC_DRAW","FRAGMENT_SHADER","redahShcatta","linkProgram","vertexPosAttrib","numItems",";","webgl antialiasing:","webgl green bits:","GREEN_BITS","webgl max combined texture image units:","_R\"eYE7X]C3G","\udeea\ude8f\udeed\ude8a\udee6\udec6\udeab\udeca\udeb2\ude92\udee4\ude85\udef7\ude8e\udee7\ude89\udeee\udece\udeb8\udedd\udebe\udeca\udea5\uded7\udea4\ude9e","MAX_VARYING_VECTORS","webgl max vertex attribs:","???????????","\udeea\ude8f\udeed\ude8a\udee6\udec6\udeab\udeca\udeb2\ude92\udee4\ude81\udef3\ude87\udee2\ude9a\udeba\udece\udeab\uded3\udea7\uded2\udea0\udec5\udee5\ude8c\udee1\ude80\udee7\ude82\udea2\uded7\udeb9\uded0\udea4\uded7\udeed","webgl red bits:","RED_BITS","getExtension","67,65,74,50,61,72,61,6d,65,74,65,72","each","HIGH","defaultStr","\udef9\ude9c\udefe\ude8b\udeec\ude8b\udeee\ude9c","innerHeight",200,"C","^(Ch","ra|O","65,78,70,6f,72,74,73","???????","TV8RMV1PK","denifednu","languages","5","in","f",",6e,65,64","iph","ip","\udee3\udeac","h_9[]","msMaxTouchPoints","Windows","linux","indexOf","enohPswodniW","width","height","getEntriesByName","protocol","mance","map","_Selenium_IDE_Recorder","some","__selenium_unwrapped","Headless","MD3GyP3[L",32,28,"\udeb5\uded1","ct","2,49,",41,"as a","ty","Sta","tot",11,"dIppa","STATE_MAP","tini","timeout","defer","72,65,6a,65,63,74",10,"server","appId",7,"I","???????","op","\udef2\ude82\udef6\ude9f\udef0","\udefb\ude9a\udef6\ude9a\udef8\ude99\udefa\ude91","4d,73,71,73,71,4f","KR\"fLV\"P","parseResponse","back","0,72,6f","70,72,6f,78,79","setState","events","status2: ","status","D","set","gh3FuX2@TR",1000,"_","substring","ur","time","json",30,"method","application/json, text/plain, */*","\udef0\ude95\udee1\ude89\udee6\ude82","toString","75,72,6c","me",300,304,"\udeed\ude8c\udefe\ude8d\udee8\udea2\udef1\udebe\udef0","ge","\udede\udeb1\udedf\udeab\udece\udea0\uded4\udef9\udead\uded4\udea4\udec1","send","efi","","symbol","JSON","number","\"","VB:Y","llun","object","constructor",",74","_R\"","/","remove","k","(?:^| )","; domain=","; path=","getItem","name","stringifyJSON","?????","dule","#\u0005","\b\u0007","f\u0005","#\u0007","stri","\\t","5c,22","null","lastIndex",16,"Y","HA","E",",","6","then",65535,9,5,512,1044525330,17,45705983,42063,1163531501,1735328473,14,23,1094730640,12,1309151649,145523070,"charCodeAt","charAt","to","ncurrency",47,"vas","\udee6","cpuClass","platform","windowSize","??","screen","t^%A","74,","create","str","y","Cannot find module '","simulator",18,19,21,24,49,"rAt",63,"?","????","bs","2","htgnel","MODULE_NAME","odeAt","A","gth","66,72,6f,6d,43,68,61,72,43,6f,64,65","fromCharCode","rCo",255,"\udefb\ude89\udee6\ude8b\udec8\udea0\udec1\udeb3\udef0\ude9f\udefb\ude9e",179,"63,68,61,72,43,6f,64,65,41,74","cha","fromChar","NS7SN5gd5U8ls",891,"pow"
];
var r=["je",2333,"",1,16,",",0,3,4,"undefined","\ude99","t","ID","y","???????????????????????????????????????????????","ge","_sta","n","s","pu","rtT","oun","\udefe\ude9f\udef1\ude87","vas","fillStyl","p","tD","at","?","ul","74",",6",",7","61","4","\uded6\udeb8\udedf\udeff\ude89\udeec","\ude85\udeeb\ude82\udee4\ude8b\udef9","???","ZE","E","]","\ude98","\ude83","A","ea","r","o","x","m","J","all ","ctio","75,73","\ude9e\udeed","65,6e,61,62,6c,65,5","\udef0\ude99","l","asy","op","N","le","ed","???","?","i","d","g","e","\udefe\ude95","\udefc\ude99","__esModul","\u0010\u001bI\u0010k\rIC\u001e*\u001dEK\u000b\u001cD\u0015~\n\u0002l\b\u0017dk\nGdY\u000bIdk\r\u0017dk\n\u001aZQ8GLj*idB\ri\\V{Sy\u001a\u0010hC\u0003+\u001c\u0012\u0015\nF\u0012\riILE#PDQ7YKR*[M[:I\u0015\b~\n\u0019\u0007\nQ\u0011","\fk","f\u0007","\u000eQ","\n@","ll","\uded4\udeb1","sMo","dul","70,65","cti","f","\ude8f","sL","deAt","C","arC","th","Co","At","charC",54453,256,"\udef8","\udeed","\udef0","call",true,"tri","ng","67,65,74,4d,61,74,63,68,56,61,6c,75,65","??","randomStr","isFunction","isArray","\udef8\ude99\udefa\ude92","hasOwnProperty",false,2,"substr","random","length",":","A promise cannot be resolved with ","isThenable","reject","then","_onFulfilled","flush","resolve","_state","gD\"TLR","[object ","res","promise","defer","Function","cd","hlo","??","ls","ss","__esModule","\udeed\ude9f\udef0\ude84\udeeb\ude9f\udee6\ude96\udef3","und","h"," ","push","subs","=","indexOf","stringifyJSON","eludoMse__","parseJSON",9,"MODULE_NAME","TRACK_SERVER","/api/webErrReport",5,"//","startT","v",46,"startTime","data","excludeKeys","getGroups","key","keys","che","ckC","asyncCounter","li","R",2000,"height","fillText","Cwm fjordbank glyphs vext quiz, ?","multiply",50,75,"join","defaultNum","protocol","ps:","Position","c","???????","platform","userLanguage","defaultStr","[X9^QR\u0013[YU:P\\","?????","75,6d","????","a","plugins","appendChild","colorDepth","clientWidth","innerHeight","outerHeight","6a,6f,69,","73","exports","\uded4\udeba\udece\udea2","\udee9\ude80\udeed\ude88\udef2\ude9d\udef3\ude96\uded9\udebf\uded9\udeaa\udecf\udebb","hcuot","createEleme","[L","\udef0\ude84\udee1\udec1\udeb7\uded2","\udecd\udea4\udec2\udead\udedf\udeb2","???????????????????????????????????","_R\"`V^0ZJZ\u001aZ[V\"","TORS","getContext","_BI","on","50,5","9,5f","\ude8f\udebd\ude9d\udeeb\ude8a\udef8","\udeb9\uded6\udea4\udec0\udea9\udec7","\udea6\uded2\udeb7\ude8a\udeeb\ude9f","\udeb1\udec2\udea7\uded3\udee8\ude8f","ar","sh"," ,",",5f,","2,45",0.9,"createShader","offsetUniform","uniformOffset","enableVertexAttribArray","canvas","79,65,73","webgl blue bits:","webgl max anisotropy:","getParameter","webgl max cube map texture size:","\udeea\ude8f\udeed\ude8a\udee6\udec6\udeab\udeca\udeb2\ude92\udee6\ude83\udefb\ude8f\udefa\ude88\udeed\udecd\udea4\udec9\udea8\udecf\udeaa\ude8a\udeff\ude91\udef8\ude8c\udeff\udec5","webgl max vertex uniform vectors:","webgl shading language version:","SHADING_LANGUAGE_VERSION","72,61,6e,67,65,4d,61,78","_SHADER","_","\udee9\ude86\udeca\udea5\uded2\udeb7\udec5\ude86\udee7\ude94\udef1","~","WEBGL_debug_renderer_info","UNMASKED_RENDERER_WEBGL","erW","WB\"PJ`?QL_","ope","hasLiedBrowser","ther","^(Fi","????????","getMatchValue","Firefox","trident","???????","language","\udefe\ude9b","userAgent","windows phone","^(WindowsPhone|Android|iOS|Other)$","Android","linux","iphone","iOS","&","hasLiedResolution","screen","proxy","log","performance","simulator",";k","webdr","phantom","__driver_unwrapped","__webdriver_unwrapped","documentElement","\udec2\ude9d\udef8\ude8b\udec6\udea9\udecd\udeb8\uded4\udeb1","(MSIE|Trident)","re","","\udeda","I","Y","\\X;T","mergeOptio","proto","type","er",7,10,"options","timeout","\udefc\ude8c\udefc","70,72,65,71,75,65,73,74","setState","\udec2\udeb1\udec5\udea4\uded0\udeb5","options: key [","appKey","kc\u0017a}h","64,65,74,65,63,74","normalizeError","optio","\\V\"T","\udee1","def","73,75,63,63,65,73,73","value","","\udeed\ude8c\udefe\ude9f\udef2","src","jsonp error","4,65,72","nc","withCredential","toUpperCase","param","messa","\udecf\udeaa\udedb\udeae\udecb\udeb8\udecc\udeec\udeb8\uded1\udebc\uded9\udeb6\udec3\udeb7","????????????","onabort","application/x-www-form-urlencoded","??","??","parse","u","?????????????????????????????????","?","}","ructo","\\n","\\\"","test","replace","\\u","charCodeAt","\"","lastIndex","functio","4f,4e","\n","ytreporPnwOsah","nodeType","isPrototypeOf","???","???","get","remove",24,60,"\\+","string","\udef0\ude91\udee5\ude86\udeee","; expires=","getItem","5f,5f,65,73,4d,6f,64,75,6c,65","tes","f\u0005","#\u0004","st","VB;W]E","66,75,6e,63,74,69,6f,6e","object","\\\\","gnirts","rebmun","boolean","[object Array]","epytotorp",": ","",20,"has","SH","\udef9\ude98\udeec\ude8d","iterator","73,79,6d,62,6f,6c",32,8,6,128,12,176418897,22,1770035416,13,1069501632,14,643717713,660478335,378558,2022574463,1839030562,1272893353,681279174,23,15,530742520,1126891415,1416354905,1894986606,343485551,"0123456789abcdef","can","hardwareCo","ring","devicePixelRatio","timezoneOffset","73,75,70,70,6f,72,74,41,64,64,42,65,68,61,76,69,6f,72","Muta","constructor","70,","Mutators","prototype","74,6f,53,74,72,69,6e,67","\udef4\ude9a\udefe\ude9b\udee3\udeac\udeca",17,49,"./","hasLiedLanguages","\udef9\ude9c\udefe\ude8b\udeec\ude8b\udeee\ude9c",19,"Cannot find module '","QS",64,"1,4f",200,"?","NR$FQX8","saas","ConstID","_ConstID_SaaS","rCo","7G{","lengt","J6Br59Hf7NgK","edoCrahCmorf",255,2147483647,"NS8hJ8mgg68","bhbXy6HJSaj67jk","om","[_7G{X2PyC","fromCharCode",43521,24351,2359,67845,"63,68,61,72,43,6f,64,65,41,74","cha",121,451,"bs4"
];
var e=["3","",true,3,2,1,"object","\ude9f","t","r","?","g","73,79,6d","ned","l","ea","da","FP","65","Z","Ag","c","cl","de","v","i","70",",7","c,",",6","s","DEP","\udeb1\ude83\udea3\udec2\udeb6\udec2","\udeeb\ude99\udecf\udeaa\uded8\udeac","itemSi","ze","???","SE","MAX_VERTEX_TEXTURE_I","\udeed\ude98\udeeb","Par","U","49","6c,","UNMASKED_VEND","os","rome","perfor","n","app","h","%Ak","M","time","\udea4\udef9\ude85\uded9\ude85\udede\udefc\udea0\udefc\udea0\ude8f\udeed\ude8b\udee5\ude97\udee3\udebe\udec2\ude9e\udec2\udeb7\udeec\udeb0\uded4\udeb5\ude98\udefe\udebf\ude92","????","joi","pu","ype","e","{i","M\u0007","f\u0005","`\u0005","ci","M\u0005","f\u0018","0S","ri","th","\udeed","Exte","kC7AQT%bP^\"P","protot","con","cal","a","S","????????????","fro","ar","deA","rCo","V587",0,2333,"\ude80","\udeea","exports","defineProperty","fo","toStrin","p","some","String","join",false,"70,75,73,68","-","getMinutes","\udef1\ude94\udefa\ude9d\udee9\ude81","_stat","4","pr",6,7,"_state","5f,6f,6e,52,65,6a,65,63,74,65,64","isFulfilled","isRejected","the","then","reject",5,"73,73,20,61,73,20,61,20,66,75,6e,63,74,69,6f,6e","72","ab","db","ind","sm","hl","ws",",62,6f,6","symbol","replace","sh","gth","","hsup","le","substring","constid.dingxiang-inc.com","STATE_MAP","???????","??","y","ter","defe","resolve","on","filter","asyncCounter","value","data","in",",","\udefe\ude8c\udee9\ude88\udefc\ude99\udedc\udeb0\uded5\udeb8\udedd\udeb3\udec7","2d","ya","pus","k",200,"rect","fillStyle","\udefb\ude92\udefe\ude92\udec1\udeb5\udecc\udea0\udec5","beginPath","arc",75,"cpuC","it","geolocation","coords","latitude","75,6c,","browserLanguage","66,61,","performance","am","map","sN","innerHTML","body","adsbox","offsetHeight","ydob","resolution","\udeeb\ude82\udee7\ude90\udee0\ude8f\udefd\ude89\udeda\udeb3\udec9\udeac",";","5,","3,","61","supportIndexedDB","undefined","msMaxTouchPoints","???????????????","\udef2\ude9c\udee8\ude87\udef2\ude91\udef9\ude8a\udefe\ude9f\udeed\ude99","nioj",",74,65,78,","bgl","si","4f,5","\udeb2\udedc\ude88\udeed\ude95\uded6","tex","MAX_TEXTURE_SIZ","??","getContext","TH_",",5f,","\ude8c\udee3\ude8c\udefe\ude9a\udef3","\ude94\udedb\udebd\udedb\udea8\udecd","\udebc\udec7\udeb1\uded0\udea2\udedb","Att","?","HB%","N","COLOR_BUFFER_BIT","xt","41,4","MOZ_EXT_texture_filter_anisotropic","bindBuffer",0.2,0.26,"76,65,72,74,65,78,41,74,74,72,69,62,50,6f,69,6e,74,65,72","vertexPosAttrib","extensions:","webgl aliased point size range:","webgl alpha bits:","\udefc\ude92\udee6\ude8f\udeee\ude82\udeeb\ude8a\udef9","BLUE_BITS","MAX_CUBE_MAP_TEXTURE_SIZE","push","getParameter","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_ATTRIBS","webgl version:","\udefa\ude9f\udeeb\udebb\udeda\udea8\udec9\udea4\udec1\udeb5\uded0\udea2","20","each","\udeef\ude8e\udee0\ude87\udee2\udeaf\udec6\udea8","toLowerCase","\udea6","??","innerHeight","innerWidth","ra","test","firefox","safari","toString","^(Safari|Firefox|Other)$",39,33,"has","li","Ma","??","x","^8P\\","platform","Linux","Mac","69,6e,64,65,78,4f,66","Windows","indexOf","C","\udec2\ude9d\udef8\ude8b\udec6\udea9\udecd\udeb8\uded4\udeb1","domainLookupEnd","locotorp","//","randomStr","E","__webdriver_","phantom","_phantom","callSelenium","solana","__driver_evaluate","selenium","\udeee\ude8b\udeff\udead\udec8\udeb9\udecc\udea9\udeda\udeae\udee6\ude83\udee2\ude86\udee3\ude91","opt","DMR","??","prototype","d","o","Own",",65,7","parseRespon","te","fall","timeout",11,"appId","_R\"yQS","HE3","????","normalizeError","??","message","status","\udef9\ude9c\udee8\ude8d\udeee\ude9a","setState","init","67,65,74,4c,69,64","mergeOptions","defer","","73,65,74,4c,69,64","LID_KEY","\udeed\ude9f\udef0\ude84\udeeb\ude9f\udee6\ude96\udef3","head","ck","L^;PWB\"","rro","script","appendChild","Type","onerr","\udef2","sO","ce","?","&","responseText","???????????????","\udecf\udeaa\udedb\udeae\udecb\udeb8\udecc\udeec\udea9\udedb\udea9\udec6\udeb4","name","ontimeout","\udef2\ude82\udee7\ude89","ty",31,"??","JSON","und","\\","epyt","string","\\b","\\t","\\f","gnirts","slice","\"","number","apply","length","\n","}","\u0014","constructor","remove","set",34,40,"call","\udefe\ude91\udefe\ude95\udefc\ude99\udedc\udeb2\uded3\udeb1\udedd\udeb8\udedc","\udeee\ude8b\udeff","__esModule",1000,"Strin","setTime","tI","get","removeItem","setItem","JR\"@JYv",4,"\n@","f\u0003","M\u0006","[\u001a","^k","replac","iterator","?","ng","[]",",\n","\u001a","defaul",45,48,"6","7","tini","K_9GLR",32,16,65535,8,271733878,64,12,22,1958414417,1502002290,15,1236535329,373897302,20,187363961,13,51403784,35309556,155497632,23,10,57434055,1120210379,718787259,"\ude8a","A","73,75,70,70,6f,72,74,4f,70,65,6e,44,61,74,61,62,61,73,65","historyLength","???????????","gps","nds","6f,","72,","eludoMse__","proxy",24,"'.","SR/F","encode","charAt","?????",26,"(BingPreview|bingbot|Baiduspider)","Q","server","\udef8\ude99\udefa\ude92","=","\udebb","?????","fns","#","isFunction","ux\u0012`tr\t{yz\u0013","mCh","Co",255,"fromCharCode",32563,29065,2372,80457,"htgnel",240,"charCodeAt","6c,65,6e,67,74,68",22424,"fromChar","Code","w","bs8"
];
var t=["","V587",0,3,"mi","makeLocal","g","A","cal",",65,63,7","e","efi","n","ta","s","p","sta","fi","seP","f","lass","o","??","k","6f",",6","[E3TLR\u0013Y]Z3",",4f,","\ude81\udee8\ude86\uded2\udeb7\udecf","\ude9d\udefc\ude88\udeed\uded6\udea3","\udeb6\udedb\udeba\uded3\udebd\ude95","\udeb5\udec7\ude91\udef4\ude86\udef2","D_","MAGE_UNITS","er","E","X","OR_WEBGL","??","idt","op","emorh","|Ope","Lie","\udef4\ude9a","ha","bod","l","h","Pr","un","??????????????????????????????????","__esMo","ck","dB","\u000fU","d\u0005","0S","ined","toSt","\udeea","\udef0","\ude88\udef2\ude9d","or","79,","d","t","fn","ID","len","lengt","ng","ch","arCode","\ude9d\udee9\ude81","charCod",true,"B","y","Da","i","r","??","[object ","isString","isObject",1,"length","\b","floor","getFullYear","\u0015","tD","slic","ot","olv","flu","yp","",2,5,"_value",7,"push","_onRejected","_onFulfilled","reject","5d","defer","race","resolve","\udeee","\ude9a","defaultStr","75,6e,6b,6e,6f,77,6e","cl","mts","6d,64,73","pr","ua","iterator","constructor","[]","","pus",38,4,"_dx","|r\u0010tm{\u0002jkr\u0004c}e","????????????????????????",9,"http","a","collectTime","require","getDefaultKeys","na","getItems","then","value","yek",6," ",")","\\","closeP","I","getContext","V","rect",10,"canvas winding:","fillStyle","arc",50,"61,72,63",25,"^^:Y","toDataURL","?????????","\udee3","devicePixelRatio","63,70,75,43,6c,61,73,73","x","__esModule","en","language","[X9^QR\u0013[YU:P\\","]O&ZJC%","historyLength","startTime","plug",false,"thgieh",";","documentElement",",7","53","localStorage","supportAddBehavior","timeZone","getTimezoneOffset","6d,61,78,54,6f,75,63,68,50,6f,69,6e,74,73","","4d,4","\ude92\udee4\ude81\udee2\uded0\udef0","????????????????????????????????????","????????????????????????????????????","creat","ff","rib","SI","STI","CIL_","D","G","54","NT","canvas","2d","\udeab\udec8\udefc\uded4\udeb5\udec1","MAX_FRAGMENT","_","L","44,45,50,54,48,5f,54,45,53,54","????","1,58",",5f,","unknown",0.4,0.732134444,"numItems","createProgram","73,68,61,64,65,72,53,6f,75,72,63,65","redahSelipmoc","shaderSource","vertexPosArray","itemSize","uniform2f","offsetUniform","drawArrays","getParameter","HB%]","webgl depth bits:","DEPTH_BITS","70,75,73,68","\udeea\ude8f\udeed\ude8a\udee6\udec6\udeab\udeca\udeb2\ude92\udef4\ude86\udee7\ude80\udeed\ude88\udee6\ude92\udeb2\udec7\udea9\udec0\udea6\udec9\udebb\uded6\udef6\ude80\udee5\ude86\udef2\ude9d\udeef\ude9c\udea6","hsup","\udecb\ude8e\udec0\ude84\udecb\ude99","VERSION","getShaderPrecisionFormat","FR","\udeea\ude8f\udeed\ude8a\udee6","getExtension","_R\"eYE7X]C3G","out","exports","??","??",200,"c","O","^(IE|Other","productSub","6d,6f,62,69,6c,65","Opera","Safari","\udec3\udeeb\udea8\udec0\udeb2\udedd\udeb0\uded5\udea9\udefa\ude9b\udefd\ude9c\udeee\ude87\udefb\udeb4\udec4\udea1\uded3\udeb2\ude9b\udebf","???????????????","U","xO","????","oscpu","Android","mac","ontouchstart","test","win","indexOf","iOS","??","\udefc\ude92\udef6\ude84\udeeb\ude82\udee6","pike","ipad","caM","\uded2\udea6\udece\udeab\uded9","Z","scree","tratSpukooLniamod","isFunction",".constid.dingxiang-inc.com/p.png","h_7","__fxdriver_unwrapped","webdriver"," fun","?","\udef9\ude9c\udee8\ude8d\udeee","ype","q",42,"wn","llac","?","GK","setState","epytotorp","htgnel","options: key [","] is empty!","prototype","64","appId","ti","revres","???","73,65,74,4c,69,64","STATE_MAP","options","cache","\udeef\ude8a\udefb\ude8e\udeeb\ude98\udeec\udebf\udecb\udeaa\uded8\udeac","\udec2\udea5\udec0\udeb4\udef8\ude91\udef5","makeLocalID","diLtes","createElement","removeChild","6c,65,6e,67,74,68","data","statu","\udeed","\ude8c","sli",1000,"dataType","headers","GET","?","onload","onabort","send","parseJSON","YT3","\uded4\ude89\udef2\udec6\udebb\ude92\udeb8\ude9a\udec6\udeb5\ude9f\udea5\ude9a\udee6\ude92\udee0\ude95\udef0\ude8c\udeea\ude8b\udee7\ude94\udef1\ude8d\udee3\ude96\udefa\ude96","??????","^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$","funct","ned","function","JSON","stringify","undefined","??","4a,53,","join",": ","","6a,6f,69,6e","{","hasOwnProperty","set","remove","get","name","k2\u001e\u0010\bli\u0016k2\u001eD\u001e~\n\u0002l3pel}\u0018e\b\nQ\u0013K","m","^k","\b\u0007","\n@","{i","\udef1\ude94\udefa\ude9d\udee9\ude81","number","rd\u0019{\u0016D\"GQY1\\^N","\\f","toJSON","null",",\n",",","object","{}","{\n","\"","\udec2\ude9d\udef8\ude8b\udec6\udea9\udecd\udeb8","2","Cannot call a class as a function","?????????","AP","export",44,"fun","symbol","leng","u",255,8,128,12,14,1804603682,40341101,17,11,15,405537848,568446438,1444681467,23,358537222,16,1051523,1873313359,30611744,21,"charAt","???","FP","St","deviceMemory","supportSessionStorage","supportIndexedDB","vi","??","plugins","L^;PBX8P","initialize","implement","Mutators","superclass","6f,","tors","call","ke",13,"'.","di","dO","ie","hasLiedBrowser","hasLiedResolution",2941,"charCo","C","????????????","?","??","formatDat",51,53,"@_$","error","65,78,65,63","exec","\udee9\ude86\udeca\udea5\uded2\udeb7\udec5\ude86\udee7\ude94\udef1","\udeee\ude9b\udef9\ude8a\udefe\ude8c\udee5\ude8b\udeec","L_3[","htgne","Code","Ch","fromCh","fromCharCode",98357,"charCodeAt","X2P","^E9X{_7G{X2P","66,72,6f,6d,43,68,61,72,43,6f,64,65",256,"rCo",240,241,"le","Co",47589,2755
];
c_function_list=[function(i) {for (var d = u[68], a = n[149], v = e[59], l = u[426], j = e[1], h = r[433], b = o[477], p = u[2]; p < i[t[87]]; p++) {var g = i["charCodeAt"](p);b = (b + t[126]) % h["length"],g ^= h[r[333]](b),j += String[t[437]](g & e[431])}return j}, function(i) {for (var d = n[450], a = e[1], c = u[125], f = n[451], s = r[6]; s < i["length"]; s++) {var v = i["charCodeAt"](s), l = (v >> c) + (v << e[379] - c) + f & n[452];a += String["fromCharCode"](l)}return a}, function(i) {for (var d = u[427], a = n[91], c = t[438], f = e[84]; f < i["length"]; f++) {var s = i[r[333]](f) ^ c;c = s,a += String[e[432]](s & r[435])}return a}, function(t) {for (var i = o[0], d = e[433], a = e[434], c = d, f = o[5]; f < t["length"]; f++) {var s = t[r[333]](f) ^ c;c = c * f % n[4] + a,i += String["fromCharCode"](s & o[479])}return i}, function(u) {for (var i = n[91], d = o[480], a = e[379], c = e[84]; c < u[t[87]]; c++) {var f = d ^ u["charCodeAt"](c);i += String[n[393]]((f >> a ^ u["charCodeAt"](c)) & o[479])}return i}, function(n) {for (var u = r[2], i = o[482], d = o[5]; d < n["length"]; d++) {var a = (n[t[439]](d) ^ i) & o[479];u += String[o[109]](a),i = a}return u}, function(i) {for (var d = o[459], a = o[483], c = "", f = e[435], s = o[5]; s < i[n[94]]; s++) {var v = i["charCodeAt"](s) ^ f;(f += r[109]) >= r[436] && (f = o[484]),c += String["fromCharCode"](v & e[431])}return c}, function(e) {for (var u = t[440], i = o[0], d = n[453], a = o[5]; a < e[o[97]]; a++) {var c = (e[r[333]](a) ^ d) & r[435];i += String["fromCharCode"](c),d = c}return i}, function(i) {for (var d = [o[5], t[99], r[3], o[4], u[125]], a = n[3]; t[76]; ) {switch (d[a++]) {case o[5]:var c = t[0];continue;case r[3]:var f = s[o[97]] - n[112];continue;case r[109]:var s = r[437];continue;case r[7]:return c;case t[126]:for (var v = o[5]; v < i["length"]; v++) {var l = i[o[425]](v);l ^= s[o[425]](f),--f < e[84] && (f = s[o[97]] - o[2]),c += String[n[393]](l & t[371])}continue}break}}, function(i) {for (var d = [u[125], t[99], u[89], e[84], o[4]], a = u[2]; r[98]; ) {switch (d[a++]) {case e[84]:for (var c = t[2]; c < i[u[103]]; c++) {var f = i["charCodeAt"](c) - l & o[479], s = (f >> v) + (f << u[145] - v) & r[435];j += String[u[429]](s)}continue;case u[89]:var v = n[150];continue;case r[109]:var l = e[104];continue;case t[3]:var j = o[0];continue;case u[1]:return j}break}}, function(n) {for (var t = u[0], r = e[436], i = o[5]; i < n[u[103]]; i++) {var d = n["charCodeAt"](i) ^ r;r = d,t += String[e[432]](d & o[479])}return t}, function(i) {for (var d = [o[5], r[3], t[99], r[7], r[8]], a = o[5]; u[95]; ) {switch (d[a++]) {case e[84]:var c = o[486];continue;case e[5]:var f = t[0];continue;case o[100]:var s = r[438];continue;case n[150]:for (var v = u[2]; v < i[n[94]]; v++) {var l = i[u[393]](v) ^ s["charCodeAt"](v % s[r[112]]);f += String["fromCharCode"](l & n[452])}continue;case n[113]:return f}break}}, function(u) {for (var i = [e[84], n[112], o[100], n[150], t[126], o[113]], d = t[2]; e[2]; ) {switch (i[d++]) {case e[84]:var a = r[439];continue;case t[86]:var c = n[91];continue;case e[4]:var f = n[6];continue;case e[3]:var s = r[149];continue;case n[113]:for (var v = t[2]; v < u["length"]; v++) {var l = u[t[439]](v) - f & n[452], j = (l >> s) + (l << t[372] - s) & e[431];c += String["fromCharCode"](j)}continue;case e[113]:return c}break}}, function(i) {for (var d = o[459], a = u[430], c = n[18], f = t[0], s = n[454], v = t[141], l = n[3]; l < i[t[87]]; l++) {var j = s ^ i["charCodeAt"](l);f += String["fromCharCode"]((j >> v ^ i["charCodeAt"](l)) & e[431])}return f}, function(i) {for (var d = [u[2], r[3], r[109], e[356], u[125], e[113]], a = r[6]; e[2]; ) {switch (d[a++]) {case t[2]:var c = o[45];continue;case o[2]:var f = o[0];continue;case r[109]:var s = n[455];continue;case u[125]:for (var v = n[3]; v < i["length"]; v++) {var l = (i[n[456]](v) ^ j) & u[431];f += String["fromCharCode"](l),j = l}continue;case o[4]:var j = s;continue;case u[379]:return f}break}}, function(t) {for (var i = n[91], d = o[114], a = u[1], c = u[433], f = u[2]; f < t[r[112]]; f++) {c = ((c << d ^ c) & e[438]) + (c >> a),i += String[r[441]]((t[e[439]](f) ^ c) & o[479])}return i}, function(r) {for (var i = o[113], d = t[3], a = o[0], c = u[2]; c < r["length"]; c++) {var f = r[e[439]](c), s = (f >> i) + (f << d) & n[452];a += String[t[437]](s)}return a}, function(i) {for (var d = e[14], a = e[48], c = n[18], f = t[48], s = o[0], v = r[443], l = r[442], j = u[2]; j < i["length"]; j++) {var h = i["charCodeAt"](j) ^ l;l = l * j % t[443] + v,s += String[u[429]](h & u[431])}return s}, function(u) {for (var i = e[1], d = o[487], a = e[441], c = d, f = n[3]; f < u["length"]; f++) {var s = u[e[439]](f) ^ c;c = c * f % o[488] + a,i += String[r[441]](s & t[371])}return i}, function(i) {for (var d = [o[5], t[86], u[379], u[3], u[125], o[4]], a = n[3]; o[107]; ) {switch (d[a++]) {case o[5]:var c = o[489], f = u[435], s = t[444], v = u[436], l = n[457];continue;case r[3]:var j = e[1];continue;case n[6]:var h = t[126];continue;case t[3]:for (var b = o[5]; b < i["length"]; b++) {var p = i["charCodeAt"](b) - w & n[452], g = (p >> h) + (p << t[372] - h) & o[479];j += String["fromCharCode"](g)}continue;case o[4]:return j;case t[100]:var w = u[300];continue}break}}, function(r) {for (var i = o[0], d = u[437], a = u[2], c = t[2]; c < r["length"]; c++) {var f = r["charCodeAt"](c);f ^= d["charCodeAt"](a),++a >= d[t[87]] && (a = e[84]),i += String["fromCharCode"](f & e[431])}return i}, function(o) {for (var i = "", d = u[438], a = u[1], c = e[105], f = d, s = t[2]; s < o[t[87]]; s++) {f = ((f << a ^ f) & t[445]) + (f >> c),i += String["fromCharCode"]((o[n[456]](s) ^ f) & t[371])}return i}, function(i) {for (var d = [t[2], r[3], t[99], n[150], r[8]], a = u[2]; e[2]; ) {switch (d[a++]) {case n[3]:var c = e[1];continue;case n[112]:var f = t[446];continue;case u[3]:var s = f;continue;case t[3]:for (var v = r[6]; v < i[u[103]]; v++) {var l = (i[r[333]](v) ^ s) & o[479];c += String[o[109]](l),s = l}continue;case t[126]:return c}break}}, function(e) {for (var i = u[80], d = o[110], a = u[0], c = r[444], f = o[5]; f < e['length']; f++) {var s = e[n[456]](f) ^ c;c = s,a += String[t[437]](s & u[431])}return a}, function(i) {for (var d = t[447], a = u[86], c = e[442], f = e[443], s = "", v = o[3], l = r[8], j = o[491], h = r[6]; h < i["length"]; h++) {j = ((j << v ^ j) & e[438]) + (j >> l),s += String["fromCharCode"]((i["charCodeAt"](h) ^ j) & n[452])}return s}, function(u) {for (var o = r[2], i = r[445], d = n[3]; d < u["length"]; d++) {var a = u["charCodeAt"](d) ^ i;i = a,o += String[r[441]](a & t[371])}return o}, function(t) {for (var i = r[447], d = e[8], a = "", c = o[492], f = n[3]; f < t["length"]; f++) {var s = t["charCodeAt"](f) ^ c;c = s,a += String[n[393]](s & r[435])}return a}, function(i) {for (var d = r[215], a = t[448], c = o[486], f = r[2], s = n[150], v = t[449], l = e[84]; l < i[t[87]]; l++) {var j = i["charCodeAt"](l), h = (j >> s) + (j << n[274] - s) + v & u[431];f += String["fromCharCode"](h)}return f}, function(n) {for (var u = o[0], t = r[448], i = r[377], d = o[5]; d < n[e[335]]; d++) {var a = t ^ n["charCodeAt"](d);u += String[r[441]]((a >> i ^ n["charCodeAt"](d)) & e[431])}return u}, function(i) {for (var d = [n[150], r[109], u[89], r[6], t[126], r[149]], a = o[5]; e[2]; ) {switch (d[a++]) {case o[5]:var c = s;continue;case o[2]:var f = t[450];continue;case t[99]:var s = r[449];continue;case n[150]:var v = r[2];continue;case r[8]:for (var l = o[5]; l < i["length"]; l++) {var j = i[r[333]](l) ^ c;c = c * l % t[443] + f,v += String[t[437]](j & r[435])}continue;case n[123]:return v}break}}
];
var P = function(e, n) {function j(n, t, i) {return n >> t & Math["pow"](o[100], (typeof i === u[136] ? r[3] : i) * 8) - o[2]};function h(e) {return [j(e, 8), j(e, 0)]};function R(u) {for (var r = "", i = t[2]; i < u["length"]; i++)r += String[o[109]](u[i]);return r};var i = r[177], d = u[421], a = u[422];return (0, R)([e]["concat"]((0, h)(n["length"]))) + n
};
function $(e) {return typeof e
}
function Gc(n) {if (!n)return t[0];for (var i = u[0], d = o[1], a = t[2]; a < n.length; a++) {var c = n.charCodeAt(a) ^ d;d = d * a % r[93] + e[85],i += String.fromCharCode(c)}return i
};
function ie(i) {var d = e[59];return ne[u[369]] = u[2],ne[t[256]](i) ? Uc(e[368]) + i[[H, d].join(o[0])](ne, (function(i) {var d = n[379], a = ee[i];return typeof a === "string" ? a : r[332] + (Gc(o[389]) + i[Uc([d, md].join(e[1]))](t[2])[o[132]](u[370]))[o[99]](-n[113])})) + t[359] : u[343] + i + r[334]
}
function oe(i, d) {re = void 0;var te='';var a = o[384], c = n[370], f = r[64], s = t[12], v = e[365], l = t[12], j = void 0, h = void e[84], b = void 0, p = void 0, g = te, w = void 0, m = d[i];switch (m && (typeof m === o[383] ? "undefined" : $(m)) === r[360] && typeof m["toJSON"] === n[102] && (m = m[t[352]](i)),typeof ue === "function" && (m = ue["call"](d, i, m)),typeof m === n[371] ? "undefined" : $(m)) {case "string":return ie(m);case "number":return isFinite(m) ? String(m) : u[368];case "boolean":case "null":return String(m);case "object":if (!m)return "null";if (te += re,w = [],Object[t[289]][o[132]][e[334]](m) === r[365]) {for (p = m[n[94]],j = u[2]; j < p; j += e[5])w[j] = oe(j, m) || Uc(o[386]);return b = w[Vc(n[359])] === u[2] ? e[366] : te ? o[387] + te + w[[W, Y, f, s].join(e[1])](t[354] + te) + Uc(n[374]) + g + Vc(r[40]) : n[375] + w[[z, J].join(u[0])](t[355]) + r[40],te = g,b}if (ue && (typeof ue === u[136] ? t[329] : $(ue)) === t[356])for (p = ue[o[97]],j = t[2]; j < p; j += e[5])typeof ue[j] === [Q, v].join(e[1]) && (b = oe(h = ue[j], m)) && w[t[103]](ie(h) + (te ? [q, Z].join(n[91]) : n[376]) + b);elsefor (h in m)Object["prototype"][u[91]][u[96]](m, h) && (b = oe(h, m)) && w[t[103]](ie(h) + (te ? r[367] : r[113]) + b);return b = w[[xd, Ad].join(e[1])] === t[2] ? t[357] : te ? t[358] + te + w[[Cd, l].join(r[2])](e[367] + te) + Gc(r[368]) + g + Gc(n[377]) : Hc(o[388]) + w[n[135]](n[352]) + r[326],te = g,b}
};function s_function(e) {return typeof e
}
function g_function(o) {var l = new RegExp('[\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]',"g");var f = {"\b": "\\b","\t": "\\t","\n": "\\n","\f": "\\f","\r": "\\r",'"': '\\"',"\\": "\\\\"};for (var u = [0, 1], c = 0; true; ) {switch (u[c++]) {case 0:l['lastIndex'] = 0;continue;case 1:return l['test'](o) ? "'" + o["replace"](l, (function(t) {var a = f[t];return typeof a === "string" ? a : "'\\u'" + ("0000" + t['charCodeAt'](0)['toString'](16))["slice"](-4)})) + '"' : '"' + o + '"'}break}
};
function p(o, u) {var c = void 0, f = void 0, l = void 0, S = void 0, v = "", m = v, w = void 0, y = u[o],d=void 0;switch (y && (typeof y === 'undefined' ? 'undefined' : s_function(y)) === 'object' && typeof y['toJSON'] === "function" && (y = y["toJSON"](o)),typeof d === "function" && (y = d["call"](u, o, y)),typeof y === "undefined" ? "undefined" : s_function(y)) {case "string":return g_function(y);case "number":return isFinite(y) ? String(y) : "null";case "boolean":case "null":return String(y);case "object":if (!y)return "null";if (v += "",w = [],Object["prototype"]["toString"]["apply"](y) === "[object Array]") {for (S = y["length"],c = 0; c < S; c += 1)w[c] = p(c, y) || "null";return l = w["length"] === 0 ? "[]" : v ? '[\n' + v + w['join'](',\n' + v) + '\n' + m +"]" : "[" + w["join"](",") + "]",v = m,l}if (d && (typeof d === 'undefined' ? undefined : s_function(d)) === 'object')for (S = d["length"],c = 0; c < S; c +=1)typeof d[c] === 'string' && (l = p(f = d[c], y)) && w['push'](g_function(f) + (v ? ": " : ":") + l);elsefor (f in y)Object['prototype']['hasOwnProperty']['call'](y, f) && (l = p(f, y)) && w['push'](g_function(f) + (v ? ": " : ":") + l);return l = w["length"] === 0 ? "{}" : v ? '{\n' + v + w["join"](',\n' + v) + '\n' + m + "}" : "{" + w["join"](",") + "}",v = m,l}
};var A={"stringifyJSON": function(i, d, a) {var te='';if (te = e[1],aa='',typeof a === "number")for (var c = n[3]; c < a; c += n[112])aa += u[155];elsetypeof a === r[349] && (re = a);if (ue = d,d && typeof d !== Hc(r[359]) && ((typeof d === e[182] ? o[383] : $(d)) !== r[360] || typeof d[Kc(t[348])] !== t[349]))throw new Error(Uc(t[350]));return p(t[0], {"": i})}// function(i, d, a) {////// // return '"'+JSON.stringify(i)+'"'// }
}
function encode(i, d) {for (var a = [r[109], e[5], r[7], t[126], n[3], o[113], n[296]], s = e[84]; n[101]; ) {switch (a[s++]) {case n[3]:var v = e[84];continue;case o[2]:if (!i)return u[0];continue;case o[100]:var l = t[418], j = e[21], h = t[419], b = r[67], p = u[417];continue;case n[150]:var g = "";continue;case e[356]:var w, m, y, S, _, E, R;continue;case t[100]:for (; v < i[o[97]]; )w = i[u[393]](v++),m = i["charCodeAt"](v++),y = i["charCodeAt"](v++),S = w >> o[100],_ = (w & t[3]) << u[1] | m >> r[8],E = (m & n[417]) << e[4] | y >> e[104],R = y & u[418],isNaN(m) ? E = R = o[460] : isNaN(y) && (R = r[422]),g = g + d[n[437]](S) + d[e[415]](_) + d["charAt"](E) + d[o[461]](R);continue;case n[296]:return g}break}
}
Msqst=function(i) {var d = o[467], a = n[442], c = u[0], f = 30, s = o[5];for (var b in i) {var p, g = s % f, w = c_function_list[g], m = (0, A['stringifyJSON'])(((p = {})[b] = i[b], p));c += P(g + 1, w(m["slice"](1, -1))),s++}return "3012#"+encode(c, "XmYj3u1PnvisIZUF8ThR/a6DfO+kW4JHrCELycAzSxleoQp02MtwV9Nd57qGgbKB=")
}function lid() {for (var i = n[96], d = o[102], a = n[97], c = arguments["llt"] > o[5] && arguments[0] !== undefined ? arguments[0] : n[98], f = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", s = [], v = r[6]; v < c; v++)s[v] = f["charAt"](Math[t[89]](Math[n[99]]() * f[u[103]]));return s[e[95]](r[2])
}function first_parm(){console.log((new Date).getTime() + lid())var ii={"lid": (new Date).getTime() + lid(),"lidType": "0","cache": true,"appKey": "74262f9de11b55de702ea76e084af660"};return Msqst(ii);}
function second_parm(response_lid){var jj={"lid": response_lid,"lidType": 1,"cache": true,"can": "981ca80af415f5c9fb420b3cf8fc233d","web": "e11de126215c6cca83f1fc404ed1e5e3","gi": "Google Inc. (NVIDIA);ANGLE (NVIDIA, NVIDIA GeForce GT 1030 Direct3D11 vs_5_0 ps_5_0, D3D11-30.0.15.1215)","pr": 1,"dm": 8,"cc": "unknown","hc": 12,"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36","np": "Win32","lug": "zh-CN","ce": 1,"ts": "0;false;false","timezone": "Asia/Shanghai","to": -480,"ls": 1,"ss": 1,"ind": 1,"ab": 0,"od": 1,"cd": 24,"res": "1920;1080","ar": "1920;1050","vs": "1920;150","ws": "1920;1050","rp": "PDF Viewer;Chrome PDF Viewer;Chromium PDF Viewer;Microsoft Edge PDF Viewer;WebKit built-in PDF","adb": false,"hl": 1,"cl": 20,"st": 1706747,"ct": 6,"hlb": false,"hll": false,"hlo": false,"hlr": false,"db": 1,"sm": 0,"appKey": "dxdxdxtest2017keyc3e83b6940835"};return Msqst(jj);
}console.log(first_parm())
第三次请求:获取验证码图片等信息

这里面出来c,其余的都不动也可以,不过有的需要注意这个uid,之前做过的民生银行好像我记得会验证这个uid,当然那个是个定制版的。大部分都不需要。
我就不啰嗦了,直接来看看最后一步ac参数的生成逻辑。关于ac,都在这个greenseer.js里面了。
这里就是ac的开始处。俗称ac初始化,哈哈,瞎几把乱叫。

放在这东西都放在window对象下面了,开搞开搞。

还忘记一件事:图片的还原。顶象原图下载下来是乱序。长这种吊样。

图片还原的话需要无非就是需要拿到还原数组,源码放这,需要的大表哥们自提:
提一下,这个还原的数组所需的参数就是这个东西:

还原的js:
function rr(n, e) {if (n.includes)return n.includes(e);for (var r = 0, t = n.length; r < t; r++)if (n[r] === e)return !0;return !1
}
function Ir(n) {for (var e, t = [], i = 0; i < n.length; i++) {var o = n.charCodeAt(i);if (32 === i)break;for (; rr(t, o % 32); )o++;t[(e = "hsup",e.split("").reverse().join(""))](o % 32)}return t
}console.log(Ir(图片名称))
还原的py:
def reduction_image(_seq,_img):"""用于将图片还原@param _seq:图片的序列号,也就是 Sequence方法生成的结果 还原数组@param _img:背景图片@return new img"""a = 200np_image = np.array(_img)new_np_img = np.zeros((200,400,3), dtype = np.uint8)for u in range(0,32):c = _seq[u] % 32 * 12xpos = u % 32 * 12slice_img = np_image[0:(0 + a), c:(c + 12)]n = len(slice_img[0])new_np_img[0:(0 + a), xpos: (xpos + n)] = slice_imgreturn new_np_img
作者很贴心,比苏菲还贴,顺带把轨迹的生成也留下,其实怎么说,顶象不怎么校验滑块轨迹,
哈哈,懂的都懂,不啰嗦了。
function slide_track(distance) {function __ease_out_expo(sep) {if (sep == 1) {return 1} else {return 1 - Math.pow(2, -10 * sep)}}function random_randint(min, max) {var range = max - min;var rand = Math.random();var num = min + Math.round(rand * range);return num;}var slide_track = [[372, 507, 3526]]var count = 30 + parseInt(distance / 2)var t = random_randint(50, 100)var _x = 0,_y = 0for (i = 0; i < count; i++) {var x = Math.round(__ease_out_expo(i / count) * distance)var t = t + random_randint(30, 50)if (x == _x) {continue}slide_track.push([372 + x, 507 + _y, 3526 + t])_x = x}return slide_track
}
最后ac部分:
window=this;
location={"href":"",
}
navigator={"userAgent":"",
}
document={"referrer":"","documentElement":{"doScroll":undefined,"getAttribute":function(arg){return null}},"getElementsByTagName":function(arg){return {"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{}}}
}let Screen = function () {
}
Screen.prototype.width = 1920;
Screen.prototype.height = 1080;
Screen.prototype.availWidth = 1920;
Screen.prototype.availHeight = 1040;
Screen.prototype.colorDepth = 24;
window.screen = new Screen();with(window){}//_init.__proto__即window.dcfunction slide_ac(sid,xdistance,ydistance){mousemove=[]// console.log(mousemove)_init=window._dx['UA']['init']({})_init.__proto__.ua=""_init.__proto__._ua=""_init.__proto__.option={"token":sid,"form":""}_init.__proto__.getTK()_init.__proto__._sa=[]for(i=0;i<mousemove.length;i++){_init.__proto__.tm=new Date().getTime()-mousemove[i][2]_init.__proto__.recordSA({"pageX":mousemove[i][0],"pageY":mousemove[i][1]})}_init.__proto__.sendSA()//return _init.__proto__.ua_init.__proto__.sendTemp({ //sendTemp这个方法我没补"xpath": "/html/body/div[12]","x": xdistance,"y": ydistance})return _init.__proto__.ua
}
console.log(slide_ac("29d16dbf873151399233464d7f96407a",172,51));
ok,完事儿,基本上顶象的其他验证类型也就是改个坐标的问题,各位大表哥还不懂的可以加加老弟互相学习学习。
顺便提一句有需要定制算法,各种加密,国内外各种验证码识别的可以联系作者,包大表哥们满意
或者关注我们的作坊:图腾视觉开放平台-高速、稳定、易用的webapi接口调用
(现已合作大佬超乎你想想)
提示:有问题的小伙伴可以私信讨论,若是侵权请联系作者删。
相关文章:
DX算法还原
早在之前作者就写过一篇关于顶象的滑块验证,潦潦草草几句话就带过了。 出于互相学习的想法,给了一个大学生,奈何不讲武德把源码甩群里了,虽然在大佬们眼里不难, 不过拿着别人的东西乱传还是不太好。自认倒霉…...
多媒体API
私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…...
免费矢量图标网站有哪些?
图标作为UI设计的必要元素,矢量图标是质量的保证。据说完美的用户体验应该从灵活性开始 。在响应设计盛行的当下,灵活矢量图标的重要性不言而喻。在这种情况下,风格齐全、质量上乘的矢量图标网站堪称设计宝藏。在这篇文章中,我们…...
基于Redis的分布式限流详解
前言 Redis除了能用作缓存外,还有很多其他用途,比如分布式锁,分布式限流,分布式唯一主键等,本文将和大家分享下基于Redis分布式限流的各种实现方案。 一、为什么需要限流 用最简单的话来说:外部请求是不可…...
权限提升:漏洞探针.(Linux系统)
权限提升:漏洞探针. 权限提升简称提权,由于操作系统都是多用户操作系统,用户之间都有权限控制,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通过 Webshel…...
python-11-多线程模块threading
python使用多线程实例讲解 1 进程和线程 1.1 进程和线程的概念 进程(process)和线程(thread)是操作系统的基本概念。 进程是资源分配的最小单位,线程是CPU调度的最小单位。 线程是程序中一个单一的顺序控制流程,进程内一个相对独立的、可调度的执行单…...
动态gif图片如何在线做?轻松实现图片在线生成gif
常见的jpg、png格式的静态图片想要变成gif格式的动态图片时,要怎么办呢?有没有什么简单实用的gif制作工具呢? 一、什么工具能够在线制作gif? GIF中文网作为一款专业的gif制作(https://www.gif.cn/)工具&a…...
浅谈联网汽车安全漏洞
“智能网联汽车存在内生共性问题,即软硬件的漏洞后门,基于此进行的网络攻击可以直接带来勒索、盗窃、大规模车辆恶意操控风险,还有数据泄露等网络安全事件。如果内生的漏洞后门问题不解决,系统自身难保,很难谈系统安…...
深入理解SeaTunnel:易用、高性能、支持实时流式和离线批处理的海量数据集成平台
深入理解SeaTunnel:易用、高性能、支持实时流式和离线批处理的海量数据集成平台 一、认识SeaTunnel二、SeaTunnel 系统架构、工作流程与特性三、SeaTunnel工作架构四、部署SeaTunnel1.安装Java2.下载SeaTunnel3.安装连接器 五、快速启动作业1.添加作业配置文件以定义…...
项目上线 | 兰精携手盖雅工场,数智驱动绿色转型
近年来,纺织纤维行业零碳行动如火如荼。作为低碳环保消费新时尚引领者,同时也是纤维领域隐形冠军,兰精在推进绿色发展的同时,也在不断向内探索企业数字化转型之道,以此反哺业务快速扩张。 数智转型,管理先…...
102-Linux_I/O复用方法之poll
文章目录 1.poll系统调用的作用2.poll的原型3.poll支持的事件类型4.poll实现TCP服务器(1)服务器端代码:(2)客户端代码:(3)运行结果截图: 1.poll系统调用的作用 poll 系统调用和 select 类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有…...
【VAR模型 | 时间序列】帮助文档:VAR模型的引入和Python实践(含源代码)
向量自回归 (VAR) 是一种随机过程模型,用于捕获多个时间序列之间的线性相互依赖性。 VAR 模型通过允许多个进化变量来概括单变量自回归模型(AR 模型)。 VAR 中的所有变量都以相同的方式进入模型:每个变量都有一个方程式ÿ…...
Spark任务提交流程
1. yarn-client Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯,申请启动ApplicationMaster; 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的…...
python相对路径与绝对路径
9.1 Python 绝对路径与相对路径 - 知乎 (zhihu.com) 目录 1. 绝对路径 1.1 概念 1.2 用绝对路径打开文件 1.2 相对路径 1.3 python路径表示的斜杠问题 1. 绝对路径 1.1 概念 绝对路径 指完整的描述文件位置的路径。绝对路径就是文件或文件夹在硬盘上的完整路径。 在 Win…...
SPSS如何进行基本统计分析之案例实训?
文章目录 0.引言1.描述性分析2.频数分析3.探索分析4.列联表分析5.比率分析 0.引言 因科研等多场景需要进行数据统计分析,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对基本…...
Python项目实战篇——常用验证码标注和识别(需求分析和实现思路)
前言:验证码识别和标注是现在网络安全中的一个重要任务,尤其是在一些电商平台和在线支付等场景中,验证码的安全性至关重要。本文将介绍如何使用Python实现常用的验证码标注和识别,以便为自己的项目提供参考。 一、需求分析 1、验证…...
MySQL基础(六)多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,…...
零死角玩转stm32中级篇3-SPI总线
本篇博文目录: 一.基础知识1.什么是SPI2.SPI和IIC有什么不同3.SPI的优缺点4.SPI是怎么实现通信的5.SPI 数据传输的步骤6.SPI菊花链7.通过SPI实现数据的读和写 二.STM32F103C8T6芯片SPI协议案例代码 一.基础知识 1.什么是SPI SPI(Serial Peripheral Interface&#…...
顺序表功能实现(入手版详解)
🍉博客主页:阿博历练记 📖文章专栏:数据结构与算法 🚚代码仓库:阿博编程日记 🌹欢迎关注:欢迎友友们点赞收藏关注哦 文章目录 🍓前言✨顺序表🔍1.顺序表的整体…...
Java 中的线程是什么,如何创建和管理线程-下(十三)
书接上文 CompletableFuture CompletableFuture 是 Java 8 中新增的类,提供了更为强大的异步编程支持。它可以将多个异步任务组合成一个整体,并且可以处理异常情况。 例如,可以使用 CompletableFuture 来实现异步任务的串行执行࿱…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...
ZYNQ学习记录FPGA(二)Verilog语言
一、Verilog简介 1.1 HDL(Hardware Description language) 在解释HDL之前,先来了解一下数字系统设计的流程:逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端,在这个过程中就需要用到HDL,正文…...
