1"use strict";!function(){const t="hbe.v4.",e=new TextDecoder("utf-8",{fatal:!0}),n=new TextEncoder;function r(t){if(t.length%2!=0)throw new Error("hex string has odd length");const e=new Uint8Array(t.length/2);for(let n=0;n<e.length;n++)e[n]=parseInt(t.substr(2*n,2),16);return e}async function o(t,n,r){const o=await crypto.subtle.decrypt({name:"AES-GCM",iv:n,tagLength:128},t,r);return e.decode(o)}async function a({password:t,saltHex:e,nonceHex:a,ciphertextHex:c,iterations:i}){try{const s=r(e),l=r(a),u=r(c);if(u.length<16)return{ok:!1};const y=await async function(t,e,r){const o=await crypto.subtle.importKey("raw",n.encode(t),{name:"PBKDF2"},!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:r,hash:"SHA-256"},o,{name:"AES-GCM",length:256},!0,["decrypt"])}(t,s,i);return{ok:!0,plaintext:await o(y,l,u),key:y}}catch(t){return{ok:!1}}}function c(t){let e="";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return btoa(e)}function i(){return location.pathname+location.search}async function s(e,n){try{const r=localStorage.getItem(t+e);if(!r)return null;const o=JSON.parse(r);if(!o||4!==o.version||"string"!=typeof o.dk||"string"!=typeof o.salt||"string"!=typeof o.nonce||"number"!=typeof o.expiresAt||o.expiresAt<=Date.now())return localStorage.removeItem(t+e),null;if(o.salt!==n)return localStorage.removeItem(t+e),null;const a=function(t){const e=atob(t),n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t);return n}(o.dk);return await crypto.subtle.importKey("raw",a,{name:"AES-GCM"},!0,["decrypt"])}catch(n){try{localStorage.removeItem(t+e)}catch(t){}return null}}function l(t,e){let n=t.querySelector('[role="alert"]');n||(n=document.createElement("div"),n.setAttribute("role","alert"),n.className="hbe hbe-error",t.appendChild(n)),n.textContent=e}async function u(e,n,r,o){!function(t){const e=t.querySelector('[role="alert"]');e&&(e.textContent="")}(e);const s=function(t){const e=t.querySelector("#hbePass");return e?e.value:""}(r);if(!s)return void l(e,n.wpm);const u=await a({password:s,saltHex:n.saltHex,nonceHex:n.nonceHex,ciphertextHex:n.ciphertextHex,iterations:n.iterations});u.ok?(n.autoSave&&await async function(e,n,r,o){try{const a=await crypto.subtle.exportKey("raw",n),i={version:4,dk:c(new Uint8Array(a)),salt:r,nonce:o,expiresAt:Date.now()+864e5};localStorage.setItem(t+e,JSON.stringify(i))}catch(t){}}(n.storageKey||i(),u.key,n.saltHex,n.nonceHex),o(u.plaintext)):l(e,n.wpm)}async function y(e,n,a){if(!n.autoSave)return!1;const c=n.storageKey||i(),l=await s(c,n.saltHex);if(!l)return!1;const u=await async function({key:t,nonceHex:e,ciphertextHex:n}){try{const a=r(e),c=r(n);return c.length<16?{ok:!1}:{ok:!0,plaintext:await o(t,a,c)}}catch(t){return{ok:!1}}}({key:l,nonceHex:n.nonceHex,ciphertextHex:n.ciphertextHex});if(!u.ok){try{localStorage.removeItem(t+c)}catch(t){}return!1}return a(u.plaintext,"cached"),!0}function h(){const t=document.querySelectorAll("#hexo-blog-encrypt");t.length&&t.forEach(t=>{if(t.classList.contains("hbe-decrypted-content")||t.classList.contains("hbe-error"))return;const e=function(t){const e=t.dataset,n=t.querySelector("script#hbeData");return{format:e.hbeFormat,wpm:e.wpm||window.MATERY_I18N&&window.MATERY_I18N.hbeWrongPass||"å¯ç é误ï¼è¯·éè¯",saltHex:e.salt,nonceHex:e.nonce,iterations:parseInt(e.kdfIterations,10)||25e4,autoSave:"true"===e.autoSave,storageKey:e.storageKey||"",ciphertextHex:n?n.textContent.trim():""}}(t);if("4"!==e.format)return void l(t,"å 坿 ¼å¼çæ¬ä¸å
¼å®¹ï¼è¯·å·æ°é¡µé¢éè¯");let n=!1;const r=(e,r)=>{if(!n){n=!0,function(t,e){const n=document.createElement("div");n.innerHTML=e,n.querySelectorAll("script:not([data-pjax])").forEach(t=>{const e=document.createElement("script");for(const n of t.attributes)e.setAttribute(n.name,n.value);e.text=t.text,t.parentNode.replaceChild(e,t)}),n.id="hexo-blog-encrypt",n.classList.add("hbe","hbe-decrypted-content"),t.parentNode.replaceChild(n,t)}(t,e),function(t){try{window.dispatchEvent(new CustomEvent("hexo-blog-decrypt",{detail:{mode:t}}))}catch(t){try{window.dispatchEvent(new Event("hexo-blog-decrypt"))}catch(t){}}}(r||"manual");try{"undefined"!=typeof Matery&&(Matery.boot&&"function"==typeof Matery.boot.refresh&&Matery.boot.refresh(),"function"==typeof Matery.articleInit&&Matery.articleInit(),Matery.events&&"function"==typeof Matery.events.refresh&&Matery.events.refresh())}catch(t){}}},o=t.querySelector("#hbeForm");o&&o.addEventListener("submit",n=>{n.preventDefault(),u(t,e,o,r)}),y(0,e,r).then(e=>{if(!e&&!n){const e=t.querySelector("#hbePass");e&&e.focus()}})})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",h):h()}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.