// ==UserScript== // @name 江苏省执业药师协会学习助手 // @namespace https://www.wlxy.live/ // @version 1.1 // @description 江苏省执业药师协会(www.jslpa.cn):请在「我的课程」页使用;勾选课程、自动完成视频学时与考试;免费体验 1 门课,专业版不限。 // @author 柠檬真酸 // @icon https://huaweicloudobs.ahjxjy.cn/895789f9086469785b846d30c0ed95f9.png // @match *://www.jslpa.cn/* // @match *://jslpa.cn/* // @noframes // @antifeature payment 免费体验1门课含考试,升级专业版不限 // @antifeature membership 需会员授权 // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_openInTab // @grant unsafeWindow // @connect www.jslpa.cn // @connect jslpa.cn // @connect huaweicloudobs.ahjxjy.cn // @connect oa30.ahzsksw.cn // @connect ahzsksw.cn // @connect card.wlxy.live // @connect * // @require https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/vue/3.4.27/vue.global.prod.min.js // @require https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/vue-demi/0.14.6/index.iife.js // @require data:application/javascript,%3Bwindow.Vue%3DVue%3B // @require https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/dompurify/3.1.6/purify.min.js // @require https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/crypto-js/4.2.0/crypto-js.min.js // @require https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/pinia/2.2.4/pinia.iife.prod.js // @run-at document-idle // @tag 江苏省执业药师协会 // @tag 继续教育 // @tag 学习辅助 // @license All Rights Reserved // ==/UserScript== (function(Vue,DOMPurify,Pinia,CryptoJS){ "use strict"; (()=>{var he="1.1",He="\u6C5F\u82CF\u7701\u6267\u4E1A\u836F\u5E08\u534F\u4F1A\u5B66\u4E60\u52A9\u624B",ne="__JSLPA_WATCH_BO\ OT__",C=location.hostname.replace(/^www\./,""),Ve=location.origin,Bt="/UserView/CourseList";function ze(){let e=String(location. pathname||"").replace(/\/+$/,"")||"/";return/\/UserView\/CourseList$/i.test(e)}function Ye(){return`${location.origin}${Bt}`} var z={enabled:`jslpa_enabled_${C}`,pace:`jslpa_pace_${C}`,onlyIncomplete:`jslpa_only_incomplete_${C}`,autoExam:`jslpa_a\ uto_exam_${C}`,selected:`jslpa_selected_${C}`,panelPos:`jslpa_panel_pos_${C}`,collapsed:`jslpa_collapsed_${C}`,examBank:`\ jslpa_exam_bank_${C}`},ye=`jslpa_account_identity_${C}`;function we(e,n){let o=String(n||"anon").replace(/[^\w\u4e00-\u9fff:-]/g, "_").slice(0,64);return`${e}__${o}`}var P={efficiency:"efficiency",realtime:"realtime"},Je=120,Ke=120,We=16,_e=300,je="h\ ttps://huaweicloudobs.ahjxjy.cn/895789f9086469785b846d30c0ed95f9.png",Xe="\u514D\u8D39\u53EF\u4F53\u9A8C 1 \u95E8\u8BFE\uFF08\u542B\u8003\u8BD5\uFF09\uFF1B\u4E13\u4E1A\u7248\u4E0D\u9650\u3002\u5B66\u65F6\u6309\u5E73\u53F0\u6B63\u5E38\u8282\u594F\u63A8\u8FDB\u3002", Qe="903117129",Ze="https://qun.qq.com/universal-share/share?ac=1&authKey=rxdL6YIJ0%2FxOEemjLqTGULvl5aAfJIVQcIvkvnwvmL%2F\ AmpFZnSafajYHgSXMUXvx&busi_data=eyJncm91cENvZGUiOiI5MDMxMTcxMjkiLCJ0b2tlbiI6IlB2dkFGSm5XRXBrSEhtQVFTUGQzdVNZakhNWDNMbW1k\ ODA2enpoMi9obDh4SWp0YzBDODNFaGtwRU44Z0hyU0siLCJ1aW4iOiIxMjU0MzE1MTQifQ%3D%3D&data=9oyJixSPcigCQW-saV5eXlcMwV9C6J36XySx-r\ DHwVwNlofvRmd2ze5sLwFtHTbYbG4nAWIUrI0qftC6aTX9xg&svctype=4&tempid=h5_group_info",oe="https://oa30.ahzsksw.cn",L="jslpa_c\ loud_token_v1",M="jslpa_cloud_lease_cache_v1",U="https://card.wlxy.live/details/2478B42E",N=1;var re=null;function Ee(e){re=e}var t={enabled:!1,stopFlag:!1,running:!1,pace:P.realtime,onlyIncomplete:!0,autoExam:!0,learningCourses:[],completedCourses:[], zyCourses:[],gxCourses:[],selectedIds:new Set,selectMode:"all",chapters:[],activeCourse:null,currentCourse:"",currentChapter:"", logs:[],task:"",panelHint:"",reportInterval:Ke,semester:new Date().getFullYear(),userName:"",examBank:{},queueVideoTotal:0, queueVideoDone:0,queueExamTotal:0,queueExamDone:0,studyModeHintTimer:null,cloudApiBase:oe,cloudToken:String(localStorage. getItem(L)||"").trim(),cloudLease:"",cloudLeaseExp:0,cloudTier:"unknown",cloudProExpireAt:0,freeCourseLimit:N,freeUsedCourses:0, proBuyUrl:U,remotePanelNotice:"",cloudReady:!1},A=null;function et(e){A=e}function H(e){return new Promise(n=>setTimeout(n,Math.max(0,e)))}function j(e){return String(e??"").replace(/&/g,"&"). replace(//g,">")}function y(e,n){let o=String(e||"");return o.length>n?o.slice(0,n)+"\u2026":o} function S(e){let n=Math.max(0,Math.floor(Number(e)||0)),o=Math.floor(n/60),r=n%60;return`${o}:${String(r).padStart(2,"0")}`}function q(e,n){try{let o=GM_getValue(e,null);return o==null?n:typeof o=="string"?JSON.parse(o):o}catch{return n}}function V(e,n){ GM_setValue(e,JSON.stringify(n))}var tt=()=>{};function nt(e){tt=typeof e=="function"?e:()=>{}}function p(e,n){let o={t:Date.now(),msg:String(e||""),type:n|| "info"};t.logs.unshift(o),t.logs.length>_e&&(t.logs.length=_e),tt()}function ae(e){try{let n=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"=([^;]*)")); return n?decodeURIComponent(n[1]):""}catch{return""}}function Ft(){try{localStorage.removeItem("userName"),localStorage. removeItem("jslpa_platform_uid"),localStorage.removeItem(M)}catch{}t.userName="",t.cloudLease="",t.cloudLeaseExp=0}function rt(){ let e=String(ae("ASP.NET_SessionId")||"").trim(),n="";try{n=String(localStorage.getItem("jslpa_sid_fallback")||"").trim()}catch{} if(e&&n&&e!==n){Ft();try{localStorage.setItem("jslpa_sid_fallback",e)}catch{}return!0}if(e)try{localStorage.setItem("jsl\ pa_sid_fallback",e)}catch{}return!1}function Gt(){let e=String(t.userName||"").trim(),n="";try{n=String(localStorage.getItem( "jslpa_platform_uid")||"").trim()}catch{}let o=String(ae("ASP.NET_SessionId")||"").trim();return`${e}|${n}|${o}`}function se(){ let e=String(t.userName||"").trim();if(e)return e;let n="";try{n=String(localStorage.getItem("jslpa_platform_uid")||""). trim()}catch{}if(n)return`uid:${n}`;let o=String(ae("ASP.NET_SessionId")||"").trim();return o?`sid:${o.slice(0,24)}`:"an\ on"}function ie(){rt();let e=String(t.userName||"").trim();if(e)return`jslpa:${e}`;let n="";try{n=String(localStorage.getItem( "jslpa_platform_uid")||"").trim()}catch{}if(n)return`jslpa:uid:${n}`;let o=String(ae("ASP.NET_SessionId")||"").trim();if(o){ try{localStorage.setItem("jslpa_sid_fallback",o)}catch{}return`jslpa:sid:${o}`}return""}function Ht(){t.zyCourses=[],t.gxCourses= [],t.learningCourses=[],t.completedCourses=[],t.selectedIds=new Set,t.selectMode="all",t.examBank={},t.activeCourse=null, t.currentCourse="",t.currentChapter="",t.chapters=[],t.task="",t.panelHint="",t.queueVideoTotal=0,t.queueVideoDone=0,t.queueExamTotal= 0,t.queueExamDone=0,t.cloudLease="",t.cloudLeaseExp=0,t.cloudTier="unknown",t.freeUsedCourses=0,t.cloudReady=!1}async function le(){ let e=rt(),n="";try{n=String(localStorage.getItem(ye)||"")}catch{}await R();let o=Gt(),r=se(),a=!!(e||n&&o&&n!==o);if(a){ Ht();try{localStorage.removeItem(M)}catch{}p(`\u68C0\u6D4B\u5230\u8D26\u53F7\u5207\u6362${t.userName?` \u2192 ${t.userName}`: ""}\uFF0C\u5DF2\u6E05\u7A7A\u4E0A\u4E00\u8D26\u53F7\u8BFE\u7A0B\u7F13\u5B58`,"info")}if(o)try{localStorage.setItem(ye,o)}catch{} return{switched:a,scope:r,name:t.userName||""}}function ot(){try{if(typeof unsafeWindow<"u"&&unsafeWindow)return unsafeWindow}catch{} return window}function v(e,n,o){let r=e.startsWith("http")?e:`${Ve}${e}`,a=(o||(n===void 0?"GET":"POST")).toUpperCase(), s=!(a==="GET"||n===void 0||n===null),i=s?JSON.stringify(n):null,l={Accept:"application/json, text/plain, */*"};s&&(l["Co\ ntent-Type"]="application/json;charset=UTF-8");let u=(c,f)=>{let b={};try{b=JSON.parse(c||"{}")}catch(h){let $=String(c|| "").slice(0,80).replace(/\s+/g," ");throw new Error(`\u54CD\u5E94\u975E JSON(HTTP ${f}): ${$||h.message}`)}let _=b.code!= null?Number(b.code):f;if(_===401)throw new Error(b.msg||"\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55"); if(_!==200&&f>=400)throw new Error(b.msg||b.message||`HTTP ${f}`);if(_!==200&&b.msg){let h=new Error(b.msg);throw h.code= _,h.payload=b,h}return b},d=()=>new Promise((c,f)=>{try{let _=ot().XMLHttpRequest||XMLHttpRequest,h=new _;h.open(a,r,!0), h.withCredentials=!0,h.timeout=3e4,Object.keys(l).forEach($=>{try{h.setRequestHeader($,l[$])}catch{}}),h.onload=()=>{try{ c(u(h.responseText||"",h.status))}catch($){f($)}},h.onerror=()=>f(new Error("\u9875\u9762\u8BF7\u6C42\u5931\u8D25")),h.ontimeout= ()=>f(new Error("\u8BF7\u6C42\u8D85\u65F6")),h.send(i)}catch(b){f(b)}}),g=()=>new Promise((c,f)=>{if(typeof GM_xmlhttpRequest!= "function"){f(new Error("GM_xmlhttpRequest \u4E0D\u53EF\u7528"));return}GM_xmlhttpRequest({method:a,url:r,headers:l,data:i|| void 0,anonymous:!1,withCredentials:!0,timeout:3e4,onload(b){try{c(u(b.responseText||"",b.status))}catch(_){f(_)}},onerror(){ f(new Error("GM \u8BF7\u6C42\u5931\u8D25"))},ontimeout(){f(new Error("GM \u8BF7\u6C42\u8D85\u65F6"))}})}),x=()=>{let c=ot(), f=c.fetch||fetch;return typeof f!="function"?Promise.reject(new Error("\u65E0 fetch")):f.call(c,r,{method:a,headers:l,body:i, credentials:"include"}).then(async b=>u(await b.text(),b.status))};return d().catch(c=>g().catch(f=>x().catch(b=>{throw new Error( c.message||f.message||b.message||"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25")})))}async function R(){try{let e=await v("/api/\ User/Status",null,"GET"),n=e&&e.res||{},o=n.WorkName||n.workName||n.UserName||n.username||n.Name||"";if(o){t.userName=String( o).trim();try{localStorage.setItem("userName",t.userName)}catch{}}else{t.userName="";try{localStorage.removeItem("userNa\ me")}catch{}}let r=n.UserID||n.userid||n.Id||n.id||n.Mobile||n.mobile||"";if(r)try{localStorage.setItem("jslpa_platform_\ uid",String(r).trim())}catch{}return t.userName||""}catch{return t.userName||""}}var ve=()=>{};function st(e){ve=typeof e=="function"?e:()=>{}}function it(){return we(z.selected,se())}function lt(){return we( z.examBank,se())}function ct(){t.enabled=!!GM_getValue(z.enabled,!1),t.pace=P.realtime,GM_setValue(z.pace,P.realtime),t. onlyIncomplete=GM_getValue(z.onlyIncomplete,!0)!==!1,t.autoExam=GM_getValue(z.autoExam,!0)!==!1,ut()}function ut(){t.examBank= q(lt(),{})||{};let e=q(it(),null)||q(z.selected,null);e&&typeof e=="object"&&!Array.isArray(e)?(t.selectMode=e.mode==="n\ one"||e.mode==="partial"?e.mode:"all",t.selectedIds=new Set(Array.isArray(e.ids)?e.ids:[])):Array.isArray(e)?(t.selectMode= e.length?"partial":"all",t.selectedIds=new Set(e)):(t.selectMode="all",t.selectedIds=new Set)}function ce(){V(it(),{mode:t. selectMode,ids:Array.from(t.selectedIds)})}function Vt(){return[...t.zyCourses||[],...t.gxCourses||[]]}function Ce(e){return t. selectMode==="none"?!1:t.selectMode==="all"?!0:t.selectedIds.has(e)}function O(){if(t.selectMode==="none")return[];let e=Vt(); return t.selectMode==="all"?e.slice():e.filter(n=>t.selectedIds.has(n.id))}function dt(){t.selectMode="all",t.selectedIds= new Set,ce(),ve()}function pt(){t.selectMode="none",t.selectedIds=new Set,ce(),ve()}function Se(e){return Number(e.DEGREE)>= 1||e.axios===!0}function w(e){return e?Number(e.grade)>0||Number(e.examcan)===3:!1}function Y(e){return e?w(e)?!0:Number( e.examcan)>=1:!1}function D(e,n){if(!e)return 0;if(n&&n.completedView||w(e))return 100;if(Y(e))return 90;let o=e._chapters; if(Array.isArray(o)&&o.length){let r=o.filter(a=>Se(a)).length;return Math.round(r/o.length*100)}return 0}function Yt(e){ if(w(e))return"\u5B66\u4E60\u8FDB\u5EA6 100%";if(Number(e.examcan)===0){let n=D(e);return n>0?`\u5B66\u4E60\u8FDB\u5EA6 ${n}\ %\uFF08\u672A\u542C\u5B8C\uFF09`:"\u5B66\u4E60\u8FDB\u5EA6 \u672A\u542C\u5B8C"}return Y(e)?"\u5B66\u4E60\u8FDB\u5EA6 \u5DF2\u542C\u5B8C\uFF08\u672A\u5408\u683C\uFF09": `\u5B66\u4E60\u8FDB\u5EA6 ${D(e)}%`}function Jt(e){return w(e)?"\u72B6\u6001\uFF1A\u5408\u683C":Number(e.examcan)===0?(e. isExam,"\u72B6\u6001\uFF1A\u672A\u542C\u5B8C"):Number(e.examcan)===1?e.isExam?"\u72B6\u6001\uFF1A\u53EF\u8003\u8BD5\uFF08\u672A\u5408\u683C\uFF09": "\u72B6\u6001\uFF1A\u5DF2\u542C\u5B8C\uFF08\u672A\u5408\u683C\uFF09":"\u72B6\u6001\uFF1A\u672A\u5408\u683C"}function Kt(e){ return w(e)?"#16a34a":Number(e.examcan)===0?"#64748b":Number(e.examcan)===1?"#b45309":"#64748b"}function ft(){V(lt(),t.examBank|| {})}function ke(e){return w(e)}function at(e,n,o){let r=String(e.ClassID||e.classid||e.id||"").trim();if(!r)return null; let a=e.ClassSetName||e.coursename||e.name||r,s=!!(e.isexam||e.isExam),i=Number(e.grade)||0,l=Number(e.examcan||0),u=!!e. ispassed_exam,d=i>0||l===3;return{id:r,name:a,title:a,year:n||e.teacherwork||"",kind:o||"zy",isExam:s,ispassed:d,ispassed_exam:u, examcan:l,isface:e.isface!==!1,grade:i,teachername:e.teachername||"",myCourseStatus:{completed:d,passed:d},myExamStatus:{ isPass:d,isExam:s},courseProgress:d?100:l>=1?90:0}}async function Le(e,n){let o=e.slice(),r=3;async function a(){for(;o. length&&!t.stopFlag;){let s=o.shift();try{let i=await ue(s.id);i&&(s._chapters=i.chapter||[],i.grade!=null&&(s.grade=Number( i.grade)||0),i.examcan!=null&&(s.examcan=Number(i.examcan)),s.isExam=i.isExam!=null?i.isExam:s.isExam,i.ispassed_exam!=null&& (s.ispassed_exam=!!i.ispassed_exam),s.isface=i.isface!=null?i.isface:s.isface,s.name=i.name||s.name,s.ispassed=w(s),s.myCourseStatus= {completed:s.ispassed,passed:s.ispassed},s.myExamStatus={isPass:s.ispassed,isExam:s.isExam},s.courseProgress=D(s))}catch{} typeof n=="function"&&n()}}await Promise.all(Array.from({length:r},()=>a()))}async function J(e){let n=e||{},{switched:o, name:r}=await le();ut(),o&&(t.zyCourses=[],t.gxCourses=[],t.learningCourses=[],t.completedCourses=[]);let a=await v("/ap\ i/Course/List",null,"POST"),s=a&&a.res||[];if(!Array.isArray(s))throw new Error("\u8BFE\u7A0B\u5217\u8868\u683C\u5F0F\u5F02\u5E38"); let i=[],l=[];for(let d of s){let g=d.year||"";for(let x of d.list||[]){let c=at(x,g,"zy");c&&i.push(c)}for(let x of d.gxk_list|| []){let c=at(x,g,"gx");c&&l.push(c)}}t.zyCourses=i,t.gxCourses=l,t.learningCourses=i,t.completedCourses=l;let u=[...i,...l]; return r&&(t.userName=r),u.length?n.enrich===!1?{learning:i,completed:l,zy:i,gx:l,all:u}:(await Le(u,n.onProgress),{learning:i, completed:l,zy:i,gx:l,all:u}):{learning:[],completed:[],zy:[],gx:[],all:[]}}async function ue(e){let n=await v("/api/Cou\ rse/Details",{classid:e}),o=n&&n.res||null;if(!o)return null;let r=(o.chapters||[]).map((a,s)=>{let i=Number(a.duration)|| 0,l=s+1;return{id:a.KEYLIST,KEYLIST:a.KEYLIST,index:l,name:`\u7B2C${l}\u7AE0`,title:`\u7B2C${l}\u7AE0`,DEGREE:Number(a.DEGREE)|| 0,duration:i,lastTime:i*.98,timespan:0,axios:Number(a.DEGREE)>=1,isComplete:Number(a.DEGREE)>=1}});return{id:e,name:o.coursename|| e,isExam:!!o.isexam,ispassed:Number(o.grade)>0||Number(o.examcan)===3,ispassed_exam:!!o.ispassed_exam,examcan:Number(o.examcan|| 0),isface:o.isface!==!1,grade:Number(o.grade)||0,chapter:r,projectId:o.isexam?e:""}}function Te(e,n){let o=n||{},r=!!o.checkable, a=!!o.checked,s=!!o.isActive,i=e.name||e.title||e.id,l=D(e),u=ke(e),d=s?"#16a34a":"#e2e8f0",g=s?"#f0fdf4":u?"#f1f5f9":"#\ f8fafc",x=u?"#64748b":"#0f172a",c=Kt(e),f=e.kind==="gx"?'\u516C\u9700':'\u4E13\u4E1A', b=u?'\u5DF2\u5B8C\u6210':"",_=r?``:"",h=r?"label":"div";return`<${h} sty\ le="display:flex;gap:7px;align-items:flex-start;background:${g};border:1px solid ${d};border-radius:8px;padding:7px;marg\ in-bottom:6px;${r?"cursor:pointer;":""}${u?"opacity:.95;":""}"> ${_} ${j(i)}${f}${b} ${j(Yt(e))} ${j(Jt(e))} `}function m(e){if(re){let n=re.querySelector("#"+e);if(n)return n}return document.getElementById(e)}function T(e,n){if(!e) return;let o=typeof DOMPurify<"u"&&DOMPurify.sanitize?DOMPurify.sanitize(n,{USE_PROFILES:{html:!0}}):n;e.innerHTML=o}var xt=()=>{};function gt(e){xt=typeof e=="function"?e:()=>{}}var mt=Promise.resolve();function Wt(e){let n=mt.then(e,e); return mt=n.then(()=>{},()=>{}),n}function Xt(){return String(t.cloudApiBase||oe).replace(/\/+$/,"")}function $e(){return String( t.proBuyUrl||U).trim()||U}function Qt(){return t.cloudTier==="pro"}function Zt(){try{let e=JSON.parse(localStorage.getItem( M)||"null"),n=String(e?.lease||"").trim(),o=Number(e?.exp||0);return!n||!Number.isFinite(o)||o*1e3<=Date.now()+15e3?null: e}catch{return null}}function K(e,n,o){if(!e||!n){localStorage.removeItem(M);return}localStorage.setItem(M,JSON.stringify( Object.assign({lease:e,exp:n},o||{})))}function en(e,n){if(!e)return`HTTP ${n}`;if(typeof e.message=="string"&&e.message. trim())return e.message.trim();let o=e.detail;if(typeof o=="string"&&o.trim())return o.trim();if(Array.isArray(o)&&o.length){ let r=o[0];if(typeof r=="string")return r;if(r&&typeof r.msg=="string")return r.msg}return o&&typeof o=="object"&&typeof o. msg=="string"?o.msg:`HTTP ${n}`}function tn(e){let n=String(e||"").trim(),o={"invalid token":"\u6FC0\u6D3B\u7801\u65E0\u6548", revoked:"\u6FC0\u6D3B\u7801\u5DF2\u505C\u7528",expired:"\u6FC0\u6D3B\u7801\u5DF2\u8FC7\u671F",expired_after_activation:"\ \u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5F00\u901A",token_bound_to_other_learning_user:"\u6FC0\u6D3B\u7801\u5DF2\u7ED1\u5B9A\u5176\u4ED6\u8D26\u53F7", free_course_quota_exceeded:"\u514D\u8D39\u4F53\u9A8C\u6B21\u6570\u5DF2\u7528\u5B8C\uFF0C\u8BF7\u5347\u7EA7\u4E13\u4E1A\u7248", free_quota_exhausted:"\u514D\u8D39\u4F53\u9A8C\u6B21\u6570\u5DF2\u7528\u5B8C\uFF0C\u8BF7\u5347\u7EA7\u4E13\u4E1A\u7248", invalid_lease:"\u4F1A\u8BDD\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u8BD5",rate_limited:"\u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5", missing_learning_user_id:"\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u5E73\u53F0"};return o[n]||o[n.toLowerCase()]|| n||"\u64CD\u4F5C\u5931\u8D25"}function nn(){if(typeof GM_xmlhttpRequest=="function")return GM_xmlhttpRequest;try{if(typeof GM< "u"&&typeof GM.xmlHttpRequest=="function")return GM.xmlHttpRequest}catch{}return null}function bt(e,n,o){let a=`${Xt()}${e. startsWith("/")?e:`/${e}`}`,s={Accept:"application/json","Content-Type":"application/json"},i=ie();i&&(s["x-learning-use\ r-id"]=encodeURIComponent(i)),t.cloudToken&&(s.Authorization=`Bearer ${t.cloudToken}`);let l=o==null?null:JSON.stringify( o),u=nn();return u?new Promise((d,g)=>{let x={method:n||"GET",url:a,headers:s,timeout:2e4,anonymous:!0,responseType:"tex\ t",onload:c=>d({status:Number(c.status)||0,text:String(c.responseText||"")}),onerror:()=>g(new Error("\u65E0\u6CD5\u8FDE\u63A5\u6388\u6743\u670D\u52A1\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u5141\u8BB8 oa\ 30.ahzsksw.cn")),ontimeout:()=>g(new Error("\u6388\u6743\u670D\u52A1\u8BF7\u6C42\u8D85\u65F6"))};l!=null&&(x.data=l);try{ u(x)}catch(c){g(c instanceof Error?c:new Error(String(c)))}}):Promise.reject(new Error("\u5F53\u524D\u73AF\u5883\u65E0 GM_xmlhttpRequest\uFF0C\u8BF7\u7528 Tampe\ rmonkey/\u811A\u672C\u732B\u5B89\u88C5"))}async function de(e,n,o){let r=await bt(e,n,o),a=String(r.text||"").trim(),s=null; if(a)try{s=JSON.parse(a)}catch{throw new Error(`\u670D\u52A1\u5F02\u5E38(HTTP ${r.status})`)}if(r.status>=400){let i=en( s,r.status),l=new Error(tn(i));throw l.status=r.status,l.data=s,l}return s||{}}async function ht(){return t.cloudToken&& await de("/api/license/verify","GET",null),!0}async function W(e){t.cloudToken=String(t.cloudToken||localStorage.getItem( L)||"").trim();let n=e?null:Zt();if(n?.lease)return t.cloudLease=n.lease,t.cloudLeaseExp=Number(n.exp||0),n.tier&&(t.cloudTier= String(n.tier)),n.free_course_limit!=null&&(t.freeCourseLimit=Number(n.free_course_limit)||N),n.free_used_courses!=null&& (t.freeUsedCourses=Number(n.free_used_courses)||0),n.pro_expires_at&&(t.cloudProExpireAt=Number(n.pro_expires_at)||0),t. cloudReady=!0,k(),!0;if(!ie())try{await R()}catch{}let o=ie();if(!o)throw new Error("\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u5E73\u53F0\u540E\u518D\u540C\u6B65\u4F1A\u5458"); let r=await de("/api/jslpa/lease","POST",{learning_user_id:o,name:t.userName||"",userName:t.userName||""}),a=String(r.lease|| ""),s=Number(r.exp||0);if(!a)throw new Error("\u5F00\u901A\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");if(t.cloudLease= a,t.cloudLeaseExp=s,t.cloudTier=String(r.tier||"free"),t.freeCourseLimit=Number(r.free_course_limit!=null?r.free_course_limit: N)||N,t.freeUsedCourses=Number(r.free_used_courses!=null?r.free_used_courses:0)||0,t.cloudProExpireAt=Number(r.pro_expires_at|| 0)||0,r.proBuyUrl){let i=String(r.proBuyUrl).trim();i&&(t.proBuyUrl=i)}return K(a,s,{tier:t.cloudTier,free_course_limit:t. freeCourseLimit,free_used_courses:t.freeUsedCourses,pro_expires_at:t.cloudProExpireAt}),t.cloudReady=!0,k(),!0}async function zt(e){ await W(!1);let n=String(e?.id||e?.classId||"").trim(),o=await de("/api/jslpa/course/consume","POST",{lease:t.cloudLease, course_id:n,course_name:String(e?.name||e?.title||"")});return o.tier&&(t.cloudTier=String(o.tier)),o.free_used_courses!= null&&(t.freeUsedCourses=Number(o.free_used_courses)||0),o.free_course_limit!=null&&(t.freeCourseLimit=Number(o.free_course_limit)|| t.freeCourseLimit),K(t.cloudLease,t.cloudLeaseExp,{tier:t.cloudTier,free_course_limit:t.freeCourseLimit,free_used_courses:t. freeUsedCourses,pro_expires_at:t.cloudProExpireAt}),k(),o}async function on(){try{let e=await bt("/api/jslpa/panel-notic\ e","GET",null);if(e.status===200&&e.text){t.remotePanelNotice=String(e.text).trim();let n=m("nmg-panel-notice-text");n&& t.remotePanelNotice&&(n.textContent=t.remotePanelNotice)}}catch{}}async function rn(){try{let e=await de("/api/jslpa/cli\ ent-config","GET",null);e.cloudApiBase&&(t.cloudApiBase=String(e.cloudApiBase).replace(/\/+$/,"")),e.freeCourseLimit!=null&& (t.freeCourseLimit=Number(e.freeCourseLimit)||N),e.proBuyUrl&&(t.proBuyUrl=String(e.proBuyUrl).trim()||U)}catch{}}function k(){ let e=t.cloudTier==="pro"?t.cloudProExpireAt?`\u4E13\u4E1A\u7248\uFF08\u81F3 ${new Date(t.cloudProExpireAt*1e3).toLocaleDateString()}\ \uFF09`:"\u4E13\u4E1A\u7248":t.cloudTier==="unknown"?"\u672A\u540C\u6B65":`\u514D\u8D39\u7248\uFF08\u5DF2\u7528 ${t.freeUsedCourses}\ /${t.freeCourseLimit} \u95E8\uFF09`,n=m("nmg-cloud-tier");n&&(n.textContent=e);let o=m("nmg-pro-buy");o&&(o.href=$e());let r=m( "nmg-pro-banner");r&&(r.style.display=Qt()?"none":""),xt()}async function X(e){return Wt(async()=>(await R().catch(()=>{}), await rn().catch(()=>{}),await on().catch(()=>{}),await W(!!e),k(),!0))}var an=120*1e3,B=()=>{},Ne=()=>{},Q=()=>{},_t=async()=>({ok:!0,skipped:!0});function jt(e){e&&typeof e.upd=="function"&& (B=e.upd),e&&typeof e.hint=="function"&&(Ne=e.hint),e&&typeof e.clear=="function"&&(Q=e.clear),e&&typeof e.exam=="functi\ on"&&(_t=e.exam)}function sn(e){return(e&&e.chapter||[]).filter(o=>t.onlyIncomplete?!Se(o):!0)}async function ln(e){let n=await v("/api/C\ ourse/Play",{chapterid:e});return n&&n.res||{times:0}}async function yt(e,n){return await v("/api/Course/Times",{ChapterID:e, times:Math.floor(Number(n)||0)})}async function cn(e,n){return await v("/api/Course/Chapter",{ChapterID:e,ClassID:n,wx:0})} function Pe(e,n,o){let r=o>0?Math.min(100,Math.round(n/o*100)):0,a=e?`${e} \xB7 `:"";Ne(`\u5B66\u4E60\u4E2D \xB7 ${a}${S( n)}/${S(o)} ${r}% \xB7 \u811A\u672C\u8FD0\u884C\u4E2D`),t.task=`${y(e||"\u5B66\u4E60\u4E2D",10)} \xB7 ${S(n)}/${S(o)}`,B()} async function Me(e,n){let o=Math.max(0,Number(e)||0)*1e3,r=0;for(;o>0&&!t.stopFlag;){let a=Math.min(5e3,o);if(await H(a), o-=a,r+=a,typeof n=="function"&&r>=an){r=0;try{n(o)}catch{}}}}async function wt(e,n,o,r){let a=Math.floor(Number(n)||0), s=Math.floor(Number(o)||0),i=Math.max(0,s-a),l=Math.floor(Number(r&&r.duration)||0),u=r&&r.chapterLabel||"",d=Date.now(), g=()=>{let x=Math.floor((Date.now()-d)/1e3),c=Math.min(s,a+Math.max(0,x));Pe(u,c,l)};if(i>0&&await Me(i,g),t.stopFlag)return null; try{return await yt(e,s)}catch(x){let c=String(x.message||x);if(!/播放速度异常|速度异常/.test(c))throw x;let f=Math. max(i,60);return p(`\u5E73\u53F0\u9650\u901F\uFF1A\u8865\u7B49 ${S(f)} \u540E\u91CD\u8BD5 ${S(s)}\u2026`,"progress"),await Me( f,g),t.stopFlag?null:await yt(e,s)}}async function un(e,n,o){let r=Math.floor(Number(n.duration)||0),a=n.name||n.title|| `\u7B2C${n.index||"?"}\u7AE0`;if(r<=0)throw new Error(`\u7AE0\u8282\u300C${a}\u300D\u65E0\u6709\u6548\u65F6\u957F`);let s=await ln( n.id),i=Math.floor(Number(s.times)||0);i<0&&(i=0);let l=Math.floor(n.lastTime||r*.98),u=Je,d=e.name||e.title||"",g={duration:r, chapterLabel:a};for(t.currentCourse=d,t.currentChapter=a,t.task=`${y(d,14)} \xB7 ${y(a,12)}`,Pe(a,i,r),p(`\u5F00\u59CB\u5B66\u4E60 \xB7 ${d}\ \xB7 ${a}\uFF08\u5DF2\u770B ${S(i)}/${S(r)}\uFF09`,"progress"),i>=l&&p("\u672C\u7AE0\u8FDB\u5EA6\u5DF2\u8FBE\u5B8C\u64AD\u9608\u503C\uFF0C\u63D0\u4EA4\u7AE0\u8282\u5B8C\u6210\u2026", "info");il&&(c=l),c<=i&&(c=Math.min(i+1,l)),await wt(n.id,i,c,g),t.stopFlag)return;i=c, Pe(a,i,r)}if(t.stopFlag||(i{};function vt(e){Ie=typeof e=="function"?e:()=>{}}function Ue(e,n){let o=String(e||"").trim();if(o)return`id\ :${o}`;let r=String(n||"").replace(/<[^>]+>/g,"").replace(/\s+/g,"").slice(0,80);return r?`stem:${r}`:""}function pe(e){ return e?((!t.examBank||typeof t.examBank!="object")&&(t.examBank={}),t.examBank[e]||null):null}function Ae(e,n){if(!e)return; (!t.examBank||typeof t.examBank!="object")&&(t.examBank={});let o=t.examBank[e]||{};t.examBank[e]={...o,...n}}function dn(e){ let n=0,o=0,r=e&&e.questions||[];for(let a of r){let s=Ue(a.subject_code,a.subject);if(!s)continue;let i=String(a.subject_type_code|| ""),l=String(a.selects||"").trim(),u=String(a.result||"").trim(),d=String(a.right??""),g=pe(s)||{type:i,tried:[]};if(d=== "1"||d==="true"){l&&(Ae(s,{type:i,answer:l,tried:[]}),n+=1);continue}if(u){Ae(s,{type:i,answer:u,tried:[]}),n+=1;continue} if(l){let x=Array.isArray(g.tried)?g.tried.slice():[];x.includes(l)||x.push(l),Ae(s,{type:i,tried:x,answer:g.answer||""}), o+=1}}return(n||o)&&ft(),{learned:n,markedWrong:o,total:r.length}}function pn(e){return(e.list||e.options||[]).map(o=>String( o.result_id||"")).filter(Boolean)}function fn(e,n){let o=new Set((n||[]).map(String));for(let r of e)if(!o.has(r))return r; return e[0]||"A"}function mn(e,n){let o=new Set((n||[]).map(String)),r=e.join(""),a=[];if(e.length){a.push(r);for(let s=0;s< e.length;s++)a.push(e.filter((i,l)=>l!==s).join(""));for(let s=1;s{},St=()=>{},Re=()=>{},qe=()=>{};function kt(e){e&&(e.upd&&(I=e.upd),e.hint&&(St=e.hint),e.clear&&(Re=e.clear), e.lists&&(qe=e.lists))}async function De(){if(!t.running){t.running=!0,t.stopFlag=!1;try{p("\u5237\u65B0\u8BFE\u7A0B\u5217\u8868\u2026", "info"),await J({enrich:!1}),qe();let e=O().filter(n=>t.onlyIncomplete?ke(n)||w(n)?!1:Y(n)?!!(t.autoExam&&n.isExam):!0:!0); if(t.queueVideoTotal=0,t.queueVideoDone=0,t.queueExamTotal=e.filter(n=>n.isExam&&Y(n)&&!w(n)).length,t.queueExamDone=0,I(), !e.length){p("\u52FE\u9009\u8BFE\u7A0B\u5747\u5DF2\u5B66\u5B8C\uFF0C\u65E0\u9700\u7EE7\u7EED","info");return}p(`\u5F00\u59CB\u987A\u5E8F\u5B66\u4E60 \xB7\ ${e.length} \u95E8\u8BFE${t.autoExam?"\uFF08\u542B\u81EA\u52A8\u8003\u8BD5\uFF09":""}`,"info");for(let n of e){if(t.stopFlag) break;try{await W(!1),await zt(n)}catch(o){p(`\u65E0\u6CD5\u7EE7\u7EED: ${o.message||o}`,"error");break}try{await Et(n)}catch(o){ p(`\u8BFE\u7A0B\u5931\u8D25\u300C${n.name||n.id}\u300D: ${o.message||o}`,"error")}}t.stopFlag||(p("\u5168\u90E8\u4EFB\u52A1\u5B8C\u6210", "info"),await J({enrich:!1}),qe())}catch(e){p(`\u9519\u8BEF: ${e.message||e}`,"error")}finally{t.running=!1,t.enabled=!1, GM_setValue(z.enabled,!1),t.stopFlag||(t.task="",t.currentCourse="",t.currentChapter="",t.activeCourse=null),I()}}}function fe(){ t.stopFlag=!0,t.enabled=!1,GM_setValue(z.enabled,!1),t.task="\u5DF2\u505C\u6B62",Re(),I(),p("\u81EA\u52A8\u770B\u8BFE\u5DF2\u6682\u505C", "info")}function Lt(){if(!(t.running||t.enabled)){if(t.pace=P.realtime,GM_setValue(z.pace,t.pace),t.selectMode==="none"|| !O().length){St("\u8BF7\u5148\u52FE\u9009\u81F3\u5C11\u4E00\u95E8\u8BFE\u7A0B"),I();return}Re(),R().then(()=>W(!0)).then( ()=>{t.enabled=!0,t.stopFlag=!1,GM_setValue(z.enabled,!0),I(),p("\u81EA\u52A8\u770B\u8BFE\u5DF2\u5F00\u542F","info"),De()}). catch(e=>{p(`\u65E0\u6CD5\u5F00\u59CB: ${e.message||e}`,"error"),I()})}}function Z(){A&&(A.cloudTier=t.cloudTier,A.freeUsedCourses=t.freeUsedCourses,A.freeCourseLimit=t.freeCourseLimit,A.running= !!(t.running||t.enabled))}function Tt(e,n){if(!(!e||!n||typeof n.createPinia!="function"))try{let{createPinia:o,defineStore:r}=n, a=r("nmg12371",{state:()=>({cloudTier:t.cloudTier,freeUsedCourses:t.freeUsedCourses,freeCourseLimit:t.freeCourseLimit,running:!1})}), s=o(),i=e.createApp({render:()=>null});i.use(s);let l=document.createElement("div");l.style.display="none",document.body. appendChild(l),i.mount(l),et(a()),Z()}catch{}}var $t=null,Pt=null;function bn(){let e=m("nmg-start"),n=m("nmg-stop");e&&(e.disabled=!!t.enabled||!!t.running,e.classList. toggle("zjzx-btn-off",!!t.enabled||!!t.running)),n&&(n.disabled=!t.enabled&&!t.running,n.classList.toggle("zjzx-btn-off", !t.enabled&&!t.running))}function xe(e){t.panelHint=String(e||"");let n=m("nmg-start-hint");n&&(t.panelHint?(n.style.display= "",n.textContent=t.panelHint):(n.style.display="none",n.textContent=""))}function ee(){xe("")}function hn(){let e=O(),n=0, o=0,r=0,a=0;for(let s of e)n+=1,D(s)>=99.5&&(o+=1),s.isExam&&(r+=1,(s.myExamStatus||{}).isPass&&(a+=1));t.queueVideoTotal= n,t.queueVideoDone=o,t.queueExamTotal=t.autoExam?r:0,t.queueExamDone=t.autoExam?a:0}function E(){hn();let e=m("nmg-auto-\ status");e&&(t.running||t.enabled?(e.textContent=t.running?"\u8FD0\u884C\u4E2D":"\u5DF2\u5F00\u542F",e.style.background= "#dcfce7",e.style.borderColor="#86efac",e.style.color="#166534"):(e.textContent="\u5DF2\u505C\u6B62",e.style.background= "#fff",e.style.borderColor="#cbd5e1",e.style.color="#334155"));let n=t.queueVideoDone,o=t.queueVideoTotal,r=o>0?Math.round( n/o*100):0,a=(x,c)=>{let f=m(x);f&&(f.textContent=c)};a("nmg-queue-done",String(n)),a("nmg-queue-total",String(o)),a("nm\ g-queue-percent",`${r}%`),a("nmg-queue-exam",t.autoExam?`${t.queueExamDone} / ${t.queueExamTotal||"\u2014"}`:"\u2014");let s=m( "nmg-queue-progress");s&&(s.style.width=`${r}%`),a("nmg-current-course",y(t.currentCourse||"\u65E0",28)),a("nmg-current-\ chapter",y(t.currentChapter||"\u65E0",28)),a("nmg-current-task",y(t.task||"\u70B9\u5F00\u59CB\u540E\u81EA\u52A8\u63D0\u4EA4", 36)),a("nmg-account-name",t.userName?t.userName:"\u672A\u8BC6\u522B");let i=m("nmg-current-course"),l=m("nmg-current-cha\ pter"),u=m("nmg-current-task");i&&(i.title=t.currentCourse||""),l&&(l.title=t.currentChapter||""),u&&(u.title=t.task||""); let d=m("nmg-account-name");d&&(d.title=t.userName||"");let g=m("nmg-queue-text");if(g){let c=O().length;t.selectMode=== "none"?g.textContent="\u672A\u52FE\u9009\u4EFB\u4F55\u8BFE\u7A0B":t.selectMode==="all"&&(t.zyCourses?.length||t.gxCourses?. length)?g.textContent=`\u5DF2\u9009\u5168\u90E8 ${c} \u95E8 \xB7 \u89C6\u9891 ${n}/${o}${t.autoExam&&t.queueExamTotal?` \ \xB7 \u8003\u8BD5 ${t.queueExamDone}/${t.queueExamTotal}`:t.autoExam?" \xB7 \u81EA\u52A8\u8003\u8BD5":""}`:g.textContent= c?`\u5DF2\u9009 ${c} \u95E8 \xB7 \u89C6\u9891 ${n}/${o}${t.autoExam&&t.queueExamTotal?` \xB7 \u8003\u8BD5 ${t.queueExamDone}\ /${t.queueExamTotal}`:t.autoExam?" \xB7 \u81EA\u52A8\u8003\u8BD5":""}`:"\u672A\u52FE\u9009\u4EFB\u4F55\u8BFE\u7A0B"}bn(), Z()}function zn(e){let n=m("nmg-auto-panel");n&&(n.querySelectorAll(".zjzx-tab-btn").forEach(o=>{o.classList.toggle("act\ ive",o.dataset.tab===e)}),n.querySelectorAll(".zjzx-pane").forEach(o=>{o.classList.toggle("active",o.dataset.pane===e)}))} function Oe(e,n){let o=e.querySelector("#nmg-btn-min"),r=e.querySelector("#nmg-btn-max");e.classList.toggle("zjzx-panel-\ min",!!n),e.classList.toggle("zjzx-panel-max",!n),o&&(o.style.display=n?"none":""),r&&(r.style.display=n?"":"none")}function yn(e){ let n=e.querySelector("#nmg-panel-header");if(!n)return;let o=!1,r=0,a=0,s=0,i=0;n.addEventListener("mousedown",l=>{if(l. target?.closest("#nmg-panel-controls, .zjzx-panel-ctl"))return;o=!0,r=l.clientX,a=l.clientY;let u=e.getBoundingClientRect(); s=u.left,i=u.top,e.style.right="auto",e.style.bottom="auto",l.preventDefault()}),document.addEventListener("mousemove",l=>{ if(!o)return;let u=Math.max(0,Math.min(window.innerWidth-e.offsetWidth,s+(l.clientX-r))),d=Math.max(0,Math.min(window.innerHeight- e.offsetHeight,i+(l.clientY-a)));e.style.left=`${u}px`,e.style.top=`${d}px`}),document.addEventListener("mouseup",()=>{if(!o) return;o=!1;let l=e.getBoundingClientRect();V(z.panelPos,{left:l.left,top:l.top})})}function wn(e){let n=document.createElement( "style");n.textContent=` :host{all:initial;} #nmg-auto-panel{position:fixed;right:20px;top:80px;z-index:999999;width:412px;display:flex;flex-direction:column;bac\ kground:#f4f7fb;border:1px solid #dbe4f0;border-radius:16px;box-shadow:0 16px 40px rgba(15,23,42,.17);font-family:-apple\ -system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px;color:#0f172a;ove\ rflow:hidden;transition:max-height .22s ease,box-shadow .22s ease;} #nmg-auto-panel.zjzx-panel-max{max-height:min(92vh,780px);} #nmg-auto-panel.zjzx-panel-min{max-height:none;box-shadow:0 10px 28px rgba(15,23,42,.14);} #nmg-auto-panel.zjzx-panel-min #nmg-panel-header{border-bottom:none;} #nmg-auto-panel.zjzx-panel-min #nmg-panel-body,#nmg-auto-panel.zjzx-panel-min #nmg-panel-footer,#nmg-auto-panel.zjzx\ -panel-min .zjzx-footer-extra{display:none !important;} #nmg-panel-header{flex:0 0 auto;padding:8px 11px;background:linear-gradient(180deg,#f8ecd5,#f4e8cf);border-bottom:1p\ x solid #e5dbc6;display:flex;justify-content:space-between;align-items:center;cursor:move;user-select:none;} #nmg-panel-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px;} .zjzx-footer-extra{flex:0 0 auto;} #nmg-panel-footer{flex:0 0 auto;padding:7px 11px;background:#eef2f7;border-top:1px solid #dbe4f0;font-size:12px;} #nmg-panel-brand{display:flex;align-items:center;gap:9px;min-width:0;flex:1;} #nmg-panel-logo{width:30px;height:30px;border-radius:9px;object-fit:cover;box-shadow:0 2px 9px rgba(15,23,42,.11);bo\ rder:1px solid rgba(148,163,184,.45);background:#fff;flex:0 0 auto;} #nmg-panel-title{font-size:13px;font-weight:900;color:#9a3412;line-height:1.26;display:flex;align-items:flex-start;g\ ap:5px;flex-wrap:wrap;} .zjzx-panel-title-text{flex:1 1 12em;min-width:0;letter-spacing:-0.01em;} #nmg-panel-sub{display:flex;flex-wrap:wrap;align-items:center;gap:3px 5px;margin-top:3px;line-height:1.32;} .zjzx-sub-chip{font-size:11px;color:#7c2d12;background:rgba(255,255,255,.62);padding:2px 7px;border-radius:999px;bor\ der:1px solid rgba(180,83,9,.18);font-weight:700;} .zjzx-sub-chip-em{color:#0f766e;background:rgba(236,253,245,.9);border-color:rgba(15,118,110,.28);} .zjzx-sub-dot{color:#d6d3d1;font-size:10px;font-weight:400;} .zjzx-panel-ctl .zjzx-ctl-ico{display:block;box-sizing:border-box;margin:0 auto;} .zjzx-ctl-min{width:10px;height:2px;background:#64748b;border-radius:1px;} .zjzx-ctl-plus{font-size:16px;line-height:1;font-weight:700;color:#64748b;} .zjzx-panel-version{font-size:11px;font-weight:900;color:#64748b;padding:2px 7px;border-radius:999px;background:#f1f\ 5f9;border:1px solid #e2e8f0;} #nmg-panel-controls{display:flex;align-items:center;gap:5px;flex:0 0 auto;} .zjzx-panel-ctl{border:none;background:#fff;color:#64748b;width:28px;height:28px;border-radius:999px;cursor:pointer;\ box-shadow:0 1px 2px rgba(15,23,42,.1);font-size:15px;line-height:1;font-weight:900;padding:0;} .zjzx-card{background:#fff;border:1px solid #d9e2ee;border-radius:12px;padding:7px 9px;margin-bottom:7px;} .zjzx-card-status{padding:6px 8px;margin-bottom:6px;} .zjzx-status-row{display:flex;justify-content:space-between;align-items:center;gap:7px;line-height:1.28;} .zjzx-status-label{font-size:11px;color:#64748b;font-weight:700;} .zjzx-status-main{margin-top:3px;} .zjzx-status-metrics{display:flex;align-items:center;gap:5px;font-size:12px;color:#475569;min-width:0;flex:1;} .zjzx-status-metrics em{font-style:normal;font-weight:900;color:#0f172a;} .zjzx-metric-div{color:#cbd5e1;} .zjzx-card-status .zjzx-progress-pct{font-size:14px;font-weight:900;color:#0369a1;flex:0 0 auto;} .zjzx-card-status .zjzx-progress-bar{height:5px;margin-top:4px;margin-bottom:0;} .zjzx-progress-bar{height:9px;border-radius:999px;background:#e2e8f0;overflow:hidden;margin-top:5px;} .zjzx-progress-bar>span{display:block;height:100%;width:0;background:linear-gradient(90deg,#22d3ee,#2563eb);transiti\ on:width .2s ease;} .zjzx-list-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;} .zjzx-list-head-actions{display:flex;align-items:center;gap:5px;} .zjzx-log-clear-btn{border:1px solid #cbd5e1;background:#fff;color:#64748b;padding:1px 7px;border-radius:999px;font-\ size:10px;font-weight:700;cursor:pointer;line-height:1.4;} .zjzx-plan-select{width:100%;border:1px solid #cbd5e1;border-radius:8px;padding:6px 9px;font-size:12px;background:#f\ ff;color:#0f172a;} .zjzx-list-title{font-size:12px;color:#64748b;font-weight:700;} .zjzx-list-tag{font-size:11px;color:#92400e;background:#ffedd5;border:1px solid #fdba74;border-radius:999px;padding:\ 2px 7px;} .zjzx-empty-state{padding:12px 7px;text-align:center;color:#94a3b8;font-size:12px;font-weight:900;} #nmg-course-list,#nmg-completed-list,#nmg-run-log{max-height:188px;overflow-y:auto;background:#f8fafc;border:1px sol\ id #dbe4f0;border-radius:11px;padding:5px;} .zjzx-chapter-course{margin-bottom:7px;border:1px solid #dbe4f0;border-radius:9px;background:#fff;overflow:hidden;} .zjzx-chapter-title{padding:6px 9px;background:#eaf1ff;border-bottom:1px solid #dbe4f0;color:#1d4ed8;font-size:12px;\ font-weight:700;display:flex;justify-content:space-between;gap:8px;} .zjzx-chapter-item{padding:5px 9px;font-size:12px;display:flex;justify-content:space-between;gap:7px;border-bottom:1\ px dashed #eef2f7;} .zjzx-chapter-item:last-child{border-bottom:none;} .zjzx-footer-extra{padding:6px 9px;background:#f8fafc;border-top:1px solid #e2e8f0;opacity:.95;} .zjzx-ann{position:relative;font-size:12px;color:#334155;line-height:1.42;background:linear-gradient(180deg,#fffdf5,\ #fff7e6);border:1px solid #fcd34d;border-radius:11px;padding:8px 9px 8px 11px;margin-bottom:0;} .zjzx-ann-text{display:block;word-break:break-word;} .zjzx-ann::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#f5\ 9e0b,#ef4444);border-top-left-radius:11px;border-bottom-left-radius:11px;} .zjzx-qq-row{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-top:5px;} .zjzx-qq-text{font-size:12px;color:#475569;} .zjzx-qq-title{font-size:13px;font-weight:800;color:#0f172a;} .zjzx-qq-btn{border:none;background:linear-gradient(135deg,#1d4ed8,#0ea5e9);color:#fff;padding:5px 12px;border-radiu\ s:999px;font-size:12px;font-weight:800;cursor:pointer;} .zjzx-study-mode-hint{margin-top:5px;padding:7px 9px;border-radius:9px;border:1px solid #e2e8f0;font-size:11px;line-\ height:1.42;} .zjzx-study-mode-hint-title{display:block;font-weight:800;margin-bottom:3px;} .zjzx-study-mode-hint-body{margin:0;color:#475569;} .zjzx-study-mode-hint-efficiency{background:linear-gradient(135deg,#eff6ff,#f0f9ff);border-color:#bfdbfe;color:#1e3a\ 8a;} .zjzx-study-mode-hint-realtime{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#f59e0b;color:#78350f\ ;} .zjzx-start-hint{font-size:11px;color:#b45309;background:#fffbeb;border:1px solid #fcd34d;border-radius:7px;padding:\ 5px 7px;margin-bottom:5px;line-height:1.32;text-align:center;font-weight:600;} .zjzx-tabbar{display:flex;gap:6px;margin-bottom:7px;} .zjzx-tab-btn{flex:1;border:1px solid #cbd5e1;background:#f8fafc;color:#475569;padding:4px 4px;border-radius:9px;cur\ sor:pointer;font-weight:700;font-size:11px;} .zjzx-tab-btn.active{background:linear-gradient(135deg,#1d4ed8,#0ea5e9);color:#fff;border-color:transparent;} .zjzx-pane{display:none;}.zjzx-pane.active{display:block;} .zjzx-btn-row{display:flex;gap:7px;margin-bottom:6px;flex-wrap:wrap;} .zjzx-btn-row-nowrap{flex-wrap:nowrap;} .zjzx-btn{flex:1;border:none;color:#fff;padding:7px 9px;border-radius:10px;cursor:pointer;font-weight:800;font-size:\ 12px;min-width:68px;} .zjzx-btn-action{min-width:0 !important;flex:1 1 0 !important;} .zjzx-btn-ico{font-size:13px;line-height:1;display:inline-flex;align-items:center;margin-right:5px;} .zjzx-btn-label{white-space:nowrap;} .zjzx-btn-start{background:#16a34a;}.zjzx-btn-stop{background:#ef4444;} .zjzx-btn-start.zjzx-btn-off,.zjzx-btn-start:disabled{background:#cbd5e1 !important;color:#64748b !important;cursor:\ not-allowed;box-shadow:none;pointer-events:none;} .zjzx-btn-stop.zjzx-btn-off,.zjzx-btn-stop:disabled{background:#e2e8f0 !important;color:#94a3b8 !important;cursor:no\ t-allowed;box-shadow:none;pointer-events:none;} .zjzx-btn-ghost{border:1px solid #cbd5e1;background:#fff;color:#0f172a;flex:0 0 auto;} .zjzx-meta-row{display:flex;justify-content:space-between;gap:7px;font-size:12px;margin-bottom:5px;align-items:cente\ r;} .zjzx-meta-label{color:#64748b;}.zjzx-meta-value{font-weight:700;text-align:right;} .zjzx-card-current{padding:5px 8px;margin-bottom:6px;} .zjzx-card-current .zjzx-meta-row{font-size:11px;margin-bottom:2px;gap:5px;line-height:1.28;align-items:flex-start;}\ .zjzx-card-current .zjzx-meta-row:last-child{margin-bottom:0;} .zjzx-card-current .zjzx-meta-label{flex:0 0 auto;font-size:10px;white-space:nowrap;} .zjzx-card-current .zjzx-meta-value{flex:1 1 auto;min-width:0;font-size:11px;font-weight:600;text-align:right;word-b\ reak:break-all;line-height:1.28;} .zjzx-card-actions{padding:6px 8px;} .zjzx-study-mode-block{margin-bottom:5px;} .zjzx-study-mode-block .zjzx-study-mode-row{display:flex;align-items:center;gap:5px;margin-bottom:0;} .zjzx-study-mode-block .zjzx-plan-select{flex:1 1 auto;min-width:0;width:auto;padding:3px 22px 3px 7px;font-size:11p\ x;line-height:1.25;border-radius:7px;} #nmg-auto-status{padding:2px 7px;border-radius:999px;font-weight:900;font-size:11px;background:#fff;border:1px solid\ #cbd5e1;} .zjzx-log-row{padding:4px 6px;border-bottom:1px dashed #d4deea;font-size:12px;line-height:1.42;} .zjzx-log-row.err{color:#b91c1c}.zjzx-log-row.prog{color:#0369a1} .zjzx-settings-check{display:flex;gap:6px;align-items:center;margin:6px 0;font-size:12px;font-weight:700;color:#3341\ 55;} .zjzx-pro-banner{margin:0 0 8px;padding:9px 10px;border-radius:11px;background:linear-gradient(135deg,#fff7ed,#fef3c\ 7);border:1px solid #fdba74;} .zjzx-pro-banner-title{font-size:12px;font-weight:900;color:#9a3412;margin-bottom:3px;} .zjzx-pro-banner-desc{font-size:11px;color:#78350f;line-height:1.38;margin-bottom:7px;} .zjzx-btn-pro{display:inline-block;text-decoration:none;background:linear-gradient(135deg,#ea580c,#f59e0b);color:#ff\ f;padding:6px 12px;border-radius:999px;font-size:11px;font-weight:800;} .zjzx-token-input{flex:1;min-width:0;border:1px solid #cbd5e1;border-radius:8px;padding:5px 8px;font-size:12px;} `,e.appendChild(n)}function me(){let e=m("nmg-run-log");e&&T(e,t.logs.slice(0,80).map(n=>{let o=n.type==="error"?"err": n.type==="progress"?"prog":"",r=new Date(n.t).toLocaleTimeString();return`
[${r}] ${j(n.msg)}\
`}).join(""))}function _n(){let e=[],n=[m("nmg-course-list"),m("nmg-completed-list")];for(let r of n)r&&r.querySelectorAll( 'input[type="checkbox"]').forEach(a=>{a.checked&&e.push(a.getAttribute("data-id"))});let o=(t.zyCourses?.length||0)+(t.gxCourses?. length||0);e.length?o>0&&e.length===o?(t.selectMode="all",t.selectedIds=new Set):(t.selectMode="partial",t.selectedIds=new Set( e)):(t.selectMode="none",t.selectedIds=new Set),ce(),ee(),E()}function Mt(e){e&&e.querySelectorAll('input[type="checkbox\ "]').forEach(n=>{n.addEventListener("change",()=>_n())})}function F(){let e=m("nmg-course-list");if(!e)return;let n=t.zyCourses|| t.learningCourses||[];if(!n.length){T(e,'
\u6682\u65E0\u4E13\u4E1A\u8BFE
\u767B\u5F55\u540E\u5C06\u81EA\u52A8\u52A0\u8F7D\uFF0C\u4E5F\u53EF\u70B9\u300C\u5237\u65B0\u8BFE\u7A0B\u300D
'), E();return}let o=t.activeCourse&&t.activeCourse.id;T(e,n.map(r=>Te(r,{checkable:!0,checked:Ce(r.id),isActive:r.id===o})). join("")),Mt(e),E()}function G(){let e=m("nmg-completed-list");if(!e)return;let n=t.gxCourses||t.completedCourses||[];if(!n. length){T(e,'
\u6682\u65E0\u516C\u9700\u8BFE
\u767B\u5F55\u540E\u5C06\u81EA\u52A8\u52A0\u8F7D
'); return}let o=t.activeCourse&&t.activeCourse.id;T(e,n.map(r=>Te(r,{checkable:!0,checked:Ce(r.id),isActive:r.id===o})).join( "")),Mt(e)}async function Be(){let e=m("nmg-course-list");e&&T(e,'
\u6B63\u5728\u52A0\u8F7D\u8BFE\u7A0B\u2026
'); try{let{all:n}=await J({enrich:!1});F(),G(),E();let o=t.userName?` \xB7 \u5F53\u524D\u8D26\u53F7 ${t.userName}`:"";p(`\u5DF2\u52A0\ \u8F7D\u5217\u8868 \xB7 \u4E13\u4E1A\u8BFE ${(t.zyCourses||[]).length} \xB7 \u516C\u9700\u8BFE ${(t.gxCourses||[]).length}${o}\ \uFF08\u6B63\u5728\u540C\u6B65\u7AE0\u8282\u8FDB\u5EA6\u2026\uFF09`,"info"),n&&n.length&&(await Le(n,()=>{F(),G(),E()}), F(),G(),p(`\u8FDB\u5EA6\u5DF2\u540C\u6B65 \xB7 \u4E13\u4E1A\u8BFE ${(t.zyCourses||[]).length} \xB7 \u516C\u9700\u8BFE ${(t. gxCourses||[]).length}${o}`,"info"),E())}catch(n){let o=n&&n.message?n.message:String(n);throw p(`\u52A0\u8F7D\u8BFE\u7A0B\u5931\u8D25: ${o}`, "error"),e&&T(e,`
\u52A0\u8F7D\u5931\u8D25
${j( o)}
\u8BF7\u786E\u8BA4\u5DF2\u767B\u5F55\u672C\u7AD9\u540E\u70B9\u300C\u5237\u65B0\u8BFE\u7A0B\u300D
`), n}}function Nt(){let e=document.getElementById("nmg-panel-host");e&&e.remove(),Ee(null)}function ge(){document.getElementById( "jslpa-guide-panel")?.remove(),document.getElementById("jslpa-guide-style")?.remove()}function jn(){if(document.getElementById( "jslpa-guide-style")||!document.head)return;let e=document.createElement("style");e.id="jslpa-guide-style",e.textContent= ` #jslpa-guide-panel{position:fixed;right:20px;top:80px;z-index:999999;width:360px;background:#f4f7fb;border:1px solid\ #dbe4f0;border-radius:16px;box-shadow:0 16px 40px rgba(15,23,42,.17);font-family:-apple-system,BlinkMacSystemFont,"Sego\ e UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;color:#0f172a;overflow:hidden;} #jslpa-guide-panel .jslpa-guide-hd{display:flex;align-items:center;gap:8px;padding:10px 12px;background:linear-gradi\ ent(180deg,#eff6ff,#e0f2fe);border-bottom:1px solid #dbe4f0;cursor:move;user-select:none;} #jslpa-guide-panel .jslpa-guide-hd img{width:28px;height:28px;border-radius:8px;object-fit:cover;border:1px solid rg\ ba(148,163,184,.45);background:#fff;} #jslpa-guide-panel .jslpa-guide-title{font-size:13px;font-weight:900;color:#1d4ed8;} #jslpa-guide-panel .jslpa-guide-bd{padding:12px;font-size:12px;line-height:1.55;color:#334155;} #jslpa-guide-panel .jslpa-guide-bd h4{margin:0 0 8px;font-size:13px;color:#0f172a;} #jslpa-guide-panel .jslpa-guide-bd ol{margin:0 0 10px;padding-left:18px;} #jslpa-guide-panel .jslpa-guide-bd li{margin:4px 0;} #jslpa-guide-panel .jslpa-guide-tip{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:8px 10px;\ color:#1e40af;font-weight:700;} #jslpa-guide-panel .jslpa-guide-actions{display:flex;gap:8px;margin-top:10px;} #jslpa-guide-panel .jslpa-guide-btn{flex:1;border:none;border-radius:10px;padding:8px 10px;font-weight:800;cursor:po\ inter;background:linear-gradient(135deg,#1d4ed8,#0ea5e9);color:#fff;} #jslpa-guide-panel .jslpa-guide-btn.ghost{background:#fff;color:#0f172a;border:1px solid #cbd5e1;} `,document.head.appendChild(e)}function At(){if(document.getElementById("jslpa-guide-panel"))return;jn();let e=document. createElement("div");e.id="jslpa-guide-panel",e.innerHTML=`
\u8BF7\u5230\u300C\u6211\u7684\u8BFE\u7A0B\u300D\u4F7F\u7528\u52A9\u624B

