0
Home  ›  Addson  ›  Plugin  ›  Premium

Safelink Page

Details

Fitur premium halaman khusus safelink untuk template Infastio. Base code berdasarkan tutorial safelink milik wendycode namun dimodifikasi agar hanya support di halaman khusus safelink, /p/safelink.html.

Demo Safelink

Kelebihan safelink hanya di halaman khusus: Library JS hanya berada di 1 halaman saja.

Hal ini tentunya akan membuat halaman lain yang bukan safelink tidak akan dibebankan oleh Library JS yang memberatkan (JQuery, CryptoJS, PieTimer, & ClipboardJS). Dengan demikian halaman artikel akan tetap mendapatkan performa yang maksimal.


Tutorial

  1. Pertama-tama buat halaman(page) baru dan beri judul Safelink
  2. Kemudian kita lanjut edit HTML Template
  3. Cari
    <b:includable id='yz-inpage'>
  4. Ganti semua kode sampai penutupnya </b:includable> dengan ini
    <b:includable id='yz-inpage'>
      <b:if cond='data:post.title'> <h1> <b:if cond='data:post.link'> <a expr:href='data:post.link'><data:post.title/></a> <b:else/> <b:if cond='data:post.url'> <b:if cond='data:blog.url != data:post.url'> <a expr:href='data:post.url'><data:post.title/></a> <b:else/> <data:post.title/> </b:if> <b:else/> <data:post.title/> </b:if> </b:if> </h1> </b:if> <!-- safelink --> <div id='timer'/> <div style='text-align: center'> <button class='bt-success hidden' disabled='' id='wcGetLink'> Get Link </button> </div> <data:post.body/> <!-- safelink --> <div style='text-align: center'> <button class='bt-success hidden' disabled='' id='gotolink'> Go to Link </button> </div>
    </b:includable>
  5. Cari kode
    <span id="ntBtn" class="pointer flex relative dn skl relative">
  6. Copas kode ini tepat diatasnya
    <b:if cond='data:view.url == data:blog.homepageUrl path "/p/safelink.html"'>
      <div class='wcSafeShow pointer flex relative skl relative'>
        <svg xmlns="http://www.w3.org/2000/svg" width="1rem" height="1rem" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path stroke-linejoin="round" d="m9.5 12.4l1.429 1.6l3.571-4"/><path d="M3 10.417c0-3.198 0-4.797.378-5.335c.377-.537 1.88-1.052 4.887-2.081l.573-.196C10.405 2.268 11.188 2 12 2c.811 0 1.595.268 3.162.805l.573.196c3.007 1.029 4.51 1.544 4.887 2.081C21 5.62 21 7.22 21 10.417v1.574c0 2.505-.837 4.437-2 5.913M3.193 14c.857 4.298 4.383 6.513 6.706 7.527c.721.315 1.082.473 2.101.473c1.02 0 1.38-.158 2.101-.473c.579-.252 1.231-.58 1.899-.994"/></g></svg>
      </div>
    </b:if>
  7. Cari
    <b:include name="infastio-script"/>
  8. Copas kode ini tepat dibawahnya
    <b:if cond='data:view.url == data:blog.homepageUrl path "/p/safelink.html"'>
      <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js'/>
      <style>
        .wcSafeShow{position:relative;} 
        .safeWrap{width:100vw;height:100vh;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:999999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.panel-primary{background:#fff;text-align:center;display:block;overflow:hidden;width:100%;max-width:80%;padding:0 0 25px 0;border-radius:5px;margin:15% auto;box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24)}.panel-body{position:relative;margin:0 25px}.panel-heading h2{background:var(--link-color);color:#fff;margin:0 auto 25px auto;font-weight:400;padding:15px;font-size:20px}.panel-body input{background:rgba(0,0,0,0.04);width:100%;padding:15px;border-radius:5px;border:1px solid transparent;font-size:16px;color:#000;outline:none;text-indent:60px;transition:all .3s}.panel-body input:focus{background:#fff;color:#000;border-color:var(--link-color);outline:none;box-shadow:0 0 5px rgba(0,0,0,0.1)}.panel-body .input-group-btn{position:absolute;top:0;right:0}.panel-body button{border-radius:0 5px 5px 0;background:var(--link-color);color:#fff;border:0;padding:17px 52px;font-weight:500;outline:none;transition:all .3s}.panel-body button:hover,.panel-body button:focus{background:var(--link-color);outline:none}#generatelink{margin:20px auto 0 auto}#generatelink button{background:var(--link-color);border-radius:5px;font-size:14px;padding:14px 32px}#generatelink button:hover,#generatelink button:focus{background:var(--link-color);border-radius:5px;font-size:14px}#generatelink input{background:rgba(0,0,0,0.05);text-indent:0}#generatelink input:hover,#generatelink input:focus{background:var(--link-color);border-color:transparent;box-shadow:none}#generateloading{margin:20px auto 0 auto;font-size:20px;color:var(--link-color);font-weight:normal}
        .panel-body:before{content:'\279C';background:rgba(0,0,0,0.05);position:absolute;left:0;top:0;color:#888;padding:17px 20px;border-radius:5px 0 0 5px;border-right:1px solid transparent;transition:all .6s}.panel-body:focus-within:before{content:'\279C';background:var(--link-color);color:#fff}.bt-success{display:inline-flex;align-items:center;margin:15px 15px;padding:10px 20px;outline:0;border:0;border-radius:2px;color:#fefefe;background-color:var(--link-color);font-size:14px;white-space:nowrap;overflow:hidden;max-width:100%;line-height:2em;border-radius:1rem;}.bt-success:hover{color:var(--link-color);background-color:var(--soft-line);border-radius:1rem;}.hidden,.bt-success.hidden{display:none;visibility:visible;}.wcSafeClose{display:inline-flex;align-items:center;margin:15px auto -15px;padding:5px 15px;outline:0;border:0;border-radius:2px;color:#fefefe;background-color:var(--link-color);font-size:14px;white-space:nowrap;overflow:hidden;max-width:100%;line-height:2em}.copytoclipboard{margin:10px auto 5px}
        #timer{margin:0 auto 20px auto;width:80px;text-align:center}.pietimer{position:relative;font-size:200px;width:1em;height:1em}.pietimer > .percent{position:absolute;top:25px;left:12px;width:3.33em;font-size:18px;text-align:center;display:none}.pietimer > .slice{position:absolute;width:1em;height:1em;clip:rect(0px,1em,1em,0.5em)}.pietimer >.slice.gt50{clip:rect(auto,auto,auto,auto)}.pietimer > .slice > .pie{border:0.06em solid #c0c0c0;position:absolute;width:80px;height:80px;clip:rect(0em,0.5em,1em,0em);border-radius:50%}.pietimer > .slice > .pie.fill{-moz-transform:rotate(180deg)!important;-webkit-transform:rotate(180deg)!important;-o-transform:rotate(180deg)!important;transform:rotate(180deg)!important}.pietimer.fill > .percent{display:none}.pietimer.fill > .slice > .pie{border:transparent;background-color:#c0c0c0;width:1em;height:1em}
        .wcSafeShow svg{fill:none!important;stroke:#48525c;stroke-linecap:round;stroke-linejoin:round;stroke-width:1;width:22px;height:22px}
        #generateloading svg{width:22px;height:22px;fill:var(--link-color)}
        .btn-primary svg,.darkMode .btn-primary svg{fill:none;stroke:#fff;stroke-width:1.5;width:22px;height:22px;vertical-align:-5px;margin-right:10px}
        @media screen and (max-width:768px){.panel-body .input-group-btn{display:block;position:relative;overflow:hidden;margin:20px auto 0 auto}.panel-body button{border-radius:5px;width:100%}}
        @media screen and (max-width:480px){.panel-primary{margin-top:30%}}
      </style>
      <div class='safeWrap hidden'> <div class='panel-primary'> <div class='panel-heading'> <h2>Generate Link</h2> </div> <div class='panel-body'> <input autocomplete='off' id='generateurl' oninvalid='this.setCustomValidity(&apos;Please Enter valid link&apos;)' placeholder='Enter your link here...' required='required' type='url'/> <span class='input-group-btn'> <button class='btn-primary' id='btngenerate' oninvalid='this.setCustomValidity(&apos;Please Enter valid link&apos;)' required='required' type='button'> <svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M18.865 5.1238C19.302 5.2768 19.594 5.6888 19.594 6.1518V12.9248C19.594 14.8178 18.906 16.6248 17.691 18.0248C17.08 18.7298 16.307 19.2788 15.486 19.7228L11.928 21.6448L8.364 19.7218C7.542 19.2778 6.768 18.7298 6.156 18.0238C4.94 16.6238 4.25 14.8158 4.25 12.9208V6.1518C4.25 5.6888 4.542 5.2768 4.979 5.1238L11.561 2.8108C11.795 2.7288 12.05 2.7288 12.283 2.8108L18.865 5.1238Z'/><path class='svg-c' d='M9.32251 11.9177L11.2145 13.8107L15.1125 9.91269'/></svg>Generate </button> </span> <div class='hidden' id='generateloading'> <svg viewBox='0 0 50 50' x='0px' y='0px'><path d='M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z'><animateTransform attributeName='transform' attributeType='xml' dur='0.6s' from='0 25 25' repeatCount='indefinite' to='360 25 25' type='rotate'/></path></svg> </div> <div class='hidden' id='generatelink'> <input id='resulturl' onclick='this.focus();this.select()' readonly='readonly' type='text'/> <button class='copytoclipboard' data-clipboard-action='copy' data-clipboard-target='#resulturl' id='copytoclipboard'>Copy URL</button> </div> </div> <a class='wcSafeClose' href='javascript:void'>Close</a> </div> </div>
      <script>
        //<![CDATA[
        /* Pengaturan safeLink */
        var setTimer = 10;
        var setColor = 'var(--link-color)'; 
        var setText = 'Harap Tunggu...'; 
        var setCopyUrl = 'Salin URL'; 
        var setCopied = 'URL Tersalin'; 
        // global script version 1.1 open source code
        // safelink blogger di bagikan gratis oleh https://blog.choipanwendy.com versi 1.1
        // dimodifikasi hanya support ke halaman oleh yanuarzg.com        
        document.querySelectorAll(".wcSafeShow").forEach(function (element) { element.addEventListener("click", function () { document.querySelector(".safeWrap").style.display = "block"; }); }); document.querySelectorAll(".wcSafeClose").forEach(function (element) { element.addEventListener("click", function () { document.querySelector(".safeWrap").style.display = "none"; document.getElementById("generatelink").classList.add("hidden"); document.getElementById("generateurl").value = ""; }); });
        document.addEventListener("DOMContentLoaded",(function(){var e=window.location.origin;document.getElementById("btngenerate").addEventListener("click",(function(){var t=document.getElementById("generateurl").value,n=document.getElementById("generatelink"),r=document.getElementById("generateloading"),d=document.getElementById("resulturl");if(""==t)return document.getElementById("generateurl").focus(),!1;r.classList.remove("hidden"),n.classList.add("hidden");var o=new XMLHttpRequest;o.open("GET","/feeds/posts/summary?alt=json-in-script",!0),o.onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){var a=o.responseText,s=a.indexOf("{"),i=a.lastIndexOf("}"),l=a.substring(s,i+1),c=JSON.parse(l).feed.entry;if(void 0!==c){for(var u=0;u<c.length;u++)for(var m=0;m<c[u].link.length;m++)if("alternate"===c[u].link[m].rel){c[u].link[m].href;break}var f=e+"/p/safelink.html#?o="+aesCrypto.encrypt(convertstr(t),convertstr("root"));r.classList.add("hidden"),n.classList.remove("hidden"),d.value=f}else d.value="No result!"}else d.value="Error loading feed!"},o.send()})),new ClipboardJS(".copytoclipboard").on("success",(function(e){document.getElementById("copytoclipboard").innerHTML=setCopied}))}));
        //]]> 
      </script>
      <script>
        //<![CDATA[        
        function convertstr(t) { return t.replace(/^\s+/, "").replace(/\s+$/, "") }! function (t) { var e = { init: function (e) { var r = { timer: null, timerSeconds: 10, callback: function () {}, timerCurrent: 0, showPercentage: !1, fill: !1, color: "#CCC" }; return r = t.extend(r, e), this.each(function () { var e = t(this); e.data("pietimer") || (e.addClass("pietimer"), e.css({ fontSize: e.width() }), e.data("pietimer", r), r.showPercentage && e.find(".percent").show(), r.fill && e.addClass("fill"), e.pietimer("start")) }) }, stopWatch: function () { var e = t(this).data("pietimer"); if (e) { var r = (e.timerFinish - (new Date).getTime()) / 1e3; if (r <= 0) clearInterval(e.timer), t(this).pietimer("drawTimer", 100), e.callback(); else { var n = 100 - r / e.timerSeconds * 100; t(this).pietimer("drawTimer", n) } } }, drawTimer: function (e) { $this = t(this); var r = $this.data("pietimer"); if (r) { $this.html('<div class="percent"></div><div class="slice' + (e > 50 ? ' gt50"' : '"') + '><div class="pie"></div>' + (e > 50 ? '<div class="pie fill"></div>' : "") + "</div>"); var n = 3.6 * e; $this.find(".slice .pie").css({ "-moz-transform": "rotate(" + n + "deg)", "-webkit-transform": "rotate(" + n + "deg)", "-o-transform": "rotate(" + n + "deg)", transform: "rotate(" + n + "deg)" }), $this.find(".percent").html(Math.round(e) + "%"), r.showPercentage && $this.find(".percent").show(), $this.hasClass("fill") ? $this.find(".slice .pie").css({ backgroundColor: r.color }) : $this.find(".slice .pie").css({ borderColor: r.color }) } }, start: function () { var e = t(this).data("pietimer"); e && (e.timerFinish = (new Date).getTime() + 1e3 * e.timerSeconds, t(this).pietimer("drawTimer", 0), e.timer = setInterval("$this.pietimer('stopWatch')", 50)) }, reset: function () { var e = t(this).data("pietimer"); e && (clearInterval(e.timer), t(this).pietimer("drawTimer", 0)) } }; t.fn.pietimer = function (r) { return e[r] ? e[r].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof r && r ? void t.error("Method " + r + " does not exist on jQuery.pietimer") : e.init.apply(this, arguments) } }(jQuery),
        function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ClipboardJS = e() : t.ClipboardJS = e() }(this, function () { return function (t) { var e = {}; function r(n) { if (e[n]) return e[n].exports; var i = e[n] = { i: n, l: !1, exports: {} }; return t[n].call(i.exports, i, i.exports, r), i.l = !0, i.exports } return r.m = t, r.c = e, r.d = function (t, e, n) { r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }) }, r.r = function (t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }) }, r.t = function (t, e) { if (1 & e && (t = r(t)), 8 & e) return t; if (4 & e && "object" == typeof t && t && t.__esModule) return t; var n = Object.create(null); if (r.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t) for (var i in t) r.d(n, i, function (e) { return t[e] }.bind(null, i)); return n }, r.n = function (t) { var e = t && t.__esModule ? function () { return t.default } : function () { return t }; return r.d(e, "a", e), e }, r.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, r.p = "", r(r.s = 0) }([function (t, e, r) { "use strict"; var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t }, i = function () { function t(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } return function (e, r, n) { return r && t(e.prototype, r), n && t(e, n), e } }(), o = s(r(1)), a = s(r(3)), c = s(r(4)); function s(t) { return t && t.__esModule ? t : { default: t } } var l = function (t) { function e(t, r) { ! function (t, r) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this); var n = function (t, e) { if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !e || "object" != typeof e && "function" != typeof e ? t : e }(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this)); return n.resolveOptions(r), n.listenClick(t), n } return function (t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) }(e, a.default), i(e, [{ key: "resolveOptions", value: function () { var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === n(t.container) ? t.container : document.body } }, { key: "listenClick", value: function (t) { var e = this; this.listener = (0, c.default)(t, "click", function (t) { return e.onClick(t) }) } }, { key: "onClick", value: function (t) { var e = t.delegateTarget || t.currentTarget; this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new o.default({ action: this.action(e), target: this.target(e), text: this.text(e), container: this.container, trigger: e, emitter: this }) } }, { key: "defaultAction", value: function (t) { return u("action", t) } }, { key: "defaultTarget", value: function (t) { var e = u("target", t); if (e) return document.querySelector(e) } }, { key: "defaultText", value: function (t) { return u("text", t) } }, { key: "destroy", value: function () { this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) } }], [{ key: "isSupported", value: function () { var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], e = "string" == typeof t ? [t] : t, r = !!document.queryCommandSupported; return e.forEach(function (t) { r = r && !!document.queryCommandSupported(t) }), r } }]), e }(); function u(t, e) { var r = "data-clipboard-" + t; if (e.hasAttribute(r)) return e.getAttribute(r) } t.exports = l }, function (t, e, r) { "use strict"; var n, i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t }, o = function () { function t(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } return function (e, r, n) { return r && t(e.prototype, r), n && t(e, n), e } }(), a = (n = r(2)) && n.__esModule ? n : { default: n }, c = function () { function t(e) { ! function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.resolveOptions(e), this.initSelection() } return o(t, [{ key: "resolveOptions", value: function () { var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; this.action = t.action, this.container = t.container, this.emitter = t.emitter, this.target = t.target, this.text = t.text, this.trigger = t.trigger, this.selectedText = "" } }, { key: "initSelection", value: function () { this.text ? this.selectFake() : this.target && this.selectTarget() } }, { key: "selectFake", value: function () { var t = this, e = "rtl" == document.documentElement.getAttribute("dir"); this.removeFake(), this.fakeHandlerCallback = function () { return t.removeFake() }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[e ? "right" : "left"] = "-9999px"; var r = window.pageYOffset || document.documentElement.scrollTop; this.fakeElem.style.top = r + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = (0, a.default)(this.fakeElem), this.copyText() } }, { key: "removeFake", value: function () { this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null) } }, { key: "selectTarget", value: function () { this.selectedText = (0, a.default)(this.target), this.copyText() } }, { key: "copyText", value: function () { var t = void 0; try { t = document.execCommand(this.action) } catch (e) { t = !1 } this.handleResult(t) } }, { key: "handleResult", value: function (t) { this.emitter.emit(t ? "success" : "error", { action: this.action, text: this.selectedText, trigger: this.trigger, clearSelection: this.clearSelection.bind(this) }) } }, { key: "clearSelection", value: function () { this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges() } }, { key: "destroy", value: function () { this.removeFake() } }, { key: "action", set: function () { var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy"; if (this._action = t, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"') }, get: function () { return this._action } }, { key: "target", set: function (t) { if (void 0 !== t) { if (!t || "object" !== (void 0 === t ? "undefined" : i(t)) || 1 !== t.nodeType) throw new Error('Invalid "target" value, use a valid Element'); if ("copy" === this.action && t.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); if ("cut" === this.action && (t.hasAttribute("readonly") || t.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); this._target = t } }, get: function () { return this._target } }]), t }(); t.exports = c }, function (t, e) { t.exports = function (t) { var e; if ("SELECT" === t.nodeName) t.focus(), e = t.value; else if ("INPUT" === t.nodeName || "TEXTAREA" === t.nodeName) { var r = t.hasAttribute("readonly"); r || t.setAttribute("readonly", ""), t.select(), t.setSelectionRange(0, t.value.length), r || t.removeAttribute("readonly"), e = t.value } else { t.hasAttribute("contenteditable") && t.focus(); var n = window.getSelection(), i = document.createRange(); i.selectNodeContents(t), n.removeAllRanges(), n.addRange(i), e = n.toString() } return e } }, function (t, e) { function r() {} r.prototype = { on: function (t, e, r) { var n = this.e || (this.e = {}); return (n[t] || (n[t] = [])).push({ fn: e, ctx: r }), this }, once: function (t, e, r) { var n = this; function i() { n.off(t, i), e.apply(r, arguments) } return i._ = e, this.on(t, i, r) }, emit: function (t) { for (var e = [].slice.call(arguments, 1), r = ((this.e || (this.e = {}))[t] || []).slice(), n = 0, i = r.length; n < i; n++) r[n].fn.apply(r[n].ctx, e); return this }, off: function (t, e) { var r = this.e || (this.e = {}), n = r[t], i = []; if (n && e) for (var o = 0, a = n.length; o < a; o++) n[o].fn !== e && n[o].fn._ !== e && i.push(n[o]); return i.length ? r[t] = i : delete r[t], this } }, t.exports = r }, function (t, e, r) { var n = r(5), i = r(6); t.exports = function (t, e, r) { if (!t && !e && !r) throw new Error("Missing required arguments"); if (!n.string(e)) throw new TypeError("Second argument must be a String"); if (!n.fn(r)) throw new TypeError("Third argument must be a Function"); if (n.node(t)) return h = e, d = r, (f = t).addEventListener(h, d), { destroy: function () { f.removeEventListener(h, d) } }; if (n.nodeList(t)) return s = t, l = e, u = r, Array.prototype.forEach.call(s, function (t) { t.addEventListener(l, u) }), { destroy: function () { Array.prototype.forEach.call(s, function (t) { t.removeEventListener(l, u) }) } }; if (n.string(t)) return o = t, a = e, c = r, i(document.body, o, a, c); throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList"); var o, a, c, s, l, u, f, h, d } }, function (t, e) { e.node = function (t) { return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType }, e.nodeList = function (t) { var r = Object.prototype.toString.call(t); return void 0 !== t && ("[object NodeList]" === r || "[object HTMLCollection]" === r) && "length" in t && (0 === t.length || e.node(t[0])) }, e.string = function (t) { return "string" == typeof t || t instanceof String }, e.fn = function (t) { return "[object Function]" === Object.prototype.toString.call(t) } }, function (t, e, r) { var n = r(7); function i(t, e, r, i, o) { var a = function (t, e, r, i) { return function (r) { r.delegateTarget = n(r.target, e), r.delegateTarget && i.call(t, r) } }.apply(this, arguments); return t.addEventListener(r, a, o), { destroy: function () { t.removeEventListener(r, a, o) } } } t.exports = function (t, e, r, n, o) { return "function" == typeof t.addEventListener ? i.apply(null, arguments) : "function" == typeof r ? i.bind(null, document).apply(null, arguments) : ("string" == typeof t && (t = document.querySelectorAll(t)), Array.prototype.map.call(t, function (t) { return i(t, e, r, n, o) })) } }, function (t, e) { if ("undefined" != typeof Element && !Element.prototype.matches) { var r = Element.prototype; r.matches = r.matchesSelector || r.mozMatchesSelector || r.msMatchesSelector || r.oMatchesSelector || r.webkitMatchesSelector } t.exports = function (t, e) { for (; t && 9 !== t.nodeType;) { if ("function" == typeof t.matches && t.matches(e)) return t; t = t.parentNode } } }]) });
        var CryptoJS = CryptoJS || function (t, e) { var r = {}, n = r.lib = {}, i = n.Base = function () { function t() {} return { extend: function (e) { t.prototype = this; var r = new t; return e && r.mixIn(e), r.hasOwnProperty("init") || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () {}, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), o = n.WordArray = i.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var e = this.words, r = t.words, n = this.sigBytes, i = t.sigBytes; if (this.clamp(), n % 4) for (var o = 0; i > o; o++) { var a = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; e[n + o >>> 2] |= a << 24 - (n + o) % 4 * 8 } else if (r.length > 65535) for (o = 0; i > o; o += 4) e[n + o >>> 2] = r[o >>> 2]; else e.push.apply(e, r); return this.sigBytes += i, this }, clamp: function () { var e = this.words, r = this.sigBytes; e[r >>> 2] &= 4294967295 << 32 - r % 4 * 8, e.length = t.ceil(r / 4) }, clone: function () { var t = i.clone.call(this); return t.words = this.words.slice(0), t }, random: function (e) { for (var r = [], n = 0; e > n; n += 4) r.push(4294967296 * t.random() | 0); return new o.init(r, e) } }), a = r.enc = {}, c = a.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, n = [], i = 0; r > i; i++) { var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255; n.push((o >>> 4).toString(16)), n.push((15 & o).toString(16)) } return n.join("") }, parse: function (t) { for (var e = t.length, r = [], n = 0; e > n; n += 2) r[n >>> 3] |= parseInt(t.substr(n, 2), 16) << 24 - n % 8 * 4; return new o.init(r, e / 2) } }, s = a.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, n = [], i = 0; r > i; i++) { var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255; n.push(String.fromCharCode(o)) } return n.join("") }, parse: function (t) { for (var e = t.length, r = [], n = 0; e > n; n++) r[n >>> 2] |= (255 & t.charCodeAt(n)) << 24 - n % 4 * 8; return new o.init(r, e) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(s.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return s.parse(unescape(encodeURIComponent(t))) } }, u = n.BufferedBlockAlgorithm = i.extend({ reset: function () { this._data = new o.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (e) { var r = this._data, n = r.words, i = r.sigBytes, a = this.blockSize, c = i / (4 * a), s = (c = e ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0)) * a, l = t.min(4 * s, i); if (s) { for (var u = 0; s > u; u += a) this._doProcessBlock(n, u); var f = n.splice(0, s); r.sigBytes -= l } return new o.init(f, l) }, clone: function () { var t = i.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), f = (n.Hasher = u.extend({ cfg: i.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { u.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, blockSize: 16, _createHelper: function (t) { return function (e, r) { return new t.init(r).finalize(e) } }, _createHmacHelper: function (t) { return function (e, r) { return new f.HMAC.init(t, r).finalize(e) } } }), r.algo = {}); return r }(Math); ! function () { var t = CryptoJS, e = t.lib.WordArray; t.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, n = this._map; t.clamp(); for (var i = [], o = 0; r > o; o += 3) for (var a = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; 4 > c && r > o + .75 * c; c++) i.push(n.charAt(a >>> 6 * (3 - c) & 63)); var s = n.charAt(64); if (s) for (; i.length % 4;) i.push(s); return i.join("") }, parse: function (t) { var r = t.length, n = this._map, i = n.charAt(64); if (i) { var o = t.indexOf(i); - 1 != o && (r = o) } for (var a = [], c = 0, s = 0; r > s; s++) if (s % 4) { var l = n.indexOf(t.charAt(s - 1)) << s % 4 * 2, u = n.indexOf(t.charAt(s)) >>> 6 - s % 4 * 2; a[c >>> 2] |= (l | u) << 24 - c % 4 * 8, c++ } return e.create(a, c) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (t) { function e(t, e, r, n, i, o, a) { var c = t + (e & r | ~e & n) + i + a; return (c << o | c >>> 32 - o) + e } function r(t, e, r, n, i, o, a) { var c = t + (e & n | r & ~n) + i + a; return (c << o | c >>> 32 - o) + e } function n(t, e, r, n, i, o, a) { var c = t + (e ^ r ^ n) + i + a; return (c << o | c >>> 32 - o) + e } function i(t, e, r, n, i, o, a) { var c = t + (r ^ (e | ~n)) + i + a; return (c << o | c >>> 32 - o) + e } var o = CryptoJS, a = o.lib, c = a.WordArray, s = a.Hasher, l = o.algo, u = []; ! function () { for (var e = 0; 64 > e; e++) u[e] = 4294967296 * t.abs(t.sin(e + 1)) | 0 }(); var f = l.MD5 = s.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, o) { for (var a = 0; 16 > a; a++) { var c = o + a, s = t[c]; t[c] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8) } var l = this._hash.words, f = t[o + 0], h = t[o + 1], d = t[o + 2], p = t[o + 3], y = t[o + 4], v = t[o + 5], m = t[o + 6], g = t[o + 7], k = t[o + 8], b = t[o + 9], _ = t[o + 10], S = t[o + 11], x = t[o + 12], w = t[o + 13], E = t[o + 14], C = t[o + 15], B = l[0], T = l[1], A = l[2], O = l[3]; B = e(B, T, A, O, f, 7, u[0]), O = e(O, B, T, A, h, 12, u[1]), A = e(A, O, B, T, d, 17, u[2]), T = e(T, A, O, B, p, 22, u[3]), B = e(B, T, A, O, y, 7, u[4]), O = e(O, B, T, A, v, 12, u[5]), A = e(A, O, B, T, m, 17, u[6]), T = e(T, A, O, B, g, 22, u[7]), B = e(B, T, A, O, k, 7, u[8]), O = e(O, B, T, A, b, 12, u[9]), A = e(A, O, B, T, _, 17, u[10]), T = e(T, A, O, B, S, 22, u[11]), B = e(B, T, A, O, x, 7, u[12]), O = e(O, B, T, A, w, 12, u[13]), A = e(A, O, B, T, E, 17, u[14]), B = r(B, T = e(T, A, O, B, C, 22, u[15]), A, O, h, 5, u[16]), O = r(O, B, T, A, m, 9, u[17]), A = r(A, O, B, T, S, 14, u[18]), T = r(T, A, O, B, f, 20, u[19]), B = r(B, T, A, O, v, 5, u[20]), O = r(O, B, T, A, _, 9, u[21]), A = r(A, O, B, T, C, 14, u[22]), T = r(T, A, O, B, y, 20, u[23]), B = r(B, T, A, O, b, 5, u[24]), O = r(O, B, T, A, E, 9, u[25]), A = r(A, O, B, T, p, 14, u[26]), T = r(T, A, O, B, k, 20, u[27]), B = r(B, T, A, O, w, 5, u[28]), O = r(O, B, T, A, d, 9, u[29]), A = r(A, O, B, T, g, 14, u[30]), B = n(B, T = r(T, A, O, B, x, 20, u[31]), A, O, v, 4, u[32]), O = n(O, B, T, A, k, 11, u[33]), A = n(A, O, B, T, S, 16, u[34]), T = n(T, A, O, B, E, 23, u[35]), B = n(B, T, A, O, h, 4, u[36]), O = n(O, B, T, A, y, 11, u[37]), A = n(A, O, B, T, g, 16, u[38]), T = n(T, A, O, B, _, 23, u[39]), B = n(B, T, A, O, w, 4, u[40]), O = n(O, B, T, A, f, 11, u[41]), A = n(A, O, B, T, p, 16, u[42]), T = n(T, A, O, B, m, 23, u[43]), B = n(B, T, A, O, b, 4, u[44]), O = n(O, B, T, A, x, 11, u[45]), A = n(A, O, B, T, C, 16, u[46]), B = i(B, T = n(T, A, O, B, d, 23, u[47]), A, O, f, 6, u[48]), O = i(O, B, T, A, g, 10, u[49]), A = i(A, O, B, T, E, 15, u[50]), T = i(T, A, O, B, v, 21, u[51]), B = i(B, T, A, O, x, 6, u[52]), O = i(O, B, T, A, p, 10, u[53]), A = i(A, O, B, T, _, 15, u[54]), T = i(T, A, O, B, h, 21, u[55]), B = i(B, T, A, O, k, 6, u[56]), O = i(O, B, T, A, C, 10, u[57]), A = i(A, O, B, T, m, 15, u[58]), T = i(T, A, O, B, w, 21, u[59]), B = i(B, T, A, O, y, 6, u[60]), O = i(O, B, T, A, S, 10, u[61]), A = i(A, O, B, T, d, 15, u[62]), T = i(T, A, O, B, b, 21, u[63]), l[0] = l[0] + B | 0, l[1] = l[1] + T | 0, l[2] = l[2] + A | 0, l[3] = l[3] + O | 0 }, _doFinalize: function () { var e = this._data, r = e.words, n = 8 * this._nDataBytes, i = 8 * e.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32; var o = t.floor(n / 4294967296), a = n; r[15 + (i + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), r[14 + (i + 64 >>> 9 << 4)] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), e.sigBytes = 4 * (r.length + 1), this._process(); for (var c = this._hash, s = c.words, l = 0; 4 > l; l++) { var u = s[l]; s[l] = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8) } return c }, clone: function () { var t = s.clone.call(this); return t._hash = this._hash.clone(), t } }); o.MD5 = s._createHelper(f), o.HmacMD5 = s._createHmacHelper(f) }(Math), function () { var t = CryptoJS, e = t.lib, r = e.Base, n = e.WordArray, i = t.algo, o = i.MD5, a = i.EvpKDF = r.extend({ cfg: r.extend({ keySize: 4, hasher: o, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r = this.cfg, i = r.hasher.create(), o = n.create(), a = o.words, c = r.keySize, s = r.iterations; a.length < c;) { l && i.update(l); var l = i.update(t).finalize(e); i.reset(); for (var u = 1; s > u; u++) l = i.finalize(l), i.reset(); o.concat(l) } return o.sigBytes = 4 * c, o } }); t.EvpKDF = function (t, e, r) { return a.create(r).compute(t, e) } }(), CryptoJS.lib.Cipher || function (t) { var e = CryptoJS, r = e.lib, n = r.Base, i = r.WordArray, o = r.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), s = e.algo.EvpKDF, l = r.Cipher = o.extend({ cfg: n.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e) }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e) }, init: function (t, e, r) { this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() }, reset: function () { o.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? g : v } return function (e) { return { encrypt: function (r, n, i) { return t(n).encrypt(e, r, n, i) }, decrypt: function (r, n, i) { return t(n).decrypt(e, r, n, i) } } } }() }), u = (r.StreamCipher = l.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }), e.mode = {}), f = r.BlockCipherMode = n.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e) }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e) }, init: function (t, e) { this._cipher = t, this._iv = e } }), h = u.CBC = function () { function e(e, r, n) { var i = this._iv; if (i) { var o = i; this._iv = t } else o = this._prevBlock; for (var a = 0; n > a; a++) e[r + a] ^= o[a] } var r = f.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { var n = this._cipher, i = n.blockSize; e.call(this, t, r, i), n.encryptBlock(t, r), this._prevBlock = t.slice(r, r + i) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { var n = this._cipher, i = n.blockSize, o = t.slice(r, r + i); n.decryptBlock(t, r), e.call(this, t, r, i), this._prevBlock = o } }), r }(), d = (e.pad = {}).Pkcs7 = { pad: function (t, e) { for (var r = 4 * e, n = r - t.sigBytes % r, o = n << 24 | n << 16 | n << 8 | n, a = [], c = 0; n > c; c += 4) a.push(o); var s = i.create(a, n); t.concat(s) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, p = (r.BlockCipher = l.extend({ cfg: l.cfg.extend({ mode: h, padding: d }), reset: function () { l.reset.call(this); var t = this.cfg, e = t.iv, r = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var n = r.createEncryptor; else { n = r.createDecryptor; this._minBufferSize = 1 } this._mode = n.call(r, this, e && e.words) }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var e = this._process(!0) } else { e = this._process(!0); t.unpad(e) } return e }, blockSize: 4 }), r.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), y = (e.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; if (r) var n = i.create([1398893684, 1701076831]).concat(r).concat(e); else n = e; return n.toString(c) }, parse: function (t) { var e = c.parse(t), r = e.words; if (1398893684 == r[0] && 1701076831 == r[1]) { var n = i.create(r.slice(2, 4)); r.splice(0, 4), e.sigBytes -= 16 } return p.create({ ciphertext: e, salt: n }) } }, v = r.SerializableCipher = n.extend({ cfg: n.extend({ format: y }), encrypt: function (t, e, r, n) { n = this.cfg.extend(n); var i = t.createEncryptor(r, n), o = i.finalize(e), a = i.cfg; return p.create({ ciphertext: o, key: r, iv: a.iv, algorithm: t, mode: a.mode, padding: a.padding, blockSize: t.blockSize, formatter: n.format }) }, decrypt: function (t, e, r, n) { return n = this.cfg.extend(n), e = this._parse(e, n.format), t.createDecryptor(r, n).finalize(e.ciphertext) }, _parse: function (t, e) { return "string" == typeof t ? e.parse(t, this) : t } }), m = (e.kdf = {}).OpenSSL = { execute: function (t, e, r, n) { n || (n = i.random(8)); var o = s.create({ keySize: e + r }).compute(t, n), a = i.create(o.words.slice(e), 4 * r); return o.sigBytes = 4 * e, p.create({ key: o, iv: a, salt: n }) } }, g = r.PasswordBasedCipher = v.extend({ cfg: v.cfg.extend({ kdf: m }), encrypt: function (t, e, r, n) { var i = (n = this.cfg.extend(n)).kdf.execute(r, t.keySize, t.ivSize); n.iv = i.iv; var o = v.encrypt.call(this, t, e, i.key, n); return o.mixIn(i), o }, decrypt: function (t, e, r, n) { n = this.cfg.extend(n), e = this._parse(e, n.format); var i = n.kdf.execute(r, t.keySize, t.ivSize, e.salt); return n.iv = i.iv, v.decrypt.call(this, t, e, i.key, n) } }) }(), function () { var t = CryptoJS, e = t.lib.BlockCipher, r = t.algo, n = [], i = [], o = [], a = [], c = [], s = [], l = [], u = [], f = [], h = []; ! function () { for (var t = [], e = 0; 256 > e; e++) t[e] = 128 > e ? e << 1 : e << 1 ^ 283; var r = 0, d = 0; for (e = 0; 256 > e; e++) { var p = d ^ d << 1 ^ d << 2 ^ d << 3 ^ d << 4; p = p >>> 8 ^ 255 & p ^ 99, n[r] = p, i[p] = r; var y = t[r], v = t[y], m = t[v], g = 257 * t[p] ^ 16843008 * p; o[r] = g << 24 | g >>> 8, a[r] = g << 16 | g >>> 16, c[r] = g << 8 | g >>> 24, s[r] = g; g = 16843009 * m ^ 65537 * v ^ 257 * y ^ 16843008 * r; l[p] = g << 24 | g >>> 8, u[p] = g << 16 | g >>> 16, f[p] = g << 8 | g >>> 24, h[p] = g, r ? (r = y ^ t[t[t[m ^ y]]], d ^= t[t[d]]) : r = d = 1 } }(); var d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], p = r.AES = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * ((this._nRounds = r + 6) + 1), o = this._keySchedule = [], a = 0; i > a; a++) if (r > a) o[a] = e[a]; else { var c = o[a - 1]; a % r ? r > 6 && a % r == 4 && (c = n[c >>> 24] << 24 | n[c >>> 16 & 255] << 16 | n[c >>> 8 & 255] << 8 | n[255 & c]) : (c = n[(c = c << 8 | c >>> 24) >>> 24] << 24 | n[c >>> 16 & 255] << 16 | n[c >>> 8 & 255] << 8 | n[255 & c], c ^= d[a / r | 0] << 24), o[a] = o[a - r] ^ c } for (var s = this._invKeySchedule = [], p = 0; i > p; p++) { a = i - p; if (p % 4) c = o[a]; else c = o[a - 4]; s[p] = 4 > p || 4 >= a ? c : l[n[c >>> 24]] ^ u[n[c >>> 16 & 255]] ^ f[n[c >>> 8 & 255]] ^ h[n[255 & c]] } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, o, a, c, s, n) }, decryptBlock: function (t, e) { var r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, l, u, f, h, i); r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r }, _doCryptBlock: function (t, e, r, n, i, o, a, c) { for (var s = this._nRounds, l = t[e] ^ r[0], u = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], h = t[e + 3] ^ r[3], d = 4, p = 1; s > p; p++) { var y = n[l >>> 24] ^ i[u >>> 16 & 255] ^ o[f >>> 8 & 255] ^ a[255 & h] ^ r[d++], v = n[u >>> 24] ^ i[f >>> 16 & 255] ^ o[h >>> 8 & 255] ^ a[255 & l] ^ r[d++], m = n[f >>> 24] ^ i[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ a[255 & u] ^ r[d++], g = n[h >>> 24] ^ i[l >>> 16 & 255] ^ o[u >>> 8 & 255] ^ a[255 & f] ^ r[d++]; l = y, u = v, f = m, h = g } y = (c[l >>> 24] << 24 | c[u >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & h]) ^ r[d++], v = (c[u >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[d++], m = (c[f >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & u]) ^ r[d++], g = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[u >>> 8 & 255] << 8 | c[255 & f]) ^ r[d++]; t[e] = y, t[e + 1] = v, t[e + 2] = m, t[e + 3] = g }, keySize: 8 }); t.AES = e._createHelper(p) }(); var aesCrypto = {}; ! function (t) { "use strict"; t.formatter = { prefix: "", stringify: function (t) { var e = this.prefix; return (e += t.salt.toString()) + t.ciphertext.toString() }, parse: function (t) { var e = CryptoJS.lib.CipherParams.create({}), r = this.prefix.length; return 0 !== t.indexOf(this.prefix) ? e : (e.ciphertext = CryptoJS.enc.Hex.parse(t.substring(16 + r)), e.salt = CryptoJS.enc.Hex.parse(t.substring(r, 16 + r)), e) } }, t.encrypt = function (e, r) { try { return CryptoJS.AES.encrypt(e, r, { format: t.formatter }).toString() } catch (t) { return "" } }, t.decrypt = function (e, r) { try { return CryptoJS.AES.decrypt(e, r, { format: t.formatter }).toString(CryptoJS.enc.Utf8) } catch (t) { return "" } } }(aesCrypto);
        var setGotolink = $(gotolink).text(); $(document).ready(function () { $.urlParam = function (t) { var e = new RegExp("[?&]" + t + "=([^&#]*)").exec(window.location.href); return null == e ? null : decodeURI(e[1]) || 0 }; var wcGetLink = $("#wcGetLink"), gotolink = $("#gotolink"), timer = $("#timer"); function gotolinkcountdown() { var t = 3; gotolink.removeClass("hidden"); var e = setInterval(function () { var r = t -= 1; gotolink.html(setText), r < 0 && (clearInterval(e), gotolink.prop("disabled", !1), gotolink.html(setGotolink)) }, 1e3) } null != $.urlParam("o") && timer.pietimer({ timerSeconds: setTimer, color: setColor, fill: !1, showPercentage: !0, callback: function () { wcGetLink.prop("disabled", !1), wcGetLink.removeClass("hidden"), timer.addClass("hidden") } }); var request = !1; wcGetLink.click(function () { 0 == request && (gotolinkcountdown(), request = !0), $("html, body").animate({ scrollTop: eval(gotolink.offset().top - 10) }, 500) }), gotolink.on("click", function () { var t = aesCrypto.decrypt(convertstr($.urlParam("o")), convertstr("root")); window.location.href = t }), on(!1, function () {}) });
        //]]> 
      </script>
    </b:if>
    
  9. Save Template

Terima kasih telah membeli addson Safelink Page ini, jika masih menghadapi kesulitan dalam pemasangan jangan sungkan untuk japri dan undang zhalxdev@gmail.com menjadi admin di blogmu. 

Post a Comment
Search
Menu
Theme
Share
Admin CS Support
Halo, Ada yang bisa kami bantu? ...
Kirim