[{"articleStyle":2,"cacheFirst":false,"customOrder":9,"enableJs":true,"enabled":true,"enabledCookieJar":false,"lastUpdateTime":1786417525907,"loadWithBaseUrl":true,"preload":true,"ruleArticles":"@js:\n(function() {\n    var keyHex = 'ea9d9d4f9a983fe6f6382f29c7b46b8d6dc47abc6da36662e6ddff8c78902f65';\n    \/\/ ========== 解密库（完整保留，与分类规则完全一致） ==========\n    var Ca=function(e,t,n){if(!t)t=new Uint8Array(4);if(n===void 0)n=0;t[n+0]=e>>>0;t[n+1]=e>>>8;t[n+2]=e>>>16;t[n+3]=e>>>24;return t};\n    var Sa=function(e,t,n){if(!t)t=new Uint8Array(8);if(n===void 0)n=0;Ca(e>>>0,t,n);Ca((e\/4294967296)>>>0,t,n+4);return t};\n    var La=function(e){for(var t=0;t<e.length;t++)e[t]=0;return e};\n    var Ia=function(e,t,n){var o=1;for(;n--;){o=(o+(255&e[t]))|0;e[t]=255&o;o>>>=8;t++}if(o>0)throw new Error('overflow')};\n    var Ta=new Uint8Array(16);\n    var Ga=function(e){var t=new Uint8Array(e.length\/2);for(var n=0;n<t.length;n++){t[n]=parseInt(e.slice(2*n,2*n+2),16)}return t};\n    var secureCompare=function(e,t){if(e.length!==t.length)return false;var n=0;for(var o=0;o<e.length;o++)n|=e[o]^t[o];return(1&((n-1)>>>8))!==0};\n    var Ma=function(e,t,n){var o=1634760805,a=857760878,r=2036477234,i=1797285236;var s=n[3]<<24|n[2]<<16|n[1]<<8|n[0],l=n[7]<<24|n[6]<<16|n[5]<<8|n[4],c=n[11]<<24|n[10]<<16|n[9]<<8|n[8],u=n[15]<<24|n[14]<<16|n[13]<<8|n[12];var d=n[19]<<24|n[18]<<16|n[17]<<8|n[16],f=n[23]<<24|n[22]<<16|n[21]<<8|n[20],v=n[27]<<24|n[26]<<16|n[25]<<8|n[24],p=n[31]<<24|n[30]<<16|n[29]<<8|n[28];var h=t[3]<<24|t[2]<<16|t[1]<<8|t[0],m=t[7]<<24|t[6]<<16|t[5]<<8|t[4],y=t[11]<<24|t[10]<<16|t[9]<<8|t[8],g=t[15]<<24|t[14]<<16|t[13]<<8|t[12];var b=o,k=a,w=r,_=i,x=s,C=l,S=c,L=u,M=d,A=f,D=v,I=p,E=h,P=m,T=y,j=g;for(var R=0;R<20;R+=2){b=(b+x)|0;E^=b;E=E>>>16|E<<16;M=(M+E)|0;x^=M;x=x>>>20|x<<12;k=(k+C)|0;P^=k;P=P>>>16|P<<16;A=(A+P)|0;C^=A;C=C>>>20|C<<12;w=(w+S)|0;T^=w;T=T>>>16|T<<16;D=(D+T)|0;S^=D;S=S>>>20|S<<12;_=(_+L)|0;j^=_;j=j>>>16|j<<16;I=(I+j)|0;L^=I;L=L>>>20|L<<12;w=(w+S)|0;T^=w;T=T>>>24|T<<8;D=(D+T)|0;S^=D;S=S>>>25|S<<7;_=(_+L)|0;j^=_;j=j>>>24|j<<8;I=(I+j)|0;L^=I;L=L>>>25|L<<7;k=(k+C)|0;P^=k;P=P>>>24|P<<8;A=(A+P)|0;C^=A;C=C>>>25|C<<7;b=(b+x)|0;E^=b;E=E>>>24|E<<8;M=(M+E)|0;x^=M;x=x>>>25|x<<7;b=(b+C)|0;j^=b;j=j>>>16|j<<16;D=(D+j)|0;C^=D;C=C>>>20|C<<12;k=(k+S)|0;E^=k;E=E>>>16|E<<16;I=(I+E)|0;S^=I;S=S>>>20|S<<12;w=(w+L)|0;P^=w;P=P>>>16|P<<16;M=(M+P)|0;L^=M;L=L>>>20|L<<12;_=(_+x)|0;T^=_;T=T>>>16|T<<16;A=(A+T)|0;x^=A;x=x>>>20|x<<12;w=(w+L)|0;P^=w;P=P>>>24|P<<8;M=(M+P)|0;L^=M;L=L>>>25|L<<7;_=(_+x)|0;T^=_;T=T>>>24|T<<8;A=(A+T)|0;x^=A;x=x>>>25|x<<7;k=(k+S)|0;E^=k;E=E>>>24|E<<8;I=(I+E)|0;S^=I;S=S>>>25|S<<7;b=(b+C)|0;j^=b;j=j>>>24|j<<8;D=(D+j)|0;C^=D;C=C>>>25|C<<7}Ca((b+o)|0,e,0);Ca((k+a)|0,e,4);Ca((w+r)|0,e,8);Ca((_+i)|0,e,12);Ca((x+s)|0,e,16);Ca((C+l)|0,e,20);Ca((S+c)|0,e,24);Ca((L+u)|0,e,28);Ca((M+d)|0,e,32);Ca((A+f)|0,e,36);Ca((D+v)|0,e,40);Ca((I+p)|0,e,44);Ca((E+h)|0,e,48);Ca((P+m)|0,e,52);Ca((T+y)|0,e,56);Ca((j+g)|0,e,60)};\n    var Ea=function(e,t,n){var o=1634760805,a=857760878,r=2036477234,i=1797285236;var s=e[3]<<24|e[2]<<16|e[1]<<8|e[0],l=e[7]<<24|e[6]<<16|e[5]<<8|e[4],c=e[11]<<24|e[10]<<16|e[9]<<8|e[8],u=e[15]<<24|e[14]<<16|e[13]<<8|e[12];var d=e[19]<<24|e[18]<<16|e[17]<<8|e[16],f=e[23]<<24|e[22]<<16|e[21]<<8|e[20],v=e[27]<<24|e[26]<<16|e[25]<<8|e[24],p=e[31]<<24|e[30]<<16|e[29]<<8|e[28];var h=t[3]<<24|t[2]<<16|t[1]<<8|t[0],m=t[7]<<24|t[6]<<16|t[5]<<8|t[4],y=t[11]<<24|t[10]<<16|t[9]<<8|t[8],g=t[15]<<24|t[14]<<16|t[13]<<8|t[12];for(var b=0;b<20;b+=2){o=(o+s)|0;h^=o;h=h>>>16|h<<16;d=(d+h)|0;s^=d;s=s>>>20|s<<12;a=(a+l)|0;m^=a;m=m>>>16|m<<16;f=(f+m)|0;l^=f;l=l>>>20|l<<12;r=(r+c)|0;y^=r;y=y>>>16|y<<16;v=(v+y)|0;c^=v;c=c>>>20|c<<12;i=(i+u)|0;g^=i;g=g>>>16|g<<16;p=(p+g)|0;u^=p;u=u>>>20|u<<12;r=(r+c)|0;y^=r;y=y>>>24|y<<8;v=(v+y)|0;c^=v;c=c>>>25|c<<7;i=(i+u)|0;g^=i;g=g>>>24|g<<8;p=(p+g)|0;u^=p;u=u>>>25|u<<7;a=(a+l)|0;m^=a;m=m>>>24|m<<8;f=(f+m)|0;l^=f;l=l>>>25|l<<7;o=(o+s)|0;h^=o;h=h>>>24|h<<8;d=(d+h)|0;s^=d;s=s>>>25|s<<7;o=(o+l)|0;g^=o;g=g>>>16|g<<16;v=(v+g)|0;l^=v;l=l>>>20|l<<12;a=(a+c)|0;h^=a;h=h>>>16|h<<16;p=(p+h)|0;c^=p;c=c>>>20|c<<12;r=(r+u)|0;m^=r;m=m>>>16|m<<16;d=(d+m)|0;u^=d;u=u>>>20|u<<12;i=(i+s)|0;y^=i;y=y>>>16|y<<16;f=(f+y)|0;s^=f;s=s>>>20|s<<12;r=(r+u)|0;m^=r;m=m>>>24|m<<8;d=(d+m)|0;u^=d;u=u>>>25|u<<7;i=(i+s)|0;y^=i;y=y>>>24|y<<8;f=(f+y)|0;s^=f;s=s>>>25|s<<7;a=(a+c)|0;h^=a;h=h>>>24|h<<8;p=(p+h)|0;c^=p;c=c>>>25|c<<7;o=(o+l)|0;g^=o;g=g>>>24|g<<8;v=(v+g)|0;l^=v;l=l>>>25|l<<7}Ca(o,n,0);Ca(a,n,4);Ca(r,n,8);Ca(i,n,12);Ca(h,n,16);Ca(m,n,20);Ca(y,n,24);Ca(g,n,28);return n};\n    var Aa=function(e,t,n,o,a){if(a===void 0)a=0;if(32!==e.length)throw new Error('key');if(o.length<n.length)throw new Error('dest');var r,i;if(0===a){if(8!==t.length&&12!==t.length)throw new Error('nonce');r=new Uint8Array(16);i=r.length-t.length;r.set(t,i)}else{if(16!==t.length)throw new Error('nonce2');r=t;i=a}var s=new Uint8Array(64);for(var l=0;l<n.length;l+=64){Ma(s,r,e);for(var c=l;c<l+64&&c<n.length;c++){o[c]=n[c]^s[c-l]}Ia(r,0,i)}La(s);if(0===a)La(r);return o};\n    var Da=function(e,t,n,o){if(o===void 0)o=0;La(n);return Aa(e,t,n,n,o)};\n    var Pa=function(key){this.digestLength=16;this._buffer=new Uint8Array(16);this._r=new Uint16Array(10);this._h=new Uint16Array(10);this._pad=new Uint16Array(8);this._leftover=0;this._fin=0;this._finished=false;var t=key[0]|key[1]<<8;this._r[0]=8191&t;var n=key[2]|key[3]<<8;this._r[1]=8191&(t>>>13|n<<3);var o=key[4]|key[5]<<8;this._r[2]=7939&(n>>>10|o<<6);var a=key[6]|key[7]<<8;this._r[3]=8191&(o>>>7|a<<9);var r=key[8]|key[9]<<8;this._r[4]=255&(a>>>4|r<<12);this._r[5]=(r>>>1)&8190;var i=key[10]|key[11]<<8;this._r[6]=8191&(r>>>14|i<<2);var s=key[12]|key[13]<<8;this._r[7]=8065&(i>>>11|s<<5);var l=key[14]|key[15]<<8;this._r[8]=8191&(s>>>8|l<<8);this._r[9]=(l>>>5)&127;this._pad[0]=key[16]|key[17]<<8;this._pad[1]=key[18]|key[19]<<8;this._pad[2]=key[20]|key[21]<<8;this._pad[3]=key[22]|key[23]<<8;this._pad[4]=key[24]|key[25]<<8;this._pad[5]=key[26]|key[27]<<8;this._pad[6]=key[28]|key[29]<<8;this._pad[7]=key[30]|key[31]<<8};\n    Pa.prototype._blocks=function(e,t,n){var o=this._fin?0:2048;var a=this._h[0],r=this._h[1],i=this._h[2],s=this._h[3];var l=this._h[4],c=this._h[5],u=this._h[6],d=this._h[7];var f=this._h[8],v=this._h[9];var p=this._r[0],h=this._r[1],m=this._r[2],y=this._r[3];var g=this._r[4],b=this._r[5],k=this._r[6],w=this._r[7];var _=this._r[8],x=this._r[9];for(;n>=16;){var C=e[t+0]|e[t+1]<<8;a+=8191&C;var S=e[t+2]|e[t+3]<<8;r+=8191&(C>>>13|S<<3);var L=e[t+4]|e[t+5]<<8;i+=8191&(S>>>10|L<<6);var M=e[t+6]|e[t+7]<<8;s+=8191&(L>>>7|M<<9);var A=e[t+8]|e[t+9]<<8;l+=8191&(M>>>4|A<<12);c+=(A>>>1)&8191;var D=e[t+10]|e[t+11]<<8;u+=8191&(A>>>14|D<<2);var I=e[t+12]|e[t+13]<<8;d+=8191&(D>>>11|I<<5);var E=e[t+14]|e[t+15]<<8;f+=8191&(I>>>8|E<<8);v+=(E>>>5)|o;var P=0,T=P;T+=a*p;T+=r*(5*x);T+=i*(5*_);T+=s*(5*w);T+=l*(5*k);P=T>>>13;T&=8191;T+=c*(5*b);T+=u*(5*g);T+=d*(5*y);T+=f*(5*m);T+=v*(5*h);P+=T>>>13;T&=8191;var j=P;j+=a*h;j+=r*p;j+=i*(5*x);j+=s*(5*_);j+=l*(5*w);P=j>>>13;j&=8191;j+=c*(5*k);j+=u*(5*b);j+=d*(5*g);j+=f*(5*y);j+=v*(5*m);P+=j>>>13;j&=8191;var R=P;R+=a*m;R+=r*h;R+=i*p;R+=s*(5*x);R+=l*(5*_);P=R>>>13;R&=8191;R+=c*(5*w);R+=u*(5*k);R+=d*(5*b);R+=f*(5*g);R+=v*(5*y);P+=R>>>13;R&=8191;var B=P;B+=a*y;B+=r*m;B+=i*h;B+=s*p;B+=l*(5*x);P=B>>>13;B&=8191;B+=c*(5*_);B+=u*(5*w);B+=d*(5*k);B+=f*(5*b);B+=v*(5*g);P+=B>>>13;B&=8191;var O=P;O+=a*g;O+=r*y;O+=i*m;O+=s*h;O+=l*p;P=O>>>13;O&=8191;O+=c*(5*x);O+=u*(5*_);O+=d*(5*w);O+=f*(5*k);O+=v*(5*b);P+=O>>>13;O&=8191;var U=P;U+=a*b;U+=r*g;U+=i*y;U+=s*m;U+=l*h;P=U>>>13;U&=8191;U+=c*p;U+=u*(5*x);U+=d*(5*_);U+=f*(5*w);U+=v*(5*k);P+=U>>>13;U&=8191;var N=P;N+=a*k;N+=r*b;N+=i*g;N+=s*y;N+=l*m;P=N>>>13;N&=8191;N+=c*h;N+=u*p;N+=d*(5*x);N+=f*(5*_);N+=v*(5*w);P+=N>>>13;N&=8191;var W=P;W+=a*w;W+=r*k;W+=i*b;W+=s*g;W+=l*y;P=W>>>13;W&=8191;W+=c*m;W+=u*h;W+=d*p;W+=f*(5*x);W+=v*(5*_);P+=W>>>13;W&=8191;var H=P;H+=a*_;H+=r*w;H+=i*k;H+=s*b;H+=l*g;P=H>>>13;H&=8191;H+=c*y;H+=u*m;H+=d*h;H+=f*p;H+=v*(5*x);P+=H>>>13;H&=8191;var V=P;V+=a*x;V+=r*_;V+=i*w;V+=s*k;V+=l*b;P=V>>>13;V&=8191;V+=c*g;V+=u*y;V+=d*m;V+=f*h;V+=v*p;P+=V>>>13;V&=8191;P=((P<<2)+P)|0;P=(P+T)|0;T=8191&P;P>>>=13;j+=P;a=T;r=j;i=R;s=B;l=O;c=U;u=N;d=W;f=H;v=V;t+=16;n-=16}this._h[0]=a;this._h[1]=r;this._h[2]=i;this._h[3]=s;this._h[4]=l;this._h[5]=c;this._h[6]=u;this._h[7]=d;this._h[8]=f;this._h[9]=v};\n    Pa.prototype.finish=function(e,t){if(t===void 0)t=0;var n=new Uint16Array(10),o,a,r,i;if(this._leftover){for(i=this._leftover,this._buffer[i++]=1;i<16;i++)this._buffer[i]=0;this._fin=1;this._blocks(this._buffer,0,16)}for(o=this._h[1]>>>13,this._h[1]&=8191,i=2;i<10;i++){this._h[i]+=o;o=this._h[i]>>>13;this._h[i]&=8191}this._h[0]+=5*o;o=this._h[0]>>>13;this._h[0]&=8191;this._h[1]+=o;o=this._h[1]>>>13;this._h[1]&=8191;this._h[2]+=o;n[0]=this._h[0]+5;o=n[0]>>>13;n[0]&=8191;for(i=1;i<10;i++){n[i]=this._h[i]+o;o=n[i]>>>13;n[i]&=8191}n[9]-=8192;a=(1^o)-1;for(i=0;i<10;i++)n[i]&=a;a=~a;for(i=0;i<10;i++)this._h[i]=this._h[i]&a|n[i];this._h[0]=65535&(this._h[0]|this._h[1]<<13);this._h[1]=65535&(this._h[1]>>>3|this._h[2]<<10);this._h[2]=65535&(this._h[2]>>>6|this._h[3]<<7);this._h[3]=65535&(this._h[3]>>>9|this._h[4]<<4);this._h[4]=65535&(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14);this._h[5]=65535&(this._h[6]>>>2|this._h[7]<<11);this._h[6]=65535&(this._h[7]>>>5|this._h[8]<<8);this._h[7]=65535&(this._h[8]>>>8|this._h[9]<<5);r=this._h[0]+this._pad[0];this._h[0]=65535&r;for(i=1;i<8;i++){r=((this._h[i]+this._pad[i])|0)+(r>>>16)|0;this._h[i]=65535&r}e[t+0]=this._h[0]>>>0;e[t+1]=this._h[0]>>>8;e[t+2]=this._h[1]>>>0;e[t+3]=this._h[1]>>>8;e[t+4]=this._h[2]>>>0;e[t+5]=this._h[2]>>>8;e[t+6]=this._h[3]>>>0;e[t+7]=this._h[3]>>>8;e[t+8]=this._h[4]>>>0;e[t+9]=this._h[4]>>>8;e[t+10]=this._h[5]>>>0;e[t+11]=this._h[5]>>>8;e[t+12]=this._h[6]>>>0;e[t+13]=this._h[6]>>>8;e[t+14]=this._h[7]>>>0;e[t+15]=this._h[7]>>>8;this._finished=true;return this};\n    Pa.prototype.update=function(e){var t,n=0,o=e.length;if(this._leftover){t=16-this._leftover;if(t>o)t=o;for(var a=0;a<t;a++)this._buffer[this._leftover+a]=e[n+a];o-=t;n+=t;this._leftover+=t;if(this._leftover<16)return this;this._blocks(this._buffer,0,16);this._leftover=0}if(o>=16){t=o-o%16;this._blocks(e,n,t);n+=t;o-=t}if(o){for(t=0;t<o;t++)this._buffer[this._leftover+t]=e[n+t];this._leftover+=o}return this};\n    Pa.prototype.digest=function(){if(this._finished)throw new Error('poly');var e=new Uint8Array(16);return this.finish(e),e};\n    Pa.prototype.clean=function(){La(this._buffer);La(this._r);La(this._h);La(this._pad);this._leftover=0;this._fin=0;this._finished=true;return this};\n    var ja=function(key){if(32!==key.length)throw new Error('key');this._key=new Uint8Array(key);this.nonceLength=12;this.tagLength=16};\n    ja.prototype._authenticate=function(e,t,n,o){var a=new Pa(t);if(o){a.update(o);if(o.length%16>0)a.update(Ta.subarray(o.length%16))}a.update(n);if(n.length%16>0)a.update(Ta.subarray(n.length%16));var r=new Uint8Array(8);if(o)Sa(o.length,r);a.update(r);Sa(n.length,r);a.update(r);var i=a.digest();for(var s=0;s<i.length;s++)e[s]=i[s];a.clean();La(i);La(r)};\n    ja.prototype.open=function(e,t,n,o){if(e.length>16)throw new Error('nonce');if(t.length<this.tagLength)return null;var a=new Uint8Array(16);a.set(e,a.length-e.length);var r=new Uint8Array(32);Da(this._key,a,r,4);var i=new Uint8Array(this.tagLength);this._authenticate(i,r,t.subarray(0,t.length-this.tagLength),n);if(!secureCompare(i,t.subarray(t.length-this.tagLength,t.length)))return null;var c=t.length-this.tagLength,u;if(o){if(o.length!==c)throw new Error('dest');u=o}else{u=new Uint8Array(c)}Aa(this._key,a,t.subarray(0,t.length-this.tagLength),u,4);La(a);return u};\n    ja.prototype.clean=function(){La(this._key);return this};\n    var Ra=function(key){if(32!==key.length)throw new Error('Xkey');this._key=new Uint8Array(key);this.nonceLength=24;this.tagLength=16};\n    Ra.prototype.open=function(e,t,n,o){if(24!==e.length)throw new Error('Xnonce');if(t.length<this.tagLength)return null;var a=Ea(this._key,e.subarray(0,16),new Uint8Array(32));var r=new Uint8Array(12);r.set(e.subarray(16),4);var i=new ja(a);var s=i.open(r,t,n,o);La(a);La(r);i.clean();return s};\n    Ra.prototype.clean=function(){La(this._key);return this};\n    \n    var utf8Decode = function(bytes) {\n        if (!bytes || bytes.length === 0) return '';\n        var encoded = '';\n        for (var i = 0; i < bytes.length; i++) {\n            var b = bytes[i] & 0xFF;\n            encoded += '%' + (b < 16 ? '0' : '') + b.toString(16);\n        }\n        try { return decodeURIComponent(encoded); } catch (e) {}\n        var str = '';\n        for (var j = 0; j < bytes.length; j++) str += String.fromCharCode(bytes[j] & 0xFF);\n        return str;\n    };\n\n    \/\/ ========== 主逻辑：先尝试解密，失败则从 HTML 中直接提取 ==========\n    try {\n        var raw = String(result);\n        \/\/ 如果是 HTML 页面，先提取 __NUXT_DATA__\n        var nuxtMatch = raw.match(\/id=\"__NUXT_DATA__\"[^>]*>([\\s\\S]+?)<\\\/script>\/);\n        if (nuxtMatch) raw = nuxtMatch[1];\n        \n        var payloadHex = null;\n        try { var j = JSON.parse(raw); payloadHex = j.payload || (j.data && j.data.payload); } catch (e) {}\n        if (!payloadHex) payloadHex = raw.trim();\n        if (!payloadHex || payloadHex.length < 30) throw 'no payload';\n        \n        var key = Ga(keyHex);\n        var buf = Ga(payloadHex);\n        var plain = null;\n        if (buf.length >= 29) {\n            var nonce12 = buf.subarray(1, 13);\n            var ct12 = buf.subarray(13, buf.length - 16);\n            var mac16 = buf.subarray(buf.length - 16);\n            var full12 = new Uint8Array(ct12.length + 16);\n            full12.set(ct12); full12.set(mac16, ct12.length);\n            var jc = new ja(key);\n            plain = jc.open(nonce12, full12, null, null);\n            jc.clean();\n        }\n        if (!plain && buf.length >= 41) {\n            var nonce24 = buf.subarray(1, 25);\n            var ct24 = buf.subarray(25, buf.length - 16);\n            var mac24 = buf.subarray(buf.length - 16);\n            var full24 = new Uint8Array(ct24.length + 16);\n            full24.set(ct24); full24.set(mac24, ct24.length);\n            var xc = new Ra(key);\n            plain = xc.open(nonce24, full24, null, null);\n            xc.clean();\n        }\n        if (!plain) throw 'decrypt fail';\n        \n        var txt = utf8Decode(plain);\n        var data = JSON.parse(txt);\n        var list = data.data || data.list || data;\n        if (list && list.searchResults && Array.isArray(list.searchResults)) list = list.searchResults;\n        if (!Array.isArray(list)) list = [];\n        return list;\n    } catch (e) {\n        \/\/ 备用方案：直接解析 __NUXT_DATA__ 中的指针结构（无需解密）\n        try {\n            var html = String(result);\n            var match = html.match(\/id=\"__NUXT_DATA__\"[^>]*>([\\s\\S]+?)<\\\/script>\/);\n            if (!match) return [];\n            var data = JSON.parse(match[1]);\n            var bookIndices = [];\n            for (var i = 0; i < data.length; i++) {\n                if (data[i] && typeof data[i] === 'object' && data[i].list !== undefined && Array.isArray(data[data[i].list])) {\n                    bookIndices = data[data[i].list];\n                    break;\n                }\n            }\n            return bookIndices.map(function(idx) {\n                var item = data[idx];\n                if (!item) return null;\n                return {\n                    title: data[item.title] || \"\",\n                    author: data[item.author] || data[item.teller] || \"未知\",\n                    desc: data[item.desc] || \"\",\n                    cover: data[item.cover] || \"\",\n                    cat: data[item.categoryName] || \"\",\n                    status: item.status === 1 ? \"连载\" : \"完结\",\n                    count: (item.chapterTotal || \"\") + \"期\",\n                    url: \"\/albums\/\" + data[item.id]\n                };\n            }).filter(function(b) { return b !== null; });\n        } catch (e2) {\n            return [];\n        }\n    }\n})()","ruleContent":"@js:\n(function() {\n    var raw = String(result);\n    var m = raw.match(\/id=\"__NUXT_DATA__\"[^>]*>([\\s\\S]+?)<\\\/script>\/);\n    if (!m) return raw;\n\n    var d = JSON.parse(m[1]);\n    var album = null, tracksArr = [];\n    var currentAudio = \"\";\n\n    for (var i = 0; i < d.length; i++) {\n        if (typeof d[i] === 'string' && (d[i].indexOf('.m4a') > -1 || d[i].indexOf('.mp3') > -1)) {\n            currentAudio = d[i];\n        }\n        if (d[i] && typeof d[i] === 'object' && d[i].synopsis !== undefined) album = d[i];\n        if (Array.isArray(d[i]) && d[i].length > 0 && typeof d[i][0] === 'number') {\n            var first = d[d[i][0]];\n            if (first && typeof first === 'object' && first.duration !== undefined) tracksArr = d[i];\n        }\n    }\n\n    if (!currentAudio) {\n        var am = raw.match(\/<audio[^>]+src=[\"']([^\"']+)[\"']\/i);\n        if (am) currentAudio = am[1];\n    }\n\n    var v = function(idx) { return d[idx] !== undefined ? d[idx] : \"未知\"; };\n    var albumId = album ? (d[album.id] || album.id) : \"\";\n    var title = album ? v(album.title) : \"未知\";\n    var cover = album ? v(album.cover_url) : \"\";\n    var type = album ? (v(album.type) || v(album.cat)) : \"未知\";\n    var count = album ? v(album.count) : \"未知\";\n    var update = album ? v(album.updated_at) : \"未知\";\n    var intro = album ? v(album.synopsis) : \"暂无简介\";\n    var author = album ? (v(album.author) || v(album.teller)) : \"佚名\";\n\n    var html = `\n    <!DOCTYPE html><html><head>\n    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'>\n    <style>\n        body { background: #121212; color: #eee; font-family: sans-serif; margin: 0; padding: 0; padding-bottom: 50px; }\n        .container { padding: 15px; }\n        .header { display: flex; gap: 15px; margin-bottom: 20px; }\n        .cover { width: 100px; height: 133px; border-radius: 8px; object-fit: cover; box-shadow: 0 4px 10px rgba(0,0,0,0.5); flex-shrink: 0; }\n        .title-area { display: flex; flex-direction: column; justify-content: center; }\n        .title { font-size: 20px; font-weight: bold; margin-bottom: 10px; color: #fff; line-height: 1.3; }\n        .author { font-size: 14px; color: #aaa; }\n        .meta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; font-size: 13px; color: #999; margin-bottom: 20px; }\n        .intro { font-size: 14px; line-height: 1.6; color: #bbb; text-align: justify; margin-bottom: 20px; border-top: 1px solid #222; border-bottom: 1px solid #222; padding: 15px 0; }\n        \n        .hist-banner { display: flex; justify-content: space-between; align-items: center; background: rgba(255,152,0,0.1); border: 1px solid rgba(255,152,0,0.3); padding: 12px 15px; border-radius: 8px; margin-bottom: 15px; font-size: 14px; color: #ff9800; }\n        .hist-banner .hist-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 65%; font-weight: 500; }\n        .hist-btn { background: linear-gradient(90deg, #ff9800, #f39c12); color: #fff; border: none; padding: 6px 14px; border-radius: 20px; font-size: 13px; cursor: pointer; font-weight: bold; flex-shrink: 0; box-shadow: 0 2px 6px rgba(255,152,0,0.3); }\n        \n        .player-wrap { margin-bottom: 20px; background: #1e1e1e; padding: 15px; border-radius: 8px; border: 1px solid #333; box-shadow: 0 4px 12px rgba(0,0,0,0.3); }\n        .current-track-title { font-size: 15px; color: #ff9800; text-align: center; margin-bottom: 12px; font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n        audio { width: 100%; height: 42px; outline: none; }\n        .player-controls { display: flex; justify-content: space-between; gap: 15px; margin-top: 15px; }\n        .nav-btn { flex: 1; background: #2c2c2c; color: #ddd; border: 1px solid #444; padding: 10px; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: 0.2s; }\n        .nav-btn:active { background: #444; }\n        .nav-btn:disabled { opacity: 0.3; pointer-events: none; }\n\n        .ctrl-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }\n        .ctrl-title { font-size: 16px; font-weight: bold; }\n        .sort-btn { font-size: 13px; color: #ff9800; background: rgba(255,152,0,0.1); border: 1px solid rgba(255,152,0,0.3); padding: 5px 12px; border-radius: 12px; cursor: pointer; display: flex; align-items: center; gap: 4px; }\n        .track-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }\n        .track-btn { background: #1e1e1e; border: 1px solid #333; color: #ccc; border-radius: 6px; padding: 12px 5px; text-align: center; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }\n        .track-btn.active { color: #ff9800; border-color: #ff9800; background: rgba(255,152,0,0.1); }\n        .track-btn.loading { opacity: 0.5; pointer-events: none; }\n    <\/style><\/head><body><div class='container'>\n    <div class='header'>\n    ${cover ? \"<img class='cover' src='\" + cover + \"'>\" : \"\"}\n    <div class='title-area'>\n        <div class='title'>${title}<\/div>\n        <div class='author'>👨‍💻 作者：${author}<\/div>\n    <\/div><\/div>\n    <div class='meta-grid'>\n        <div>📅 年份：2026<\/div>\n        <div>📦 类型：${type}<\/div>\n        <div>🗺️ 地区：大陆<\/div>\n        <div>🎙️ 语言：国语<\/div>\n        <div>📚 状态：第${count}集<\/div>\n        <div>🧡 人气：24520<\/div>\n        <div style='grid-column: 1 \/ -1;'>⌚ 更新：${update}<\/div>\n    <\/div>\n    <div class='intro'>📋 简介：${intro}<\/div>\n    \n    <div id='history-wrap'><\/div>\n    \n    <div class='player-wrap'>\n        <div id='current-track-title' class='current-track-title'>未在播放<\/div>\n        <audio id='audio-player' controls autoplay src='${currentAudio}'><\/audio>\n        <div class='player-controls'>\n            <button class='nav-btn' id='btn-prev' disabled>⏮ 上一集<\/button>\n            <button class='nav-btn' id='btn-next' disabled>下一集 ⏭<\/button>\n        <\/div>\n    <\/div>\n    \n    <div class='ctrl-bar'>\n        <div class='ctrl-title'> 🎵目录 (${tracksArr.length}集)<\/div>\n        <div class='sort-btn' id='sort-btn'><span>↕<\/span> 正\/倒序<\/div>\n    <\/div>\n    <div class='track-grid' id='track-grid'><\/div>\n    <\/div>\n    \n    <script>\n    var keyHex = 'ea9d9d4f9a983fe6f6382f29c7b46b8d6dc47abc6da36662e6ddff8c78902f65';\n    var TYFM_DFP_LIST = [];\n    var Ca=function(e,t,n){if(!t)t=new Uint8Array(4);if(n===void 0)n=0;t[n+0]=e>>>0;t[n+1]=e>>>8;t[n+2]=e>>>16;t[n+3]=e>>>24;return t};\n    var Sa=function(e,t,n){if(!t)t=new Uint8Array(8);if(n===void 0)n=0;Ca(e>>>0,t,n);Ca((e\/4294967296)>>>0,t,n+4);return t};\n    var La=function(e){for(var t=0;t<e.length;t++)e[t]=0;return e};\n    var Ia=function(e,t,n){var o=1;for(;n--;){o=(o+(255&e[t]))|0;e[t]=255&o;o>>>=8;t++}if(o>0)throw new Error('overflow')};\n    var Ta=new Uint8Array(16);\n    var Ga=function(e){var t=new Uint8Array(e.length\/2);for(var n=0;n<t.length;n++){t[n]=parseInt(e.slice(2*n,2*n+2),16)}return t};\n    var secureCompare=function(e,t){if(e.length!==t.length)return false;var n=0;for(var o=0;o<e.length;o++)n|=e[o]^t[o];return(1&((n-1)>>>8))!==0};\n    var Ma=function(e,t,n){var o=1634760805,a=857760878,r=2036477234,i=1797285236;var s=n[3]<<24|n[2]<<16|n[1]<<8|n[0],l=n[7]<<24|n[6]<<16|n[5]<<8|n[4],c=n[11]<<24|n[10]<<16|n[9]<<8|n[8],u=n[15]<<24|n[14]<<16|n[13]<<8|n[12];var d=n[19]<<24|n[18]<<16|n[17]<<8|n[16],f=n[23]<<24|n[22]<<16|n[21]<<8|n[20],v=n[27]<<24|n[26]<<16|n[25]<<8|n[24],p=n[31]<<24|n[30]<<16|n[29]<<8|n[28];var h=t[3]<<24|t[2]<<16|t[1]<<8|t[0],m=t[7]<<24|t[6]<<16|t[5]<<8|t[4],y=t[11]<<24|t[10]<<16|t[9]<<8|t[8],g=t[15]<<24|t[14]<<16|t[13]<<8|t[12];var b=o,k=a,w=r,_=i,x=s,C=l,S=c,L=u,M=d,A=f,D=v,I=p,E=h,P=m,T=y,j=g;for(var R=0;R<20;R+=2){b=(b+x)|0;E^=b;E=E>>>16|E<<16;M=(M+E)|0;x^=M;x=x>>>20|x<<12;k=(k+C)|0;P^=k;P=P>>>16|P<<16;A=(A+P)|0;C^=A;C=C>>>20|C<<12;w=(w+S)|0;T^=w;T=T>>>16|T<<16;D=(D+T)|0;S^=D;S=S>>>20|S<<12;_=(_+L)|0;j^=_;j=j>>>16|j<<16;I=(I+j)|0;L^=I;L=L>>>20|L<<12;w=(w+S)|0;T^=w;T=T>>>24|T<<8;D=(D+T)|0;S^=D;S=S>>>25|S<<7;_=(_+L)|0;j^=_;j=j>>>24|j<<8;I=(I+j)|0;L^=I;L=L>>>25|L<<7;k=(k+C)|0;P^=k;P=P>>>24|P<<8;A=(A+P)|0;C^=A;C=C>>>25|C<<7;b=(b+x)|0;E^=b;E=E>>>24|E<<8;M=(M+E)|0;x^=M;x=x>>>25|x<<7;b=(b+C)|0;j^=b;j=j>>>16|j<<16;D=(D+j)|0;C^=D;C=C>>>20|C<<12;k=(k+S)|0;E^=k;E=E>>>16|E<<16;I=(I+E)|0;S^=I;S=S>>>20|S<<12;w=(w+L)|0;P^=w;P=P>>>16|P<<16;M=(M+P)|0;L^=M;L=L>>>20|L<<12;_=(_+x)|0;T^=_;T=T>>>16|T<<16;A=(A+T)|0;x^=A;x=x>>>20|x<<12;w=(w+L)|0;P^=w;P=P>>>24|P<<8;M=(M+P)|0;L^=M;L=L>>>25|L<<7;_=(_+x)|0;T^=_;T=T>>>24|T<<8;A=(A+T)|0;x^=A;x=x>>>25|x<<7;k=(k+S)|0;E^=k;E=E>>>24|E<<8;I=(I+E)|0;S^=I;S=S>>>25|S<<7;b=(b+C)|0;j^=b;j=j>>>24|j<<8;D=(D+j)|0;C^=D;C=C>>>25|C<<7}Ca((b+o)|0,e,0);Ca((k+a)|0,e,4);Ca((w+r)|0,e,8);Ca((_+i)|0,e,12);Ca((x+s)|0,e,16);Ca((C+l)|0,e,20);Ca((S+c)|0,e,24);Ca((L+u)|0,e,28);Ca((M+d)|0,e,32);Ca((A+f)|0,e,36);Ca((D+v)|0,e,40);Ca((I+p)|0,e,44);Ca((E+h)|0,e,48);Ca((P+m)|0,e,52);Ca((T+y)|0,e,56);Ca((j+g)|0,e,60)};\n    var Ea=function(e,t,n){var o=1634760805,a=857760878,r=2036477234,i=1797285236;var s=e[3]<<24|e[2]<<16|e[1]<<8|e[0],l=e[7]<<24|e[6]<<16|e[5]<<8|e[4],c=e[11]<<24|e[10]<<16|e[9]<<8|e[8],u=e[15]<<24|e[14]<<16|e[13]<<8|e[12];var d=e[19]<<24|e[18]<<16|e[17]<<8|e[16],f=e[23]<<24|e[22]<<16|e[21]<<8|e[20],v=e[27]<<24|e[26]<<16|e[25]<<8|e[24],p=e[31]<<24|e[30]<<16|e[29]<<8|e[28];var h=t[3]<<24|t[2]<<16|t[1]<<8|t[0],m=t[7]<<24|t[6]<<16|t[5]<<8|t[4],y=t[11]<<24|t[10]<<16|t[9]<<8|t[8],g=t[15]<<24|t[14]<<16|t[13]<<8|t[12];for(var b=0;b<20;b+=2){o=(o+s)|0;h^=o;h=h>>>16|h<<16;d=(d+h)|0;s^=d;s=s>>>20|s<<12;a=(a+l)|0;m^=a;m=m>>>16|m<<16;f=(f+m)|0;l^=f;l=l>>>20|l<<12;r=(r+c)|0;y^=r;y=y>>>16|y<<16;v=(v+y)|0;c^=v;c=c>>>20|c<<12;i=(i+u)|0;g^=i;g=g>>>16|g<<16;p=(p+g)|0;u^=p;u=u>>>20|u<<12;r=(r+c)|0;y^=r;y=y>>>24|y<<8;v=(v+y)|0;c^=v;c=c>>>25|c<<7;i=(i+u)|0;g^=i;g=g>>>24|g<<8;p=(p+g)|0;u^=p;u=u>>>25|u<<7;a=(a+l)|0;m^=a;m=m>>>24|m<<8;f=(f+m)|0;l^=f;l=l>>>25|l<<7;o=(o+s)|0;h^=o;h=h>>>24|h<<8;d=(d+h)|0;s^=d;s=s>>>25|s<<7;o=(o+l)|0;g^=o;g=g>>>16|g<<16;v=(v+g)|0;l^=v;l=l>>>20|l<<12;a=(a+c)|0;h^=a;h=h>>>16|h<<16;p=(p+h)|0;c^=p;c=c>>>20|c<<12;r=(r+u)|0;m^=r;m=m>>>16|m<<16;d=(d+m)|0;u^=d;u=u>>>20|u<<12;i=(i+s)|0;y^=i;y=y>>>16|y<<16;f=(f+y)|0;s^=f;s=s>>>20|s<<12;r=(r+u)|0;m^=r;m=m>>>24|m<<8;d=(d+m)|0;u^=d;u=u>>>25|u<<7;i=(i+s)|0;y^=i;y=y>>>24|y<<8;f=(f+y)|0;s^=f;s=s>>>25|s<<7;a=(a+c)|0;h^=a;h=h>>>24|h<<8;p=(p+h)|0;c^=p;c=c>>>25|c<<7;o=(o+l)|0;g^=o;g=g>>>24|g<<8;v=(v+g)|0;l^=v;l=l>>>25|l<<7}Ca(o,n,0);Ca(a,n,4);Ca(r,n,8);Ca(i,n,12);Ca(h,n,16);Ca(m,n,20);Ca(y,n,24);Ca(g,n,28);return n};\n    var Aa=function(e,t,n,o,a){if(a===void 0)a=0;if(32!==e.length)throw new Error('key');if(o.length<n.length)throw new Error('dest');var r,i;if(0===a){if(8!==t.length&&12!==t.length)throw new Error('nonce');r=new Uint8Array(16);i=r.length-t.length;r.set(t,i)}else{if(16!==t.length)throw new Error('nonce2');r=t;i=a}var s=new Uint8Array(64);for(var l=0;l<n.length;l+=64){Ma(s,r,e);for(var c=l;c<l+64&&c<n.length;c++){o[c]=n[c]^s[c-l]}Ia(r,0,i)}La(s);if(0===a)La(r);return o};\n    var Da=function(e,t,n,o){if(o===void 0)o=0;La(n);return Aa(e,t,n,n,o)};\n    var Pa=function(key){this.digestLength=16;this._buffer=new Uint8Array(16);this._r=new Uint16Array(10);this._h=new Uint16Array(10);this._pad=new Uint16Array(8);this._leftover=0;this._fin=0;this._finished=false;var t=key[0]|key[1]<<8;this._r[0]=8191&t;var n=key[2]|key[3]<<8;this._r[1]=8191&(t>>>13|n<<3);var o=key[4]|key[5]<<8;this._r[2]=7939&(n>>>10|o<<6);var a=key[6]|key[7]<<8;this._r[3]=8191&(o>>>7|a<<9);var r=key[8]|key[9]<<8;this._r[4]=255&(a>>>4|r<<12);this._r[5]=(r>>>1)&8190;var i=key[10]|key[11]<<8;this._r[6]=8191&(r>>>14|i<<2);var s=key[12]|key[13]<<8;this._r[7]=8065&(i>>>11|s<<5);var l=key[14]|key[15]<<8;this._r[8]=8191&(s>>>8|l<<8);this._r[9]=(l>>>5)&127;this._pad[0]=key[16]|key[17]<<8;this._pad[1]=key[18]|key[19]<<8;this._pad[2]=key[20]|key[21]<<8;this._pad[3]=key[22]|key[23]<<8;this._pad[4]=key[24]|key[25]<<8;this._pad[5]=key[26]|key[27]<<8;this._pad[6]=key[28]|key[29]<<8;this._pad[7]=key[30]|key[31]<<8};\n    Pa.prototype._blocks=function(e,t,n){var o=this._fin?0:2048;var a=this._h[0],r=this._h[1],i=this._h[2],s=this._h[3];var l=this._h[4],c=this._h[5],u=this._h[6],d=this._h[7];var f=this._h[8],v=this._h[9];var p=this._r[0],h=this._r[1],m=this._r[2],y=this._r[3];var g=this._r[4],b=this._r[5],k=this._r[6],w=this._r[7];var _=this._r[8],x=this._r[9];for(;n>=16;){var C=e[t+0]|e[t+1]<<8;a+=8191&C;var S=e[t+2]|e[t+3]<<8;r+=8191&(C>>>13|S<<3);var L=e[t+4]|e[t+5]<<8;i+=8191&(S>>>10|L<<6);var M=e[t+6]|e[t+7]<<8;s+=8191&(L>>>7|M<<9);var A=e[t+8]|e[t+9]<<8;l+=8191&(M>>>4|A<<12);c+=(A>>>1)&8191;var D=e[t+10]|e[t+11]<<8;u+=8191&(A>>>14|D<<2);var I=e[t+12]|e[t+13]<<8;d+=8191&(D>>>11|I<<5);var E=e[t+14]|e[t+15]<<8;f+=8191&(I>>>8|E<<8);v+=(E>>>5)|o;var P=0,T=P;T+=a*p;T+=r*(5*x);T+=i*(5*_);T+=s*(5*w);T+=l*(5*k);P=T>>>13;T&=8191;T+=c*(5*b);T+=u*(5*g);T+=d*(5*y);T+=f*(5*m);T+=v*(5*h);P+=T>>>13;T&=8191;var j=P;j+=a*h;j+=r*p;j+=i*(5*x);j+=s*(5*_);j+=l*(5*w);P=j>>>13;j&=8191;j+=c*(5*k);j+=u*(5*b);j+=d*(5*g);j+=f*(5*y);j+=v*(5*m);P+=j>>>13;j&=8191;var R=P;R+=a*m;R+=r*h;R+=i*p;R+=s*(5*x);R+=l*(5*_);P=R>>>13;R&=8191;R+=c*(5*w);R+=u*(5*k);R+=d*(5*b);R+=f*(5*g);R+=v*(5*y);P+=R>>>13;R&=8191;var B=P;B+=a*y;B+=r*m;B+=i*h;B+=s*p;B+=l*(5*x);P=B>>>13;B&=8191;B+=c*(5*_);B+=u*(5*w);B+=d*(5*k);B+=f*(5*b);B+=v*(5*g);P+=B>>>13;B&=8191;var O=P;O+=a*g;O+=r*y;O+=i*m;O+=s*h;O+=l*p;P=O>>>13;O&=8191;O+=c*(5*x);O+=u*(5*_);O+=d*(5*w);O+=f*(5*k);O+=v*(5*b);P+=O>>>13;O&=8191;var U=P;U+=a*b;U+=r*g;U+=i*y;U+=s*m;U+=l*h;P=U>>>13;U&=8191;U+=c*p;U+=u*(5*x);U+=d*(5*_);U+=f*(5*w);U+=v*(5*k);P+=U>>>13;U&=8191;var N=P;N+=a*k;N+=r*b;N+=i*g;N+=s*y;N+=l*m;P=N>>>13;N&=8191;N+=c*h;N+=u*p;N+=d*(5*x);N+=f*(5*_);N+=v*(5*w);P+=N>>>13;N&=8191;var W=P;W+=a*w;W+=r*k;W+=i*b;W+=s*g;W+=l*y;P=W>>>13;W&=8191;W+=c*m;W+=u*h;W+=d*p;W+=f*(5*x);W+=v*(5*_);P+=W>>>13;W&=8191;var H=P;H+=a*_;H+=r*w;H+=i*k;H+=s*b;H+=l*g;P=H>>>13;H&=8191;H+=c*y;H+=u*m;H+=d*h;H+=f*p;H+=v*(5*x);P+=H>>>13;H&=8191;var V=P;V+=a*x;V+=r*_;V+=i*w;V+=s*k;V+=l*b;P=V>>>13;V&=8191;V+=c*g;V+=u*y;V+=d*m;V+=f*h;V+=v*p;P+=V>>>13;V&=8191;P=((P<<2)+P)|0;P=(P+T)|0;T=8191&P;P>>>=13;j+=P;a=T;r=j;i=R;s=B;l=O;c=U;u=N;d=W;f=H;v=V;t+=16;n-=16}this._h[0]=a;this._h[1]=r;this._h[2]=i;this._h[3]=s;this._h[4]=l;this._h[5]=c;this._h[6]=u;this._h[7]=d;this._h[8]=f;this._h[9]=v};\n    Pa.prototype.finish=function(e,t){if(t===void 0)t=0;var n=new Uint16Array(10),o,a,r,i;if(this._leftover){for(i=this._leftover,this._buffer[i++]=1;i<16;i++)this._buffer[i]=0;this._fin=1;this._blocks(this._buffer,0,16)}for(o=this._h[1]>>>13,this._h[1]&=8191,i=2;i<10;i++){this._h[i]+=o;o=this._h[i]>>>13;this._h[i]&=8191}this._h[0]+=5*o;o=this._h[0]>>>13;this._h[0]&=8191;this._h[1]+=o;o=this._h[1]>>>13;this._h[1]&=8191;this._h[2]+=o;n[0]=this._h[0]+5;o=n[0]>>>13;n[0]&=8191;for(i=1;i<10;i++){n[i]=this._h[i]+o;o=n[i]>>>13;n[i]&=8191}n[9]-=8192;a=(1^o)-1;for(i=0;i<10;i++)n[i]&=a;a=~a;for(i=0;i<10;i++)this._h[i]=this._h[i]&a|n[i];this._h[0]=65535&(this._h[0]|this._h[1]<<13);this._h[1]=65535&(this._h[1]>>>3|this._h[2]<<10);this._h[2]=65535&(this._h[2]>>>6|this._h[3]<<7);this._h[3]=65535&(this._h[3]>>>9|this._h[4]<<4);this._h[4]=65535&(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14);this._h[5]=65535&(this._h[6]>>>2|this._h[7]<<11);this._h[6]=65535&(this._h[7]>>>5|this._h[8]<<8);this._h[7]=65535&(this._h[8]>>>8|this._h[9]<<5);r=this._h[0]+this._pad[0];this._h[0]=65535&r;for(i=1;i<8;i++){r=((this._h[i]+this._pad[i])|0)+(r>>>16)|0;this._h[i]=65535&r}e[t+0]=this._h[0]>>>0;e[t+1]=this._h[0]>>>8;e[t+2]=this._h[1]>>>0;e[t+3]=this._h[1]>>>8;e[t+4]=this._h[2]>>>0;e[t+5]=this._h[2]>>>8;e[t+6]=this._h[3]>>>0;e[t+7]=this._h[3]>>>8;e[t+8]=this._h[4]>>>0;e[t+9]=this._h[4]>>>8;e[t+10]=this._h[5]>>>0;e[t+11]=this._h[5]>>>8;e[t+12]=this._h[6]>>>0;e[t+13]=this._h[6]>>>8;e[t+14]=this._h[7]>>>0;e[t+15]=this._h[7]>>>8;this._finished=true;return this};\n    Pa.prototype.update=function(e){var t,n=0,o=e.length;if(this._leftover){t=16-this._leftover;if(t>o)t=o;for(var a=0;a<t;a++)this._buffer[this._leftover+a]=e[n+a];o-=t;n+=t;this._leftover+=t;if(this._leftover<16)return this;this._blocks(this._buffer,0,16);this._leftover=0}if(o>=16){t=o-o%16;this._blocks(e,n,t);n+=t;o-=t}if(o){for(t=0;t<o;t++)this._buffer[this._leftover+t]=e[n+t];this._leftover+=o}return this};\n    Pa.prototype.digest=function(){if(this._finished)throw new Error('poly');var e=new Uint8Array(16);return this.finish(e),e};\n    Pa.prototype.clean=function(){La(this._buffer);La(this._r);La(this._h);La(this._pad);this._leftover=0;this._fin=0;this._finished=true;return this};\n    var ja=function(key){if(32!==key.length)throw new Error('key');this._key=new Uint8Array(key);this.nonceLength=12;this.tagLength=16};\n    ja.prototype._authenticate=function(e,t,n,o){var a=new Pa(t);if(o){a.update(o);if(o.length%16>0)a.update(Ta.subarray(o.length%16))}a.update(n);if(n.length%16>0)a.update(Ta.subarray(n.length%16));var r=new Uint8Array(8);if(o)Sa(o.length,r);a.update(r);Sa(n.length,r);a.update(r);var i=a.digest();for(var s=0;s<i.length;s++)e[s]=i[s];a.clean();La(i);La(r)};\n    ja.prototype.open=function(e,t,n,o){if(e.length>16)throw new Error('nonce');if(t.length<this.tagLength)return null;var a=new Uint8Array(16);a.set(e,a.length-e.length);var r=new Uint8Array(32);Da(this._key,a,r,4);var i=new Uint8Array(this.tagLength);this._authenticate(i,r,t.subarray(0,t.length-this.tagLength),n);if(!secureCompare(i,t.subarray(t.length-this.tagLength,t.length)))return null;var c=t.length-this.tagLength,u;if(o){if(o.length!==c)throw new Error('dest');u=o}else{u=new Uint8Array(c)}Aa(this._key,a,t.subarray(0,t.length-this.tagLength),u,4);La(a);return u};\n    ja.prototype.clean=function(){La(this._key);return this};\n    var Ra=function(key){if(32!==key.length)throw new Error('Xkey');this._key=new Uint8Array(key);this.nonceLength=24;this.tagLength=16};\n    Ra.prototype.open=function(e,t,n,o){if(24!==e.length)throw new Error('Xnonce');if(t.length<this.tagLength)return null;var a=Ea(this._key,e.subarray(0,16),new Uint8Array(32));var r=new Uint8Array(12);r.set(e.subarray(16),4);var i=new ja(a);var s=i.open(r,t,n,o);La(a);La(r);i.clean();return s};\n    Ra.prototype.clean=function(){La(this._key);return this};\n    var utf8Decode = function(bytes) {\n        if (!bytes || bytes.length === 0) return '';\n        var encoded = '';\n        for (var i = 0; i < bytes.length; i++) {\n            var b = bytes[i] & 0xFF;\n            encoded += '%' + (b < 16 ? '0' : '') + b.toString(16);\n        }\n        try { return decodeURIComponent(encoded); } catch (e) {}\n        var str = '';\n        for (var j = 0; j < bytes.length; j++) str += String.fromCharCode(bytes[j] & 0xFF);\n        return str;\n    };\n    function Ha(e) {\n        var t = \"\";\n        for (var n = 0; n < e.length; n++) {\n            var h = e[n].toString(16);\n            t += h.length < 2 ? \"0\" + h : h;\n        }\n        return t;\n    }\n    var GCM = (function() {\n      var SBOX = [\n        0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,\n        0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,\n        0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,\n        0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,\n        0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,\n        0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,\n        0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,\n        0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,\n        0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,\n        0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,\n        0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,\n        0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,\n        0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,\n        0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,\n        0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,\n        0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16\n      ];\n      var RCON = [0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1b,0x36];\n      function mul(a, b) { var r = 0; for (var i = 0; i < 8; i++) { if (b & 1) r ^= a; var hi = a & 0x80; a = (a << 1) & 0xff; if (hi) a ^= 0x1b; b >>= 1; } return r; }\n      function expandKey(key) {\n        var Nk = key.length \/ 4, Nr = Nk + 6;\n        var total = 4 * (Nr + 1), w = new Uint8Array(total * 4), i;\n        for (i = 0; i < Nk * 4; i++) w[i] = key[i];\n        var rconIdx = 0;\n        for (i = Nk; i < total; i++) {\n          var t0 = w[(i-1)*4], t1 = w[(i-1)*4+1], t2 = w[(i-1)*4+2], t3 = w[(i-1)*4+3];\n          if (i % Nk === 0) {\n            var tmp = t0; t0 = t1; t1 = t2; t2 = t3; t3 = tmp;\n            t0 = SBOX[t0] ^ RCON[rconIdx]; t1 = SBOX[t1]; t2 = SBOX[t2]; t3 = SBOX[t3];\n            rconIdx++;\n          } else if (Nk > 6 && i % Nk === 4) {\n            t0 = SBOX[t0]; t1 = SBOX[t1]; t2 = SBOX[t2]; t3 = SBOX[t3];\n          }\n          w[i*4] = w[(i-Nk)*4] ^ t0; w[i*4+1] = w[(i-Nk)*4+1] ^ t1; w[i*4+2] = w[(i-Nk)*4+2] ^ t2; w[i*4+3] = w[(i-Nk)*4+3] ^ t3;\n        }\n        return w;\n      }\n      function encryptBlock(key, block) {\n        var Nr = key.length \/ 4 + 6, w = expandKey(key), s = new Uint8Array(16), i, round, c, r;\n        for (i = 0; i < 16; i++) s[i] = block[i];\n        for (i = 0; i < 16; i++) s[i] ^= w[i];\n        for (round = 1; round < Nr; round++) {\n          for (i = 0; i < 16; i++) s[i] = SBOX[s[i]];\n          var t = new Uint8Array(16);\n          for (r = 0; r < 4; r++) for (c = 0; c < 4; c++) t[r + 4*c] = s[r + 4*((c + r) % 4)];\n          for (i = 0; i < 16; i++) s[i] = t[i];\n          for (c = 0; c < 4; c++) {\n            var a0 = s[0+4*c], a1 = s[1+4*c], a2 = s[2+4*c], a3 = s[3+4*c];\n            s[0+4*c] = mul(a0,2) ^ mul(a1,3) ^ a2 ^ a3;\n            s[1+4*c] = a0 ^ mul(a1,2) ^ mul(a2,3) ^ a3;\n            s[2+4*c] = a0 ^ a1 ^ mul(a2,2) ^ mul(a3,3);\n            s[3+4*c] = mul(a0,3) ^ a1 ^ a2 ^ mul(a3,2);\n          }\n          var off = round * 16;\n          for (i = 0; i < 16; i++) s[i] ^= w[off + i];\n        }\n        for (i = 0; i < 16; i++) s[i] = SBOX[s[i]];\n        var t2 = new Uint8Array(16);\n        for (r = 0; r < 4; r++) for (c = 0; c < 4; c++) t2[r + 4*c] = s[r + 4*((c + r) % 4)];\n        for (i = 0; i < 16; i++) s[i] = t2[i];\n        var off2 = Nr * 16;\n        for (i = 0; i < 16; i++) s[i] ^= w[off2 + i];\n        return s;\n      }\n      function gf128Mul(x, y) {\n        var Z = new Uint8Array(16), V = new Uint8Array(16), i, j, k;\n        for (i = 0; i < 16; i++) V[i] = y[i];\n        for (i = 0; i < 128; i++) {\n          if ((x[i >> 3] >> (7 - (i & 7))) & 1) for (j = 0; j < 16; j++) Z[j] ^= V[j];\n          var lsb = V[15] & 1, carry = 0;\n          for (k = 0; k < 16; k++) { var nv = (V[k] >> 1) | (carry << 7); carry = V[k] & 1; V[k] = nv; }\n          if (lsb) V[0] ^= 0xe1;\n        }\n        return Z;\n      }\n      function ghash(H, aad, ct) {\n        var aadLen = aad ? aad.length : 0, ctLen = ct ? ct.length : 0;\n        var nA = Math.ceil(aadLen \/ 16), nC = Math.ceil(ctLen \/ 16);\n        var Y = new Uint8Array(16), blk = new Uint8Array(16), i, j;\n        function xorMul(data, len, off) {\n          for (j = 0; j < 16; j++) blk[j] = 0;\n          var n = (len - off) > 16 ? 16 : (len - off);\n          for (j = 0; j < n; j++) blk[j] = data[off + j];\n          for (j = 0; j < 16; j++) Y[j] ^= blk[j];\n          var prod = gf128Mul(Y, H);\n          for (j = 0; j < 16; j++) Y[j] = prod[j];\n        }\n        for (i = 0; i < nA; i++) xorMul(aad, aadLen, i * 16);\n        for (i = 0; i < nC; i++) xorMul(ct, ctLen, i * 16);\n        for (j = 0; j < 16; j++) blk[j] = 0;\n        var la = (aadLen * 8) >>> 0, lc = (ctLen * 8) >>> 0;\n        blk[4] = (la >>> 24) & 0xff; blk[5] = (la >>> 16) & 0xff; blk[6] = (la >>> 8) & 0xff; blk[7] = la & 0xff;\n        blk[12] = (lc >>> 24) & 0xff; blk[13] = (lc >>> 16) & 0xff; blk[14] = (lc >>> 8) & 0xff; blk[15] = lc & 0xff;\n        for (j = 0; j < 16; j++) Y[j] ^= blk[j];\n        var prod2 = gf128Mul(Y, H);\n        for (j = 0; j < 16; j++) Y[j] = prod2[j];\n        return Y;\n      }\n      function inc32(x) {\n        var out = new Uint8Array(16), i;\n        for (i = 0; i < 16; i++) out[i] = x[i];\n        for (i = 15; i >= 12; i--) { out[i] = (out[i] + 1) & 0xff; if (out[i] !== 0) break; }\n        return out;\n      }\n      function gctr(key, icb, data) {\n        var out = new Uint8Array(data.length), cb = new Uint8Array(16), i, j;\n        for (i = 0; i < 16; i++) cb[i] = icb[i];\n        var pos = 0;\n        while (pos < data.length) {\n          var e = encryptBlock(key, cb), n = Math.min(16, data.length - pos);\n          for (j = 0; j < n; j++) out[pos + j] = data[pos + j] ^ e[j];\n          pos += n;\n          if (pos < data.length) cb = inc32(cb);\n        }\n        return out;\n      }\n      function encrypt(key, iv, plaintext, aad) {\n        var H = encryptBlock(key, new Uint8Array(16)), J0 = new Uint8Array(16), i;\n        for (i = 0; i < iv.length && i < 12; i++) J0[i] = iv[i];\n        J0[15] = 1;\n        var ct = gctr(key, inc32(J0), plaintext), S = ghash(H, aad || null, ct), eJ0 = encryptBlock(key, J0), tag = new Uint8Array(16);\n        for (i = 0; i < 16; i++) tag[i] = S[i] ^ eJ0[i];\n        return { ciphertext: ct, tag: tag };\n      }\n      return { encrypt: encrypt };\n    })();\n    function getRandomBytes(len) {\n      var b = new Uint8Array(len);\n      if (typeof crypto !== 'undefined' && crypto.getRandomValues) crypto.getRandomValues(b);\n      else for (var i = 0; i < len; i++) b[i] = Math.floor(Math.random() * 256);\n      return b;\n    }\n    function utf8Encode(str) {\n        var bytes = [];\n        for (var i = 0; i < str.length; i++) {\n            var c = str.charCodeAt(i);\n            if (c < 0x80) bytes.push(c);\n            else if (c < 0x800) { bytes.push(0xC0 | (c >> 6), 0x80 | (c & 0x3F)); }\n            else if (c >= 0xD800 && c <= 0xDBFF && i + 1 < str.length) {\n                var c2 = str.charCodeAt(i + 1);\n                if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\n                    var cp = 0x10000 + ((c - 0xD800) << 10) + (c2 - 0xDC00);\n                    bytes.push(0xF0 | (cp >> 18), 0x80 | ((cp >> 12) & 0x3F), 0x80 | ((cp >> 6) & 0x3F), 0x80 | (cp & 0x3F));\n                    i++;\n                } else bytes.push(0xEF, 0xBF, 0xBD);\n            } else if (c >= 0xE000 && c <= 0xFFFF) bytes.push(0xE0 | (c >> 12), 0x80 | ((c >> 6) & 0x3F), 0x80 | (c & 0x3F));\n            else bytes.push(0xEF, 0xBF, 0xBD);\n        }\n        return new Uint8Array(bytes);\n    }\n    function tyfmEncryptRequest(plainText, keyHexStr) {\n        var keyBytes = Ga(keyHexStr), plainBytes = utf8Encode(plainText), iv = getRandomBytes(12);\n        var r = GCM.encrypt(keyBytes, iv, plainBytes, null);\n        var payload = new Uint8Array(1 + 12 + r.ciphertext.length + 16);\n        payload[0] = 0x01; payload.set(iv, 1); payload.set(r.ciphertext, 13); payload.set(r.tag, 13 + r.ciphertext.length);\n        return Ha(payload);\n    }\n    var Ci=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Si=[2746333894,1453994832,1736282519,2993693404],Li=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];\n    function Mi(e){var t=[e>>>24&255,e>>>16&255,e>>>8&255,255&e];for(var o=0;o<4;o++)t[o]=Ci[t[o]];var n=t[0]<<24|t[1]<<16|t[2]<<8|t[3];return(n^n<<2>>>0^n<<10>>>0^n<<18>>>0^n<<24>>>0)>>>0}\n    function Ai(e,t){var n=function(e){var t=(e[0]<<24|e[1]<<16|e[2]<<8|e[3])^Si[0],n=(e[4]<<24|e[5]<<16|e[6]<<8|e[7])^Si[1],o=(e[8]<<24|e[9]<<16|e[10]<<8|e[11])^Si[2],a=(e[12]<<24|e[13]<<16|e[14]<<8|e[15])^Si[3];var r=new Uint32Array(32);for(var i=0;i<32;i++){var e=(n^o^a^Li[i])>>>0;e=Mi(e);var s=(t^e)>>>0;r[i]=s,t=n,n=o,o=a,a=s}return r}(e);var o=(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0,a=(t[4]<<24|t[5]<<16|t[6]<<8|t[7])>>>0,r=(t[8]<<24|t[9]<<16|t[10]<<8|t[11])>>>0,i=(t[12]<<24|t[13]<<16|t[14]<<8|t[15])>>>0;for(var f=0;f<32;f++){var e=(a^r^i^n[f])>>>0;e=Mi(e);var t=(o^e)>>>0;o=a,a=r,r=i,i=t}var s=i,l=r,c=a,u=o,d=new Uint8Array(16);return d[0]=s>>>24,d[1]=s>>>16&255,d[2]=s>>>8&255,d[3]=255&s,d[4]=l>>>24,d[5]=l>>>16&255,d[6]=l>>>8&255,d[7]=255&l,d[8]=c>>>24,d[9]=c>>>16&255,d[10]=c>>>8&255,d[11]=255&c,d[12]=u>>>24,d[13]=u>>>16&255,d[14]=u>>>8&255,d[15]=255&u,d}\n    function Di(e,t){var n=function(e){var t=16-e.length%16,n=new Uint8Array(e.length+t);return n.set(e),n.fill(t,e.length),n}(t),o=new Uint8Array(n.length);for(var a=0;a<n.length;a+=16){var t=Ai(e,n.subarray(a,a+16));o.set(t,a)}return o}\n    function tyfmSm4EncryptB64(plainStr, keyHex) { var n = utf8Encode(plainStr), kb = Ga(keyHex), ct = Di(kb, n); return tyfmBase64Encode(ct); }\n    function tyfmSha256Hex(msg) {\n        var K = [0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];\n        var H = [0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];\n        function rotr(x, n) { return ((x >>> n) | (x << (32 - n))) >>> 0; }\n        var bytes = utf8Encode(msg), len = bytes.length, bitLenLo = (len * 8) >>> 0, paddedLen = (((len + 8) >> 6) + 1) << 6, padded = new Uint8Array(paddedLen);\n        padded.set(bytes, 0); padded[len] = 0x80; padded[paddedLen - 8] = (bitLenLo >>> 24) & 0xff; padded[paddedLen - 7] = (bitLenLo >>> 16) & 0xff; padded[paddedLen - 6] = (bitLenLo >>> 8) & 0xff; padded[paddedLen - 5] = bitLenLo & 0xff;\n        var w = new Array(64);\n        for (var off = 0; off < paddedLen; off += 64) {\n            for (var i = 0; i < 16; i++) w[i] = ((padded[off + i * 4] << 24) | (padded[off + i * 4 + 1] << 16) | (padded[off + i * 4 + 2] << 8) | padded[off + i * 4 + 3]) >>> 0;\n            for (var j = 16; j < 64; j++) {\n                var s0 = rotr(w[j - 15], 7) ^ rotr(w[j - 15], 18) ^ (w[j - 15] >>> 3), s1 = rotr(w[j - 2], 17) ^ rotr(w[j - 2], 19) ^ (w[j - 2] >>> 10);\n                w[j] = (w[j - 16] + s0 + w[j - 7] + s1) >>> 0;\n            }\n            var a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7];\n            for (var t = 0; t < 64; t++) {\n                var S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25), ch = (e & f) ^ (~e & g), temp1 = (h + S1 + ch + K[t] + w[t]) >>> 0, S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22), maj = (a & b) ^ (a & c) ^ (b & c), temp2 = (S0 + maj) >>> 0;\n                h = g; g = f; f = e; e = (d + temp1) >>> 0; d = c; c = b; b = a; a = (temp1 + temp2) >>> 0;\n            }\n            H[0] = (H[0] + a) >>> 0; H[1] = (H[1] + b) >>> 0; H[2] = (H[2] + c) >>> 0; H[3] = (H[3] + d) >>> 0; H[4] = (H[4] + e) >>> 0; H[5] = (H[5] + f) >>> 0; H[6] = (H[6] + g) >>> 0; H[7] = (H[7] + h) >>> 0;\n        }\n        var out = ''; for (var k = 0; k < 8; k++) out += ('00000000' + H[k].toString(16)).slice(-8); return out;\n    }\n    var TYFM_B64C = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/';\n    function tyfmBase64Encode(bytes) {\n        var out = '', i = 0;\n        for (; i + 2 < bytes.length; i += 3) {\n            var n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n            out += TYFM_B64C.charAt((n >> 18) & 63) + TYFM_B64C.charAt((n >> 12) & 63) + TYFM_B64C.charAt((n >> 6) & 63) + TYFM_B64C.charAt(n & 63);\n        }\n        var rem = bytes.length - i;\n        if (rem === 1) { var n1 = bytes[i] << 16; out += TYFM_B64C.charAt((n1 >> 18) & 63) + TYFM_B64C.charAt((n1 >> 12) & 63) + '=='; } \n        else if (rem === 2) { var n2 = (bytes[i] << 16) | (bytes[i + 1] << 8); out += TYFM_B64C.charAt((n2 >> 18) & 63) + TYFM_B64C.charAt((n2 >> 12) & 63) + TYFM_B64C.charAt((n2 >> 6) & 63) + '='; }\n        return out;\n    }\n    function tyfmGenDfp() {\n        var now = new Date();\n        var m = now.getMonth() + 1, d = now.getDate();\n        var l = '' + now.getFullYear() + (m < 10 ? '0' : '') + m + (d < 10 ? '0' : '') + d;\n        var kh = tyfmSha256Hex('fa317cd29b|' + l).slice(0, 32);\n        var s = ['3f2a9c71', 'b8d4e6f0', 'a1c3e5b7', 'd2f4a6c8', 'Mozilla\/5.0 (Linux; Android 10; K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Mobile Safari\/537.36', 'Asia\/Shanghai'].join('|');\n        var c = tyfmSm4EncryptB64(s, kh);\n        return 'dfp=f-' + parseInt(l, 10).toString(36) + ':f-' + c;\n    }\n    \n    (function() {\n        var dyn = tyfmGenDfp();\n        if (dyn) TYFM_DFP_LIST.push(dyn);\n    })();\n    TYFM_DFP_LIST.push('dfp=f-c293u:f-UGk7Ryw8s99EUaNnJfmUZmJOflOaow4JSoNotqeIoQy7K0KJszmtvzodh07maMlq9H0aMVA0Vo1qQbDB1+Cln7u6VEZTP3YePRf+F1bKll0jUwIJXNo+JlA\/qYIoCCkkNzOdNt1EjyhGioQJqnM51MizJ70YfK3WjzsZL4ytTC+uWL8AM3a64RTE\/rU9tjcPYFUbyMcjB2IgQLv6g68\/cmpyC67v6IPKWSx3PXIkHh8=');\n    \n    async function tyfmGetPlayUrlAsync(aId, cId, cIdx) {\n        var plain = JSON.stringify({album_id: aId, chapter_idx: parseInt(cIdx, 10)});\n        var encHex = tyfmEncryptRequest(plain, keyHex);\n        for (var di = 0; di < TYFM_DFP_LIST.length; di++) {\n            document.cookie = TYFM_DFP_LIST[di] + \"; path=\/; domain=.tingyou.fm\";\n            try {\n                var res = await fetch('\/api\/play_token', { method: 'POST', headers: { 'Content-Type': 'text\/plain' }, body: encHex });\n                var resp = await res.text();\n                var j = JSON.parse(resp);\n                if (j && j.play_url) return j.play_url;\n                if (j && j.payload && j.payload.length > 0) {\n                    var kb = new Uint8Array(32);\n                    for (var ki = 0; ki < 32; ki++) kb[ki] = parseInt(keyHex.substr(ki * 2, 2), 16);\n                    var pb = Ga(j.payload);\n                    var ra = new Ra(kb);\n                    var pt = ra.open(pb.subarray(1, 25), pb.subarray(25), null, null);\n                    if (pt) {\n                        var pj = JSON.parse(utf8Decode(pt));\n                        if (pj && pj.play_url) return pj.play_url;\n                    }\n                }\n            } catch(e) {}\n        }\n        return null;\n    }\n\n    \/\/ ========== 核心业务逻辑 ==========\n    var tracks = [];\n    var rawData = ${JSON.stringify(d)};\n    var trackIdxArr = ${JSON.stringify(tracksArr)};\n    var aId = \"${albumId}\";\n\n    for(var i = 0; i < trackIdxArr.length; i++) {\n        var item = rawData[trackIdxArr[i]];\n        if(item) {\n            var tName = rawData[item.title];\n            if(!tName) tName = (i+1) < 10 ? '0'+(i+1) : ''+(i+1);\n            var cId = rawData[item.id] || item.id;\n            tracks.push({ name: tName, chId: cId, idx: i + 1 });\n        }\n    }\n    \n    var grid = document.getElementById('track-grid');\n    var isReverse = false;\n    var player = document.getElementById('audio-player');\n    \n    var activeTrack = null;\n    var resumeTime = 0;\n    var currentIndex = -1;\n    \n    var btnPrev = document.getElementById('btn-prev');\n    var btnNext = document.getElementById('btn-next');\n    var titleDisplay = document.getElementById('current-track-title');\n\n    player.addEventListener('timeupdate', function() {\n        if (activeTrack && player.currentTime > 1 && !player.paused) {\n            localStorage.setItem('tyfm_history_' + aId, JSON.stringify({\n                chId: activeTrack.chId,\n                idx: activeTrack.idx,\n                name: activeTrack.name,\n                time: player.currentTime\n            }));\n        }\n    });\n\n    player.addEventListener('loadedmetadata', function() {\n        if (resumeTime > 0 && player.duration > 0) {\n            player.currentTime = resumeTime;\n            resumeTime = 0;\n        }\n    });\n\n    \/\/ 播放完毕自动播放下一集\n    player.addEventListener('ended', function() {\n        if (!btnNext.disabled) {\n            btnNext.click();\n        }\n    });\n\n    function renderHistory() {\n        var hw = document.getElementById('history-wrap');\n        var hStr = localStorage.getItem('tyfm_history_' + aId);\n        if (hStr) {\n            try {\n                var h = JSON.parse(hStr);\n                hw.innerHTML = \"<div class='hist-banner'><span class='hist-text'>⏱️ 上次播放到: \" + h.name + \"<\/span><button class='hist-btn' id='hist-resume-btn'>继续播放<\/button><\/div>\";\n                document.getElementById('hist-resume-btn').onclick = function() {\n                    var matchTrack = tracks.find(function(t) { return t.chId == h.chId; });\n                    if (matchTrack) playTrack(matchTrack, h.time);\n                };\n            } catch(e) { hw.innerHTML = ''; }\n        } else {\n            hw.innerHTML = '';\n        }\n    }\n\n    async function playTrack(t, startTime) {\n        activeTrack = t;\n        resumeTime = startTime || 0;\n        currentIndex = tracks.findIndex(function(x) { return x.chId === t.chId; });\n        \n        titleDisplay.innerText = \"🔊 正在播放: \" + t.name;\n        btnPrev.disabled = (currentIndex <= 0);\n        btnNext.disabled = (currentIndex === -1 || currentIndex >= tracks.length - 1);\n        \n        document.querySelectorAll('.track-btn').forEach(function(b) {\n            b.classList.remove('active');\n            if (b.dataset.id == t.chId) b.classList.add('active', 'loading');\n        });\n        \n        var activeBtn = document.querySelector('.track-btn[data-id=\"'+t.chId+'\"]');\n        if (activeBtn) activeBtn.innerText = \"解密中...\";\n        \n        player.src = \"\";\n        var realUrl = await tyfmGetPlayUrlAsync(aId, t.chId, t.idx);\n        \n        if (activeBtn) {\n            activeBtn.classList.remove('loading');\n            activeBtn.innerText = t.name;\n        }\n        \n        if (realUrl) {\n            player.src = realUrl;\n            player.play();\n            renderHistory();\n        } else {\n            if (activeBtn) activeBtn.innerText = \"❌ 解析失败\";\n        }\n    }\n\n    btnPrev.onclick = function() {\n        if (currentIndex > 0) playTrack(tracks[currentIndex - 1], 0);\n    };\n\n    btnNext.onclick = function() {\n        if (currentIndex < tracks.length - 1) playTrack(tracks[currentIndex + 1], 0);\n    };\n\n    function renderList() {\n        grid.innerHTML = '';\n        var list = isReverse ? [].concat(tracks).reverse() : tracks;\n        list.forEach(function(t) {\n            var btn = document.createElement('div');\n            btn.className = 'track-btn';\n            btn.dataset.id = t.chId;\n            btn.innerText = t.name;\n            if (activeTrack && activeTrack.chId == t.chId) btn.classList.add('active');\n            \n            btn.onclick = function() { playTrack(t, 0); };\n            grid.appendChild(btn);\n        });\n    }\n    \n    document.getElementById('sort-btn').onclick = function() { isReverse = !isReverse; renderList(); };\n    \n    renderList();\n    renderHistory();\n    <\/script><\/body><\/html>\n    `;\n    return html;\n})()","ruleImage":"$.cover_url||cover","ruleLink":"@js:'https:\/\/www.tingyou.fm' + (result.url || '\/albums\/' + result.id)","ruleNextPage":"page","ruleTitle":"$.title","searchUrl":"https:\/\/www.tingyou.fm\/search\/result?keyword={{key}}&page={{page}}","showWebLog":false,"singleUrl":false,"sortUrl":"@js:\n(function() {\n    var host = \"https:\/\/json.fmfm.pro\";\n    var path = \"\/tyfm\/json_v1\/types\/\";\n    \n    var categories = {\n        \"有声小说\": [\n            {\"id\":46,\"name\":\"玄幻奇幻\"},{\"id\":11,\"name\":\"武侠小说\"},{\"id\":19,\"name\":\"言情通俗\"},{\"id\":21,\"name\":\"相声小品\"},\n            {\"id\":14,\"name\":\"恐怖惊悚\"},{\"id\":17,\"name\":\"官场商战\"},{\"id\":15,\"name\":\"历史军事\"},{\"id\":9,\"name\":\"百家讲坛\"},\n            {\"id\":16,\"name\":\"刑侦反腐\"},{\"id\":10,\"name\":\"有声文学\"},{\"id\":18,\"name\":\"人物纪实\"},{\"id\":36,\"name\":\"广播剧\"},\n            {\"id\":22,\"name\":\"英文读物\"},{\"id\":23,\"name\":\"轻音清心\"},{\"id\":31,\"name\":\"二人转\"},{\"id\":33,\"name\":\"健康养生\"},\n            {\"id\":34,\"name\":\"综艺娱乐\"},{\"id\":40,\"name\":\"头条\"},{\"id\":38,\"name\":\"戏曲\"},{\"id\":41,\"name\":\"脱口秀\"},\n            {\"id\":42,\"name\":\"商业财经\"},{\"id\":43,\"name\":\"亲子教育\"},{\"id\":44,\"name\":\"教育培训\"},{\"id\":45,\"name\":\"时尚生活\"},\n            {\"id\":20,\"name\":\"童话寓言\"},{\"id\":47,\"name\":\"未分类\"}\n        ],\n        \"评书\": [\n            {\"id\":1,\"name\":\"单田芳\"},{\"id\":2,\"name\":\"刘兰芳\"},{\"id\":3,\"name\":\"田连元\"},{\"id\":4,\"name\":\"袁阔成\"},\n            {\"id\":5,\"name\":\"连丽如\"},{\"id\":8,\"name\":\"孙一\"},{\"id\":30,\"name\":\"王子封臣\"},{\"id\":25,\"name\":\"马长辉\"},\n            {\"id\":26,\"name\":\"昊儒书场\"},{\"id\":27,\"name\":\"王军\"},{\"id\":28,\"name\":\"王玥波\"},{\"id\":29,\"name\":\"石连君\"},\n            {\"id\":12,\"name\":\"粤语评书\"},{\"id\":35,\"name\":\"关永超\"},{\"id\":6,\"name\":\"张少佐\"},{\"id\":7,\"name\":\"田战义\"},\n            {\"id\":13,\"name\":\"其他评书\"}\n        ]\n    };\n    \n    var sorts = [\"comprehensive\", \"popular\", \"updated\", \"new\"];\n    var sortNames = {\"comprehensive\":\"综合排序\", \"popular\":\"播放最多\", \"updated\":\"最近更新\", \"new\":\"最新发布\"};\n    \n    var result = [];\n    for (var catName in categories) {\n        var types = categories[catName];\n        for (var i = 0; i < types.length; i++) {\n            var t = types[i];\n            for (var j = 0; j < sorts.length; j++) {\n                var url = host + path + t.id + \"\/\" + sorts[j] + \"\/p{{page}}\";\n                result.push(catName + \"-\" + t.name + \"-\" + sortNames[sorts[j]] + \"::\" + url);\n            }\n        }\n    }\n    return result.join(\"\\n\");\n})()","sourceComment":"\/\/梦不觉  2026.08.10","sourceGroup":"听书","sourceIcon":"https:\/\/www.tingyou.fm\/logo.svg","sourceName":"听友FM","sourceUrl":"https:\/\/www.tingyou.fm\/","type":0}]