\u4F7F\u7528\u8BF4\u660E

  1. \u6253\u5F00\u5DE6\u4FA7/\u9876\u90E8\u83DC\u5355\u8FDB\u5165 \u6211\u7684\u8BFE\u7A0B
  2. \u5730\u5740\u9700\u4E3A /UserView/CourseList
  3. \u4EC5\u5728\u8BE5\u9875\u542F\u52A8\u5B8C\u6574\u5B66\u4E60\u9762\u677F\uFF1B\u5176\u4ED6\u9875\u9762\u4E0D\u8FD0\u884C
\u8BF7\u5148\u767B\u5F55\u534F\u4F1A\u7F51\u7AD9\uFF0C\u518D\u8FDB\u5165\u300C\u6211\u7684\u8BFE\u7A0B\u300D\u52FE\u9009\u8BFE\u7A0B\u5E76\u5F00\u59CB\u3002
`,document.body.appendChild(e);let n=e.querySelector("#jslpa-guide-drag"),o=!1,r=0,a=0,s=0,i=0;n?.addEventListener("mo\ usedown",l=>{if(l.button!==0)return;o=!0;let u=e.getBoundingClientRect();r=l.clientX,a=l.clientY,s=u.left,i=u.top,l.preventDefault()}), window.addEventListener("mousemove",l=>{o&&(e.style.left=`${Math.max(8,s+l.clientX-r)}px`,e.style.top=`${Math.max(8,i+l. clientY-a)}px`,e.style.right="auto")}),window.addEventListener("mouseup",()=>{o=!1}),e.querySelector("#jslpa-guide-go")?. addEventListener("click",()=>{location.href=Ye()}),e.querySelector("#jslpa-guide-hide")?.addEventListener("click",()=>{e. remove()})}function It(e,n,o){ge();let r=document.getElementById("nmg-panel-host");r&&r.remove();let a=document.createElement( "div");a.id="nmg-panel-host",document.body.appendChild(a);let s=a.attachShadow({mode:"closed"});wn(s);let i=document.createElement( "div");s.appendChild(i),Ee(i);let l=t.remotePanelNotice||Xe,u=String(typeof GM_info<"u"&&GM_info?.script?.version||"").trim(), d=document.createElement("div");d.id="nmg-auto-panel",d.className="zjzx-panel-max",d.innerHTML=`
${j(He)}\ v${j(u)}
\u4E00\u952E\u5B8C\u6210\u89C6\u9891\u5B66\u65F6\xB7\u5B66\u5B8C\u81EA\u52A8\u8003\u8BD5\xB7\u7701\u65F6\u7701\u5FC3
\u8FD0\u884C\u72B6\u6001 \u5DF2\u505C\u6B62
\u5F53\u524D\u8D26\u53F7 \u672A\u8BC6\u522B
0/0 \u89C6\u9891\u5DF2\u5B66\u4E60 \xB7 \u8003\u8BD5 \u2014
0%
\u4E13\u4E1A\u8BFE
\u4E13\u4E1A
\u6B63\u5728\u52A0\u8F7D\u4E13\u4E1A\u8BFE\u2026
\u516C\u9700\u8BFE
\u516C\u9700
\u6B63\u5728\u52A0\u8F7D\u516C\u9700\u8BFE\u2026
\u8FD0\u884C\u65E5\u5FD7
\u5B9E\u65F6\u65E5\u5FD7
\u5347\u7EA7\u4E13\u4E1A\u7248
\u514D\u8D39\u53EF\u4F53\u9A8C ${t.freeCourseLimit} \u95E8\u8BFE\uFF08\u542B\u89C6\u9891\u5B66\u65F6\u4E0E\u8BFE\u540E\u8003\u8BD5\uFF09\uFF1B\u4E13\u4E1A\u7248\u4E0D\u9650\u8BFE\u7A0B\ \u6570\uFF0C\u6FC0\u6D3B\u540E\u7EA6 30 \u5929\u6709\u6548\u3002
\u7ACB\u5373\u8D2D\u4E70\u4E13\u4E1A\u7248
\u4E13\u4E1A\u7248\u4F1A\u5458
\u4F1A\u5458\u72B6\u6001\u52A0\u8F7D\u4E2D\u2026
\u6FC0\u6D3B\u7801
\u5F53\u524D\u8BFE\u7A0B\u65E0
\u5F53\u524D\u7AE0\u8282\u65E0
\u5F53\u524D\u4EFB\u52A1\u70B9\u5F00\u59CB\u540E\u81EA\u52A8\u63D0\u4EA4
`,i.appendChild(d);let g=q(z.panelPos,null);g&&g.left!=null&&(d.style.left=`${g.left}px`,d.style.top=`${g.top}px`,d.style. right="auto"),Oe(d,!!GM_getValue(z.collapsed,!1)),yn(d),m("nmg-btn-min")?.addEventListener("click",c=>{c.stopPropagation(), GM_setValue(z.collapsed,!0),Oe(d,!0)}),m("nmg-btn-max")?.addEventListener("click",c=>{c.stopPropagation(),GM_setValue(z. collapsed,!1),Oe(d,!1)}),d.querySelectorAll(".zjzx-tab-btn").forEach(c=>{c.addEventListener("click",()=>zn(c.dataset.tab))}), m("nmg-clear-log")?.addEventListener("click",()=>{t.logs=[],me()}),m("nmg-select-all")?.addEventListener("click",dt),m("\ nmg-deselect-all")?.addEventListener("click",pt),m("nmg-refresh-courses")?.addEventListener("click",()=>{Be().catch(()=>{})}), m("nmg-start").addEventListener("click",Lt),m("nmg-stop").addEventListener("click",fe),m("nmg-join-qq")?.addEventListener( "click",()=>{try{window.open(Ze,"_blank")}catch{}});let x=m("nmg-cloud-token");x&&(x.value=t.cloudToken||""),m("nmg-save\ -token")?.addEventListener("click",async()=>{let c=m("nmg-save-token");if(c&&c.dataset.busy==="1")return;c&&(c.dataset.busy= "1",c.disabled=!0);let f=String(x?.value||"").trim();t.cloudToken=f,f?localStorage.setItem(L,f):localStorage.removeItem( L),K("",0),t.cloudLease="";try{f&&await ht(),await X(!0),p(f?`\u6FC0\u6D3B\u7801\u5DF2\u4FDD\u5B58 \xB7 ${t.cloudTier=== "pro"?"\u4E13\u4E1A\u7248":"\u514D\u8D39\u7248"}`:"\u5DF2\u6E05\u9664\u6FC0\u6D3B\u7801","info")}catch(b){t.cloudTier=f? "unknown":"free",k(),p(`\u4FDD\u5B58\u5931\u8D25: ${b.message||b}`,"error")}finally{c&&(c.dataset.busy="0",c.disabled=!1)}}), m("nmg-clear-token")?.addEventListener("click",async()=>{t.cloudToken="",localStorage.removeItem(L),K("",0),t.cloudLease= "",t.cloudProExpireAt=0,x&&(x.value="");try{await X(!0),p("\u5DF2\u5207\u6362\u4E3A\u514D\u8D39\u7248","info")}catch(c){ t.cloudTier="free",k(),p(`\u5237\u65B0\u5931\u8D25: ${c.message||c}`,"error")}}),me(),E(),k(),$t=e,Pt=n,Tt($t,Pt),Be().catch( c=>p(`\u52A0\u8F7D\u8BFE\u7A0B\u5931\u8D25: ${c.message}`,"error")).finally(()=>{X(!0).catch(c=>{t.cloudTier=t.cloudToken? "unknown":"free",k(),p(`\u4F1A\u5458\u72B6\u6001\u540C\u6B65\u5931\u8D25: ${c.message||c}`,"error")})}),window.__JSLPA_ACCOUNT_WATCH__|| (window.__JSLPA_ACCOUNT_WATCH__=!0,document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&& (t.running||t.enabled||le().then(c=>{if(c&&c.switched)return Be().then(()=>X(!0))}).catch(()=>{}))}))}function Ut(e){if(typeof e!="function")return()=>{};let n="__JSLPA_SPA_ROUTE_WATCH__";if(window[n])return window[n];let o=`${location. pathname}${location.search}${location.hash}`,r=()=>{let s=`${location.pathname}${location.search}${location.hash}`;if(s!== o){o=s;try{e()}catch{}}},a=s=>function(...i){let l=s.apply(this,i);return queueMicrotask(r),l};try{history.pushState=a(history. pushState.bind(history)),history.replaceState=a(history.replaceState.bind(history))}catch{}return window.addEventListener( "popstate",r),window.addEventListener("hashchange",r),window[n]=()=>{window.removeEventListener("popstate",r),window.removeEventListener( "hashchange",r)},window[n]}var qt="jslpa-hide-rules-modal",En="modalTime";function be(){let e=new Date,n={year:e.getFullYear(),mounth:e.getMonth()+ 1,date:e.getDate(),toggle:1};try{localStorage.setItem(En,JSON.stringify(n))}catch{}}function vn(){if(document.getElementById( qt)||!document.head)return;let e=document.createElement("style");e.id=qt,e.textContent=` #alert2022, #alert2022.el-dialog, .el-dialog__wrapper:has(#alert2022), .v-modal:has(+ .el-dialog__wrapper #alert2022) { display: none !important; visibility: hidden !important; pointer-events: none !important; } `,document.head.appendChild(e)}function Fe(){be();let e=document.getElementById("alert2022");if(e){let o=e.closest(".e\ l-dialog__wrapper")||e;o.style.display="none";let r=document.querySelector(".v-modal");r&&(r.style.display="none")}let n=document. querySelectorAll("a, button, .el-button, span");for(let o of n){let r=String(o.textContent||"").trim();if(r==="\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A"|| r==="\u6211\u77E5\u9053\u4E86"){try{o.click()}catch{}if(r==="\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A")break}}}function Rt(){ if(window.__JSLPA_RULES_SUPPRESS__)return;window.__JSLPA_RULES_SUPPRESS__=!0;let e=()=>{be(),vn(),Fe()};e(),document.readyState=== "loading"&&document.addEventListener("DOMContentLoaded",e,{once:!0});let n=0,o=setInterval(()=>{Fe(),++n>=40&&clearInterval( o)},500);try{new MutationObserver(()=>{document.getElementById("alert2022")&&Fe()}).observe(document.documentElement,{childList:!0, subtree:!0})}catch{}setInterval(be,1800*1e3),document.addEventListener("visibilitychange",()=>{document.visibilityState=== "visible"&&be()})}var Dt=!1,te=!1,Ge=null;function Cn(){Dt||(Dt=!0,nt(me),gt(Z),jt({upd:E,exam:Ct,hint:xe,clear:ee}),vt(E),kt({upd:E,hint:xe, clear:ee,lists:()=>{F(),G()}}),st(()=>{ee(),F(),G(),E()}))}function Sn(){if(te||!Ge)return;te=!0,window[ne]=he,ge(),Cn(), ct();let{Vue:e,Pinia:n,DOMPurify:o}=Ge,r=()=>It(e,n,o);document.readyState==="loading"?document.addEventListener("DOMCon\ tentLoaded",r,{once:!0}):r(),t.enabled&&setTimeout(()=>{te&&ze()&&De()},1200)}function kn(){if(te){try{(t.enabled||t.running)&& fe()}catch{}Nt(),te=!1;try{delete window[ne]}catch{window[ne]=void 0}}}function Ot(){if(ze()){ge(),Sn();return}kn();let e=()=>At(); document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}function Ln(e,n,o,r){window. top===window.self&&(window.__JSLPA_ENTRY__||(window.__JSLPA_ENTRY__=he,Ge={Vue:e,DOMPurify:n,Pinia:o,CryptoJS:r},Rt(),Ot(), Ut(Ot)))}Ln(Vue,DOMPurify,Pinia,CryptoJS);})(); })(Vue,DOMPurify,Pinia,CryptoJS);