Files
claude-mem/plugin/scripts/server-beta-service.cjs
T
2026-05-24 15:16:44 +09:00

9794 lines
1.7 MiB
Plaintext
Executable File

#!/usr/bin/env bun
var __filename = __filename || require("node:path").resolve(process.argv[1] || "");
var __dirname = __dirname || require("node:path").dirname(__filename);
"use strict";var f4=Object.create;var Sc=Object.defineProperty;var m4=Object.getOwnPropertyDescriptor;var h4=Object.getOwnPropertyNames;var y4=Object.getPrototypeOf,b4=Object.prototype.hasOwnProperty;var L=(r,e)=>()=>(r&&(e=r(r=0)),e);var h=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),vi=(r,e)=>{for(var t in e)Sc(r,t,{get:e[t],enumerable:!0})},_x=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of h4(e))!b4.call(r,i)&&i!==t&&Sc(r,i,{get:()=>e[i],enumerable:!(n=m4(e,i))||n.enumerable});return r};var Et=(r,e,t)=>(t=r!=null?f4(y4(r)):{},_x(e||!r||!r.__esModule?Sc(t,"default",{value:r,enumerable:!0}):t,r)),ht=r=>_x(Sc({},"__esModule",{value:!0}),r);var jf=h(($ae,kx)=>{var ls=1e3,us=ls*60,ds=us*60,xi=ds*24,g4=xi*7,v4=xi*365.25;kx.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return x4(r);if(t==="number"&&isFinite(r))return e.long?S4(r):E4(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function x4(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*v4;case"weeks":case"week":case"w":return t*g4;case"days":case"day":case"d":return t*xi;case"hours":case"hour":case"hrs":case"hr":case"h":return t*ds;case"minutes":case"minute":case"mins":case"min":case"m":return t*us;case"seconds":case"second":case"secs":case"sec":case"s":return t*ls;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function E4(r){var e=Math.abs(r);return e>=xi?Math.round(r/xi)+"d":e>=ds?Math.round(r/ds)+"h":e>=us?Math.round(r/us)+"m":e>=ls?Math.round(r/ls)+"s":r+"ms"}function S4(r){var e=Math.abs(r);return e>=xi?wc(r,e,xi,"day"):e>=ds?wc(r,e,ds,"hour"):e>=us?wc(r,e,us,"minute"):e>=ls?wc(r,e,ls,"second"):r+" ms"}function wc(r,e,t,n){var i=e>=t*1.5;return Math.round(r/t)+" "+n+(i?"s":"")}});var Of=h((Vae,Tx)=>{function w4(r){t.debug=t,t.default=t,t.coerce=c,t.disable=a,t.enable=i,t.enabled=o,t.humanize=jf(),t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let p=0;p<u.length;p++)d=(d<<5)-d+u.charCodeAt(p),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u){let d,p=null,f,m;function y(...b){if(!y.enabled)return;let g=y,x=Number(new Date),I=x-(d||x);g.diff=I,g.prev=d,g.curr=x,d=x,b[0]=t.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let k=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(U,re)=>{if(U==="%%")return"%";k++;let Ke=t.formatters[re];if(typeof Ke=="function"){let ie=b[k];U=Ke.call(g,ie),b.splice(k,1),k--}return U}),t.formatArgs.call(g,b),(g.log||t.log).apply(g,b)}return y.namespace=u,y.useColors=t.useColors(),y.color=t.selectColor(u),y.extend=n,y.destroy=t.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(f!==t.namespaces&&(f=t.namespaces,m=t.enabled(u)),m),set:b=>{p=b}}),typeof t.init=="function"&&t.init(y),y}function n(u,d){let p=t(this.namespace+(typeof d>"u"?":":d)+u);return p.log=this.log,p}function i(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?t.skips.push(p.slice(1)):t.names.push(p)}function s(u,d){let p=0,f=0,m=-1,y=0;for(;p<u.length;)if(f<d.length&&(d[f]===u[p]||d[f]==="*"))d[f]==="*"?(m=f,y=p,f++):(p++,f++);else if(m!==-1)f=m+1,y++,p=y;else return!1;for(;f<d.length&&d[f]==="*";)f++;return f===d.length}function a(){let u=[...t.names,...t.skips.map(d=>"-"+d)].join(",");return t.enable(""),u}function o(u){for(let d of t.skips)if(s(u,d))return!1;for(let d of t.names)if(s(u,d))return!0;return!1}function c(u){return u instanceof Error?u.stack||u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}Tx.exports=w4});var Ax=h((Dt,Ic)=>{Dt.formatArgs=_4;Dt.save=k4;Dt.load=T4;Dt.useColors=I4;Dt.storage=A4();Dt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Dt.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function I4(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let r;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function _4(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Ic.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(t++,i==="%c"&&(n=t))}),r.splice(n,0,e)}Dt.log=console.debug||console.log||(()=>{});function k4(r){try{r?Dt.storage.setItem("debug",r):Dt.storage.removeItem("debug")}catch{}}function T4(){let r;try{r=Dt.storage.getItem("debug")||Dt.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function A4(){try{return localStorage}catch{}}Ic.exports=Of()(Dt);var{formatters:K4}=Ic.exports;K4.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var jx={};vi(jx,{createSupportsColor:()=>Cf,default:()=>D4});function er(r,e=globalThis.Deno?globalThis.Deno.args:kc.default.argv){let t=r.startsWith("-")?"":r.length===1?"-":"--",n=e.indexOf(t+r),i=e.indexOf("--");return n!==-1&&(i===-1||n<i)}function j4(){if(!("FORCE_COLOR"in ke))return;if(ke.FORCE_COLOR==="true")return 1;if(ke.FORCE_COLOR==="false")return 0;if(ke.FORCE_COLOR.length===0)return 1;let r=Math.min(Number.parseInt(ke.FORCE_COLOR,10),3);if([0,1,2,3].includes(r))return r}function O4(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function R4(r,{streamIsTTY:e,sniffFlags:t=!0}={}){let n=j4();n!==void 0&&(_c=n);let i=t?_c:n;if(i===0)return 0;if(t){if(er("color=16m")||er("color=full")||er("color=truecolor"))return 3;if(er("color=256"))return 2}if("TF_BUILD"in ke&&"AGENT_NAME"in ke)return 1;if(r&&!e&&i===void 0)return 0;let s=i||0;if(ke.TERM==="dumb")return s;if(kc.default.platform==="win32"){let a=Kx.default.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in ke)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in ke)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in ke)||ke.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in ke)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ke.TEAMCITY_VERSION)?1:0;if(ke.COLORTERM==="truecolor"||ke.TERM==="xterm-kitty"||ke.TERM==="xterm-ghostty"||ke.TERM==="wezterm")return 3;if("TERM_PROGRAM"in ke){let a=Number.parseInt((ke.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ke.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ke.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ke.TERM)||"COLORTERM"in ke?1:s}function Cf(r,e={}){let t=R4(r,{streamIsTTY:r&&r.isTTY,...e});return O4(t)}var kc,Kx,Rf,ke,_c,C4,D4,Ox=L(()=>{kc=Et(require("node:process"),1),Kx=Et(require("node:os"),1),Rf=Et(require("node:tty"),1);({env:ke}=kc.default);er("no-color")||er("no-colors")||er("color=false")||er("color=never")?_c=0:(er("color")||er("colors")||er("color=true")||er("color=always"))&&(_c=1);C4={stdout:Cf({isTTY:Rf.default.isatty(1)}),stderr:Cf({isTTY:Rf.default.isatty(2)})},D4=C4});var Cx=h((rt,Ac)=>{var P4=require("tty"),Tc=require("util");rt.init=U4;rt.log=q4;rt.formatArgs=L4;rt.save=F4;rt.load=J4;rt.useColors=M4;rt.destroy=Tc.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");rt.colors=[6,2,3,4,5,1];try{let r=(Ox(),ht(jx));r&&(r.stderr||r).level>=2&&(rt.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}rt.inspectOpts=Object.keys(process.env).filter(r=>/^debug_/i.test(r)).reduce((r,e)=>{let t=e.substring(6).toLowerCase().replace(/_([a-z])/g,(i,s)=>s.toUpperCase()),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),r[t]=n,r},{});function M4(){return"colors"in rt.inspectOpts?!!rt.inspectOpts.colors:P4.isatty(process.stderr.fd)}function L4(r){let{namespace:e,useColors:t}=this;if(t){let n=this.color,i="\x1B[3"+(n<8?n:"8;5;"+n),s=` ${i};1m${e} \x1B[0m`;r[0]=s+r[0].split(`
`).join(`
`+s),r.push(i+"m+"+Ac.exports.humanize(this.diff)+"\x1B[0m")}else r[0]=N4()+e+" "+r[0]}function N4(){return rt.inspectOpts.hideDate?"":new Date().toISOString()+" "}function q4(...r){return process.stderr.write(Tc.formatWithOptions(rt.inspectOpts,...r)+`
`)}function F4(r){r?process.env.DEBUG=r:delete process.env.DEBUG}function J4(){return process.env.DEBUG}function U4(r){r.inspectOpts={};let e=Object.keys(rt.inspectOpts);for(let t=0;t<e.length;t++)r.inspectOpts[e[t]]=rt.inspectOpts[e[t]]}Ac.exports=Of()(rt);var{formatters:Rx}=Ac.exports;Rx.o=function(r){return this.inspectOpts.colors=this.useColors,Tc.inspect(r,this.inspectOpts).split(`
`).map(e=>e.trim()).join(" ")};Rx.O=function(r){return this.inspectOpts.colors=this.useColors,Tc.inspect(r,this.inspectOpts)}});var Nt=h((Hae,Df)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?Df.exports=Ax():Df.exports=Cx()});var Ma=h((zae,Lx)=>{var G4=require("path").relative;Lx.exports=z4;var B4=process.cwd();function Px(r,e){for(var t=r.split(/[ ,]+/),n=String(e).toLowerCase(),i=0;i<t.length;i++){var s=t[i];if(s&&(s==="*"||s.toLowerCase()===n))return!0}return!1}function $4(r,e,t){var n=Object.getOwnPropertyDescriptor(r,e),i=n.value;return n.get=function(){return i},n.writable&&(n.set=function(a){return i=a}),delete n.value,delete n.writable,Object.defineProperty(r,e,n),n}function V4(r){for(var e="",t=0;t<r;t++)e+=", arg"+t;return e.substr(2)}function H4(r){var e=this.name+": "+this.namespace;this.message&&(e+=" deprecated "+this.message);for(var t=0;t<r.length;t++)e+=`
at `+r[t].toString();return e}function z4(r){if(!r)throw new TypeError("argument namespace is required");var e=jc(),t=ps(e[1]),n=t[0];function i(s){Kc.call(i,s)}return i._file=n,i._ignored=W4(r),i._namespace=r,i._traced=Q4(r),i._warned=Object.create(null),i.function=t8,i.property=r8,i}function Y4(r,e){var t=typeof r.listenerCount!="function"?r.listeners(e).length:r.listenerCount(e);return t>0}function W4(r){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return Px(e,r)}function Q4(r){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return Px(e,r)}function Kc(r,e){var t=Y4(process,"deprecation");if(!(!t&&this._ignored)){var n,i,s,a,o=0,c=!1,l=jc(),u=this._file;for(e?(a=e,s=ps(l[1]),s.name=a.name,u=s[0]):(o=2,a=ps(l[o]),s=a);o<l.length;o++)if(n=ps(l[o]),i=n[0],i===u)c=!0;else if(i===this._file)u=this._file;else if(c)break;var d=n?a.join(":")+"__"+n.join(":"):void 0;if(!(d!==void 0&&d in this._warned)){this._warned[d]=!0;var p=r;if(p||(p=s===a||!s.name?Dx(a):Dx(s)),t){var f=Mx(this._namespace,p,l.slice(o));process.emit("deprecation",f);return}var m=process.stderr.isTTY?Z4:X4,y=m.call(this,p,n,l.slice(o));process.stderr.write(y+`
`,"utf8")}}}function ps(r){var e=r.getFileName()||"<anonymous>",t=r.getLineNumber(),n=r.getColumnNumber();r.isEval()&&(e=r.getEvalOrigin()+", "+e);var i=[e,t,n];return i.callSite=r,i.name=r.getFunctionName(),i}function Dx(r){var e=r.callSite,t=r.name;t||(t="<anonymous@"+Pf(r)+">");var n=e.getThis(),i=n&&e.getTypeName();return i==="Object"&&(i=void 0),i==="Function"&&(i=n.name||i),i&&e.getMethodName()?i+"."+t:t}function X4(r,e,t){var n=new Date().toUTCString(),i=n+" "+this._namespace+" deprecated "+r;if(this._traced){for(var s=0;s<t.length;s++)i+=`
at `+t[s].toString();return i}return e&&(i+=" at "+Pf(e)),i}function Z4(r,e,t){var n="\x1B[36;1m"+this._namespace+"\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m"+r+"\x1B[39m";if(this._traced){for(var i=0;i<t.length;i++)n+=`
\x1B[36mat `+t[i].toString()+"\x1B[39m";return n}return e&&(n+=" \x1B[36m"+Pf(e)+"\x1B[39m"),n}function Pf(r){return G4(B4,r[0])+":"+r[1]+":"+r[2]}function jc(){var r=Error.stackTraceLimit,e={},t=Error.prepareStackTrace;Error.prepareStackTrace=e8,Error.stackTraceLimit=Math.max(10,r),Error.captureStackTrace(e);var n=e.stack.slice(1);return Error.prepareStackTrace=t,Error.stackTraceLimit=r,n}function e8(r,e){return e}function t8(r,e){if(typeof r!="function")throw new TypeError("argument fn must be a function");var t=V4(r.length),n=jc(),i=ps(n[1]);i.name=r.name;var s=new Function("fn","log","deprecate","message","site",`"use strict"
return function (`+t+`) {log.call(deprecate, message, site)
return fn.apply(this, arguments)
}`)(r,Kc,this,e,i);return s}function r8(r,e,t){if(!r||typeof r!="object"&&typeof r!="function")throw new TypeError("argument obj must be object");var n=Object.getOwnPropertyDescriptor(r,e);if(!n)throw new TypeError("must call property on owner object");if(!n.configurable)throw new TypeError("property must be configurable");var i=this,s=jc(),a=ps(s[1]);a.name=e,"value"in n&&(n=$4(r,e,t));var o=n.get,c=n.set;typeof o=="function"&&(n.get=function(){return Kc.call(i,t,a),o.apply(this,arguments)}),typeof c=="function"&&(n.set=function(){return Kc.call(i,t,a),c.apply(this,arguments)}),Object.defineProperty(r,e,n)}function Mx(r,e,t){var n=new Error,i;return Object.defineProperty(n,"constructor",{value:Mx}),Object.defineProperty(n,"message",{configurable:!0,enumerable:!1,value:e,writable:!0}),Object.defineProperty(n,"name",{enumerable:!1,configurable:!0,value:"DeprecationError",writable:!0}),Object.defineProperty(n,"namespace",{configurable:!0,enumerable:!1,value:r,writable:!0}),Object.defineProperty(n,"stack",{configurable:!0,enumerable:!1,get:function(){return i!==void 0?i:i=H4.call(this,t)},set:function(a){i=a}}),n}});var qx=h((Yae,Nx)=>{"use strict";Nx.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?n8:i8);function n8(r,e){return r.__proto__=e,r}function i8(r,e){for(var t in e)Object.prototype.hasOwnProperty.call(r,t)||(r[t]=e[t]);return r}});var Fx=h((Wae,s8)=>{s8.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var La=h((Qae,Ux)=>{"use strict";var Mf=Fx();Ux.exports=wr;wr.message=Mf;wr.code=a8(Mf);wr.codes=o8(Mf);wr.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};wr.empty={204:!0,205:!0,304:!0};wr.retry={502:!0,503:!0,504:!0};function a8(r){var e={};return Object.keys(r).forEach(function(n){var i=r[n],s=Number(n);e[i.toLowerCase()]=s}),e}function o8(r){return Object.keys(r).map(function(t){return Number(t)})}function c8(r){var e=r.toLowerCase();if(!Object.prototype.hasOwnProperty.call(wr.code,e))throw new Error('invalid status message: "'+r+'"');return wr.code[e]}function Jx(r){if(!Object.prototype.hasOwnProperty.call(wr.message,r))throw new Error("invalid status code: "+r);return wr.message[r]}function wr(r){if(typeof r=="number")return Jx(r);if(typeof r!="string")throw new TypeError("code must be a number or string");var e=parseInt(r,10);return isNaN(e)?c8(r):Jx(e)}});var Gx=h((Xae,Lf)=>{typeof Object.create=="function"?Lf.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Lf.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Bx=h((Zae,qf)=>{try{if(Nf=require("util"),typeof Nf.inherits!="function")throw"";qf.exports=Nf.inherits}catch{qf.exports=Gx()}var Nf});var Vx=h((eoe,$x)=>{"use strict";$x.exports=l8;function l8(r){return r.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var ms=h((toe,Ei)=>{"use strict";var u8=Ma()("http-errors"),Hx=qx(),fs=La(),Ff=Bx(),d8=Vx();Ei.exports=Oc;Ei.exports.HttpError=p8();Ei.exports.isHttpError=m8(Ei.exports.HttpError);y8(Ei.exports,fs.codes,Ei.exports.HttpError);function zx(r){return+(String(r).charAt(0)+"00")}function Oc(){for(var r,e,t=500,n={},i=0;i<arguments.length;i++){var s=arguments[i],a=typeof s;if(a==="object"&&s instanceof Error)r=s,t=r.status||r.statusCode||t;else if(a==="number"&&i===0)t=s;else if(a==="string")e=s;else if(a==="object")n=s;else throw new TypeError("argument #"+(i+1)+" unsupported type "+a)}typeof t=="number"&&(t<400||t>=600)&&u8("non-error status code; use only 4xx or 5xx status codes"),(typeof t!="number"||!fs.message[t]&&(t<400||t>=600))&&(t=500);var o=Oc[t]||Oc[zx(t)];r||(r=o?new o(e):new Error(e||fs.message[t]),Error.captureStackTrace(r,Oc)),(!o||!(r instanceof o)||r.status!==t)&&(r.expose=t<500,r.status=r.statusCode=t);for(var c in n)c!=="status"&&c!=="statusCode"&&(r[c]=n[c]);return r}function p8(){function r(){throw new TypeError("cannot construct abstract class")}return Ff(r,Error),r}function f8(r,e,t){var n=Wx(e);function i(s){var a=s??fs.message[t],o=new Error(a);return Error.captureStackTrace(o,i),Hx(o,i.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:a,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return Ff(i,r),Yx(i,n),i.prototype.status=t,i.prototype.statusCode=t,i.prototype.expose=!0,i}function m8(r){return function(t){return!t||typeof t!="object"?!1:t instanceof r?!0:t instanceof Error&&typeof t.expose=="boolean"&&typeof t.statusCode=="number"&&t.status===t.statusCode}}function h8(r,e,t){var n=Wx(e);function i(s){var a=s??fs.message[t],o=new Error(a);return Error.captureStackTrace(o,i),Hx(o,i.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:a,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return Ff(i,r),Yx(i,n),i.prototype.status=t,i.prototype.statusCode=t,i.prototype.expose=!1,i}function Yx(r,e){var t=Object.getOwnPropertyDescriptor(r,"name");t&&t.configurable&&(t.value=e,Object.defineProperty(r,"name",t))}function y8(r,e,t){e.forEach(function(i){var s,a=d8(fs.message[i]);switch(zx(i)){case 400:s=f8(t,a,i);break;case 500:s=h8(t,a,i);break}s&&(r[i]=s,r[a]=s)})}function Wx(r){return r.slice(-5)==="Error"?r:r+"Error"}});var Jf=h((roe,Rc)=>{"use strict";Rc.exports=x8;Rc.exports.format=Qx;Rc.exports.parse=Xx;var b8=/\B(?=(\d{3})+(?!\d))/g,g8=/(?:\.0*|(\.[^0]+)0+)$/,Rn={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},v8=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function x8(r,e){return typeof r=="string"?Xx(r):typeof r=="number"?Qx(r,e):null}function Qx(r,e){if(!Number.isFinite(r))return null;var t=Math.abs(r),n=e&&e.thousandsSeparator||"",i=e&&e.unitSeparator||"",s=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,a=!!(e&&e.fixedDecimals),o=e&&e.unit||"";(!o||!Rn[o.toLowerCase()])&&(t>=Rn.pb?o="PB":t>=Rn.tb?o="TB":t>=Rn.gb?o="GB":t>=Rn.mb?o="MB":t>=Rn.kb?o="KB":o="B");var c=r/Rn[o.toLowerCase()],l=c.toFixed(s);return a||(l=l.replace(g8,"$1")),n&&(l=l.split(".").map(function(u,d){return d===0?u.replace(b8,n):u}).join(".")),l+i+o}function Xx(r){if(typeof r=="number"&&!isNaN(r))return r;if(typeof r!="string")return null;var e=v8.exec(r),t,n="b";return e?(t=parseFloat(e[1]),n=e[4].toLowerCase()):(t=parseInt(r,10),n="b"),isNaN(t)?null:Math.floor(Rn[n]*t)}});var nn=h((noe,Zx)=>{"use strict";var Cc=require("buffer"),hs=Cc.Buffer,tr={},rr;for(rr in Cc)Cc.hasOwnProperty(rr)&&(rr==="SlowBuffer"||rr==="Buffer"||(tr[rr]=Cc[rr]));var ys=tr.Buffer={};for(rr in hs)hs.hasOwnProperty(rr)&&(rr==="allocUnsafe"||rr==="allocUnsafeSlow"||(ys[rr]=hs[rr]));tr.Buffer.prototype=hs.prototype;(!ys.from||ys.from===Uint8Array.from)&&(ys.from=function(r,e,t){if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof r);if(r&&typeof r.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);return hs(r,e,t)});ys.alloc||(ys.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof r);if(r<0||r>=2*(1<<30))throw new RangeError('The value "'+r+'" is invalid for option "size"');var n=hs(r);return!e||e.length===0?n.fill(0):typeof t=="string"?n.fill(e,t):n.fill(e),n});if(!tr.kStringMaxLength)try{tr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}tr.constants||(tr.constants={MAX_LENGTH:tr.kMaxLength},tr.kStringMaxLength&&(tr.constants.MAX_STRING_LENGTH=tr.kStringMaxLength));Zx.exports=tr});var tE=h(Bf=>{"use strict";var eE="\uFEFF";Bf.PrependBOM=Uf;function Uf(r,e){this.encoder=r,this.addBOM=!0}Uf.prototype.write=function(r){return this.addBOM&&(r=eE+r,this.addBOM=!1),this.encoder.write(r)};Uf.prototype.end=function(){return this.encoder.end()};Bf.StripBOM=Gf;function Gf(r,e){this.decoder=r,this.pass=!1,this.options=e||{}}Gf.prototype.write=function(r){var e=this.decoder.write(r);return this.pass||!e||(e[0]===eE&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};Gf.prototype.end=function(){return this.decoder.end()}});var $f=h((soe,rE)=>{"use strict";var E8=typeof Object.hasOwn>"u"?Function.call.bind(Object.prototype.hasOwnProperty):Object.hasOwn;function S8(r,e){for(var t in e)E8(e,t)&&(r[t]=e[t])}rE.exports=S8});var iE=h((aoe,nE)=>{"use strict";var sn=nn().Buffer;nE.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Vf};function Vf(r,e){this.enc=r.encodingName,this.bomAware=r.bomAware,this.enc==="base64"?this.encoder=Yf:this.enc==="utf8"?this.encoder=Xf:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=Wf,sn.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=Qf,this.defaultCharUnicode=e.defaultCharUnicode))}Vf.prototype.encoder=zf;Vf.prototype.decoder=Hf;var w8=require("string_decoder").StringDecoder;function Hf(r,e){this.decoder=new w8(e.enc)}Hf.prototype.write=function(r){return sn.isBuffer(r)||(r=sn.from(r)),this.decoder.write(r)};Hf.prototype.end=function(){return this.decoder.end()};function zf(r,e){this.enc=e.enc}zf.prototype.write=function(r){return sn.from(r,this.enc)};zf.prototype.end=function(){};function Yf(r,e){this.prevStr=""}Yf.prototype.write=function(r){r=this.prevStr+r;var e=r.length-r.length%4;return this.prevStr=r.slice(e),r=r.slice(0,e),sn.from(r,"base64")};Yf.prototype.end=function(){return sn.from(this.prevStr,"base64")};function Wf(r,e){}Wf.prototype.write=function(r){for(var e=sn.alloc(r.length*3),t=0,n=0;n<r.length;n++){var i=r.charCodeAt(n);i<128?e[t++]=i:i<2048?(e[t++]=192+(i>>>6),e[t++]=128+(i&63)):(e[t++]=224+(i>>>12),e[t++]=128+(i>>>6&63),e[t++]=128+(i&63))}return e.slice(0,t)};Wf.prototype.end=function(){};function Qf(r,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}Qf.prototype.write=function(r){for(var e=this.acc,t=this.contBytes,n=this.accBytes,i="",s=0;s<r.length;s++){var a=r[s];(a&192)!==128?(t>0&&(i+=this.defaultCharUnicode,t=0),a<128?i+=String.fromCharCode(a):a<224?(e=a&31,t=1,n=1):a<240?(e=a&15,t=2,n=1):i+=this.defaultCharUnicode):t>0?(e=e<<6|a&63,t--,n++,t===0&&(n===2&&e<128&&e>0?i+=this.defaultCharUnicode:n===3&&e<2048?i+=this.defaultCharUnicode:i+=String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=t,this.accBytes=n,i};Qf.prototype.end=function(){var r=0;return this.contBytes>0&&(r+=this.defaultCharUnicode),r};function Xf(r,e){this.highSurrogate=""}Xf.prototype.write=function(r){if(this.highSurrogate&&(r=this.highSurrogate+r,this.highSurrogate=""),r.length>0){var e=r.charCodeAt(r.length-1);e>=55296&&e<56320&&(this.highSurrogate=r[r.length-1],r=r.slice(0,r.length-1))}return sn.from(r,this.enc)};Xf.prototype.end=function(){if(this.highSurrogate){var r=this.highSurrogate;return this.highSurrogate="",sn.from(r,this.enc)}}});var oE=h(Cn=>{"use strict";var Dc=nn().Buffer;Cn._utf32=Zf;function Zf(r,e){this.iconv=e,this.bomAware=!0,this.isLE=r.isLE}Cn.utf32le={type:"_utf32",isLE:!0};Cn.utf32be={type:"_utf32",isLE:!1};Cn.ucs4le="utf32le";Cn.ucs4be="utf32be";Zf.prototype.encoder=em;Zf.prototype.decoder=tm;function em(r,e){this.isLE=e.isLE,this.highSurrogate=0}em.prototype.write=function(r){for(var e=Dc.from(r,"ucs2"),t=Dc.alloc(e.length*2),n=this.isLE?t.writeUInt32LE:t.writeUInt32BE,i=0,s=0;s<e.length;s+=2){var a=e.readUInt16LE(s),o=a>=55296&&a<56320,c=a>=56320&&a<57344;if(this.highSurrogate)if(o||!c)n.call(t,this.highSurrogate,i),i+=4;else{var l=(this.highSurrogate-55296<<10|a-56320)+65536;n.call(t,l,i),i+=4,this.highSurrogate=0;continue}o?this.highSurrogate=a:(n.call(t,a,i),i+=4,this.highSurrogate=0)}return i<t.length&&(t=t.slice(0,i)),t};em.prototype.end=function(){if(this.highSurrogate){var r=Dc.alloc(4);return this.isLE?r.writeUInt32LE(this.highSurrogate,0):r.writeUInt32BE(this.highSurrogate,0),this.highSurrogate=0,r}};function tm(r,e){this.isLE=e.isLE,this.badChar=e.iconv.defaultCharUnicode.charCodeAt(0),this.overflow=[]}tm.prototype.write=function(r){if(r.length===0)return"";var e=0,t=0,n=Dc.alloc(r.length+4),i=0,s=this.isLE,a=this.overflow,o=this.badChar;if(a.length>0){for(;e<r.length&&a.length<4;e++)a.push(r[e]);a.length===4&&(s?t=a[e]|a[e+1]<<8|a[e+2]<<16|a[e+3]<<24:t=a[e+3]|a[e+2]<<8|a[e+1]<<16|a[e]<<24,a.length=0,i=sE(n,i,t,o))}for(;e<r.length-3;e+=4)s?t=r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24:t=r[e+3]|r[e+2]<<8|r[e+1]<<16|r[e]<<24,i=sE(n,i,t,o);for(;e<r.length;e++)a.push(r[e]);return n.slice(0,i).toString("ucs2")};function sE(r,e,t,n){if((t<0||t>1114111)&&(t=n),t>=65536){t-=65536;var i=55296|t>>10;r[e++]=i&255,r[e++]=i>>8;var t=56320|t&1023}return r[e++]=t&255,r[e++]=t>>8,e}tm.prototype.end=function(){this.overflow.length=0};Cn.utf32=rm;Cn.ucs4="utf32";function rm(r,e){this.iconv=e}rm.prototype.encoder=nm;rm.prototype.decoder=im;function nm(r,e){r=r||{},r.addBOM===void 0&&(r.addBOM=!0),this.encoder=e.iconv.getEncoder(r.defaultEncoding||"utf-32le",r)}nm.prototype.write=function(r){return this.encoder.write(r)};nm.prototype.end=function(){return this.encoder.end()};function im(r,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=r||{},this.iconv=e.iconv}im.prototype.write=function(r){if(!this.decoder){if(this.initialBufs.push(r),this.initialBufsLen+=r.length,this.initialBufsLen<32)return"";var e=aE(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var t="",n=0;n<this.initialBufs.length;n++)t+=this.decoder.write(this.initialBufs[n]);return this.initialBufs.length=this.initialBufsLen=0,t}return this.decoder.write(r)};im.prototype.end=function(){if(!this.decoder){var r=aE(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(r,this.options);for(var e="",t=0;t<this.initialBufs.length;t++)e+=this.decoder.write(this.initialBufs[t]);var n=this.decoder.end();return n&&(e+=n),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function aE(r,e){var t=[],n=0,i=0,s=0,a=0,o=0;e:for(var c=0;c<r.length;c++)for(var l=r[c],u=0;u<l.length;u++)if(t.push(l[u]),t.length===4){if(n===0){if(t[0]===255&&t[1]===254&&t[2]===0&&t[3]===0)return"utf-32le";if(t[0]===0&&t[1]===0&&t[2]===254&&t[3]===255)return"utf-32be"}if((t[0]!==0||t[1]>16)&&s++,(t[3]!==0||t[2]>16)&&i++,t[0]===0&&t[1]===0&&(t[2]!==0||t[3]!==0)&&o++,(t[0]!==0||t[1]!==0)&&t[2]===0&&t[3]===0&&a++,t.length=0,n++,n>=100)break e}return o-s>a-i?"utf-32be":o-s<a-i?"utf-32le":e||"utf-32le"}});var uE=h(um=>{"use strict";var cE=nn().Buffer;um.utf16be=Pc;function Pc(){}Pc.prototype.encoder=sm;Pc.prototype.decoder=am;Pc.prototype.bomAware=!0;function sm(){}sm.prototype.write=function(r){for(var e=cE.from(r,"ucs2"),t=0;t<e.length;t+=2){var n=e[t];e[t]=e[t+1],e[t+1]=n}return e};sm.prototype.end=function(){};function am(){this.overflowByte=-1}am.prototype.write=function(r){if(r.length==0)return"";var e=cE.alloc(r.length+1),t=0,n=0;for(this.overflowByte!==-1&&(e[0]=r[0],e[1]=this.overflowByte,t=1,n=2);t<r.length-1;t+=2,n+=2)e[n]=r[t+1],e[n+1]=r[t];return this.overflowByte=t==r.length-1?r[r.length-1]:-1,e.slice(0,n).toString("ucs2")};am.prototype.end=function(){this.overflowByte=-1};um.utf16=om;function om(r,e){this.iconv=e}om.prototype.encoder=cm;om.prototype.decoder=lm;function cm(r,e){r=r||{},r.addBOM===void 0&&(r.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",r)}cm.prototype.write=function(r){return this.encoder.write(r)};cm.prototype.end=function(){return this.encoder.end()};function lm(r,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=r||{},this.iconv=e.iconv}lm.prototype.write=function(r){if(!this.decoder){if(this.initialBufs.push(r),this.initialBufsLen+=r.length,this.initialBufsLen<16)return"";var e=lE(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var t="",n=0;n<this.initialBufs.length;n++)t+=this.decoder.write(this.initialBufs[n]);return this.initialBufs.length=this.initialBufsLen=0,t}return this.decoder.write(r)};lm.prototype.end=function(){if(!this.decoder){var r=lE(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(r,this.options);for(var e="",t=0;t<this.initialBufs.length;t++)e+=this.decoder.write(this.initialBufs[t]);var n=this.decoder.end();return n&&(e+=n),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function lE(r,e){var t=[],n=0,i=0,s=0;e:for(var a=0;a<r.length;a++)for(var o=r[a],c=0;c<o.length;c++)if(t.push(o[c]),t.length===2){if(n===0){if(t[0]===255&&t[1]===254)return"utf-16le";if(t[0]===254&&t[1]===255)return"utf-16be"}if(t[0]===0&&t[1]!==0&&s++,t[0]!==0&&t[1]===0&&i++,t.length=0,n++,n>=100)break e}return s>i?"utf-16be":s<i?"utf-16le":e||"utf-16le"}});var pE=h(Nc=>{"use strict";var Mr=nn().Buffer;Nc.utf7=Mc;Nc.unicode11utf7="utf7";function Mc(r,e){this.iconv=e}Mc.prototype.encoder=pm;Mc.prototype.decoder=fm;Mc.prototype.bomAware=!0;var I8=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function pm(r,e){this.iconv=e.iconv}pm.prototype.write=function(r){return Mr.from(r.replace(I8,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};pm.prototype.end=function(){};function fm(r,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var _8=/[A-Za-z0-9\/+]/,mm=[];for(Na=0;Na<256;Na++)mm[Na]=_8.test(String.fromCharCode(Na));var Na,k8=43,Si=45,dm=38;fm.prototype.write=function(r){for(var e="",t=0,n=this.inBase64,i=this.base64Accum,s=0;s<r.length;s++)if(!n)r[s]==k8&&(e+=this.iconv.decode(r.slice(t,s),"ascii"),t=s+1,n=!0);else if(!mm[r[s]]){if(s==t&&r[s]==Si)e+="+";else{var a=i+this.iconv.decode(r.slice(t,s),"ascii");e+=this.iconv.decode(Mr.from(a,"base64"),"utf16-be")}r[s]!=Si&&s--,t=s+1,n=!1,i=""}if(!n)e+=this.iconv.decode(r.slice(t),"ascii");else{var a=i+this.iconv.decode(r.slice(t),"ascii"),o=a.length-a.length%8;i=a.slice(o),a=a.slice(0,o),e+=this.iconv.decode(Mr.from(a,"base64"),"utf16-be")}return this.inBase64=n,this.base64Accum=i,e};fm.prototype.end=function(){var r="";return this.inBase64&&this.base64Accum.length>0&&(r=this.iconv.decode(Mr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",r};Nc.utf7imap=Lc;function Lc(r,e){this.iconv=e}Lc.prototype.encoder=hm;Lc.prototype.decoder=ym;Lc.prototype.bomAware=!0;function hm(r,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Mr.alloc(6),this.base64AccumIdx=0}hm.prototype.write=function(r){for(var e=this.inBase64,t=this.base64Accum,n=this.base64AccumIdx,i=Mr.alloc(r.length*5+10),s=0,a=0;a<r.length;a++){var o=r.charCodeAt(a);o>=32&&o<=126?(e&&(n>0&&(s+=i.write(t.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),s),n=0),i[s++]=Si,e=!1),e||(i[s++]=o,o===dm&&(i[s++]=Si))):(e||(i[s++]=dm,e=!0),e&&(t[n++]=o>>8,t[n++]=o&255,n==t.length&&(s+=i.write(t.toString("base64").replace(/\//g,","),s),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,i.slice(0,s)};hm.prototype.end=function(){var r=Mr.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=r.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),r[e++]=Si,this.inBase64=!1),r.slice(0,e)};function ym(r,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var dE=mm.slice();dE[44]=!0;ym.prototype.write=function(r){for(var e="",t=0,n=this.inBase64,i=this.base64Accum,s=0;s<r.length;s++)if(!n)r[s]==dm&&(e+=this.iconv.decode(r.slice(t,s),"ascii"),t=s+1,n=!0);else if(!dE[r[s]]){if(s==t&&r[s]==Si)e+="&";else{var a=i+this.iconv.decode(r.slice(t,s),"ascii").replace(/,/g,"/");e+=this.iconv.decode(Mr.from(a,"base64"),"utf16-be")}r[s]!=Si&&s--,t=s+1,n=!1,i=""}if(!n)e+=this.iconv.decode(r.slice(t),"ascii");else{var a=i+this.iconv.decode(r.slice(t),"ascii").replace(/,/g,"/"),o=a.length-a.length%8;i=a.slice(o),a=a.slice(0,o),e+=this.iconv.decode(Mr.from(a,"base64"),"utf16-be")}return this.inBase64=n,this.base64Accum=i,e};ym.prototype.end=function(){var r="";return this.inBase64&&this.base64Accum.length>0&&(r=this.iconv.decode(Mr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",r}});var mE=h(fE=>{"use strict";var qc=nn().Buffer;fE._sbcs=bm;function bm(r,e){if(!r)throw new Error("SBCS codec is called without the data.");if(!r.chars||r.chars.length!==128&&r.chars.length!==256)throw new Error("Encoding '"+r.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(r.chars.length===128){for(var t="",n=0;n<128;n++)t+=String.fromCharCode(n);r.chars=t+r.chars}this.decodeBuf=qc.from(r.chars,"ucs2");for(var i=qc.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n<r.chars.length;n++)i[r.chars.charCodeAt(n)]=n;this.encodeBuf=i}bm.prototype.encoder=gm;bm.prototype.decoder=vm;function gm(r,e){this.encodeBuf=e.encodeBuf}gm.prototype.write=function(r){for(var e=qc.alloc(r.length),t=0;t<r.length;t++)e[t]=this.encodeBuf[r.charCodeAt(t)];return e};gm.prototype.end=function(){};function vm(r,e){this.decodeBuf=e.decodeBuf}vm.prototype.write=function(r){for(var e=this.decodeBuf,t=qc.alloc(r.length*2),n=0,i=0,s=0;s<r.length;s++)n=r[s]*2,i=s*2,t[i]=e[n],t[i+1]=e[n+1];return t.toString("ucs2")};vm.prototype.end=function(){}});var yE=h((doe,hE)=>{"use strict";hE.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},cp720:{type:"_sbcs",chars:"\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var gE=h((poe,bE)=>{"use strict";bE.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b
\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b
\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var EE=h(xE=>{"use strict";var xm=nn().Buffer;xE._dbcs=an;var ct=-1,vE=-2,nr=-10,St=-1e3,bs=new Array(256),qa=-1;for(Fc=0;Fc<256;Fc++)bs[Fc]=ct;var Fc;function an(r,e){if(this.encodingName=r.encodingName,!r)throw new Error("DBCS codec is called without the data.");if(!r.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var t=r.table();this.decodeTables=[],this.decodeTables[0]=bs.slice(0),this.decodeTableSeq=[];for(var n=0;n<t.length;n++)this._addDecodeChunk(t[n]);if(typeof r.gb18030=="function"){this.gb18030=r.gb18030();var i=this.decodeTables.length;this.decodeTables.push(bs.slice(0));var s=this.decodeTables.length;this.decodeTables.push(bs.slice(0));for(var a=this.decodeTables[0],n=129;n<=254;n++)for(var o=this.decodeTables[St-a[n]],c=48;c<=57;c++){if(o[c]===ct)o[c]=St-i;else if(o[c]>St)throw new Error("gb18030 decode tables conflict at byte 2");for(var l=this.decodeTables[St-o[c]],u=129;u<=254;u++){if(l[u]===ct)l[u]=St-s;else{if(l[u]===St-s)continue;if(l[u]>St)throw new Error("gb18030 decode tables conflict at byte 3")}for(var d=this.decodeTables[St-l[u]],p=48;p<=57;p++)d[p]===ct&&(d[p]=vE)}}}this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var f={};if(r.encodeSkipVals)for(var n=0;n<r.encodeSkipVals.length;n++){var m=r.encodeSkipVals[n];if(typeof m=="number")f[m]=!0;else for(var c=m.from;c<=m.to;c++)f[c]=!0}if(this._fillEncodeTable(0,0,f),r.encodeAdd)for(var y in r.encodeAdd)Object.prototype.hasOwnProperty.call(r.encodeAdd,y)&&this._setEncodeChar(y.charCodeAt(0),r.encodeAdd[y]);this.defCharSB=this.encodeTable[0][e.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===ct&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===ct&&(this.defCharSB=63)}an.prototype.encoder=Jc;an.prototype.decoder=Em;an.prototype._getDecodeTrieNode=function(r){for(var e=[];r>0;r>>>=8)e.push(r&255);e.length==0&&e.push(0);for(var t=this.decodeTables[0],n=e.length-1;n>0;n--){var i=t[e[n]];if(i==ct)t[e[n]]=St-this.decodeTables.length,this.decodeTables.push(t=bs.slice(0));else if(i<=St)t=this.decodeTables[St-i];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+r.toString(16))}return t};an.prototype._addDecodeChunk=function(r){var e=parseInt(r[0],16),t=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n<r.length;n++){var i=r[n];if(typeof i=="string")for(var s=0;s<i.length;){var a=i.charCodeAt(s++);if(a>=55296&&a<56320){var o=i.charCodeAt(s++);if(o>=56320&&o<57344)t[e++]=65536+(a-55296)*1024+(o-56320);else throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+r[0])}else if(a>4080&&a<=4095){for(var c=4095-a+2,l=[],u=0;u<c;u++)l.push(i.charCodeAt(s++));t[e++]=nr-this.decodeTableSeq.length,this.decodeTableSeq.push(l)}else t[e++]=a}else if(typeof i=="number")for(var d=t[e-1]+1,s=0;s<i;s++)t[e++]=d++;else throw new Error("Incorrect type '"+typeof i+"' given in "+this.encodingName+" at chunk "+r[0])}if(e>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+r[0]+": too long"+e)};an.prototype._getEncodeBucket=function(r){var e=r>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=bs.slice(0)),this.encodeTable[e]};an.prototype._setEncodeChar=function(r,e){var t=this._getEncodeBucket(r),n=r&255;t[n]<=nr?this.encodeTableSeq[nr-t[n]][qa]=e:t[n]==ct&&(t[n]=e)};an.prototype._setEncodeSequence=function(r,e){var t=r[0],n=this._getEncodeBucket(t),i=t&255,s;n[i]<=nr?s=this.encodeTableSeq[nr-n[i]]:(s={},n[i]!==ct&&(s[qa]=n[i]),n[i]=nr-this.encodeTableSeq.length,this.encodeTableSeq.push(s));for(var a=1;a<r.length-1;a++){var o=s[t];typeof o=="object"?s=o:(s=s[t]={},o!==void 0&&(s[qa]=o))}t=r[r.length-1],s[t]=e};an.prototype._fillEncodeTable=function(r,e,t){for(var n=this.decodeTables[r],i=!1,s={},a=0;a<256;a++){var o=n[a],c=e+a;if(!t[c])if(o>=0)this._setEncodeChar(o,c),i=!0;else if(o<=St){var l=St-o;if(!s[l]){var u=c<<8>>>0;this._fillEncodeTable(l,u,t)?i=!0:s[l]=!0}}else o<=nr&&(this._setEncodeSequence(this.decodeTableSeq[nr-o],c),i=!0)}return i};function Jc(r,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}Jc.prototype.write=function(r){for(var e=xm.alloc(r.length*(this.gb18030?4:3)),t=this.leadSurrogate,n=this.seqObj,i=-1,s=0,a=0;;){if(i===-1){if(s==r.length)break;var o=r.charCodeAt(s++)}else{var o=i;i=-1}if(o>=55296&&o<57344)if(o<56320)if(t===-1){t=o;continue}else t=o,o=ct;else t!==-1?(o=65536+(t-55296)*1024+(o-56320),t=-1):o=ct;else t!==-1&&(i=o,o=ct,t=-1);var c=ct;if(n!==void 0&&o!=ct){var l=n[o];if(typeof l=="object"){n=l;continue}else typeof l=="number"?c=l:l==null&&(l=n[qa],l!==void 0&&(c=l,i=o));n=void 0}else if(o>=0){var u=this.encodeTable[o>>8];if(u!==void 0&&(c=u[o&255]),c<=nr){n=this.encodeTableSeq[nr-c];continue}if(c==ct&&this.gb18030){var d=Sm(this.gb18030.uChars,o);if(d!=-1){var c=this.gb18030.gbChars[d]+(o-this.gb18030.uChars[d]);e[a++]=129+Math.floor(c/12600),c=c%12600,e[a++]=48+Math.floor(c/1260),c=c%1260,e[a++]=129+Math.floor(c/10),c=c%10,e[a++]=48+c;continue}}}c===ct&&(c=this.defaultCharSingleByte),c<256?e[a++]=c:c<65536?(e[a++]=c>>8,e[a++]=c&255):c<16777216?(e[a++]=c>>16,e[a++]=c>>8&255,e[a++]=c&255):(e[a++]=c>>>24,e[a++]=c>>>16&255,e[a++]=c>>>8&255,e[a++]=c&255)}return this.seqObj=n,this.leadSurrogate=t,e.slice(0,a)};Jc.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var r=xm.alloc(10),e=0;if(this.seqObj){var t=this.seqObj[qa];t!==void 0&&(t<256?r[e++]=t:(r[e++]=t>>8,r[e++]=t&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(r[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),r.slice(0,e)}};Jc.prototype.findIdx=Sm;function Em(r,e){this.nodeIdx=0,this.prevBytes=[],this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}Em.prototype.write=function(r){for(var e=xm.alloc(r.length*2),t=this.nodeIdx,n=this.prevBytes,i=this.prevBytes.length,s=-this.prevBytes.length,a,o=0,c=0;o<r.length;o++){var l=o>=0?r[o]:n[o+i],a=this.decodeTables[t][l];if(!(a>=0))if(a===ct)a=this.defaultCharUnicode.charCodeAt(0),o=s;else if(a===vE){if(o>=3)var u=(r[o-3]-129)*12600+(r[o-2]-48)*1260+(r[o-1]-129)*10+(l-48);else var u=(n[o-3+i]-129)*12600+((o-2>=0?r[o-2]:n[o-2+i])-48)*1260+((o-1>=0?r[o-1]:n[o-1+i])-129)*10+(l-48);var d=Sm(this.gb18030.gbChars,u);a=this.gb18030.uChars[d]+u-this.gb18030.gbChars[d]}else if(a<=St){t=St-a;continue}else if(a<=nr){for(var p=this.decodeTableSeq[nr-a],f=0;f<p.length-1;f++)a=p[f],e[c++]=a&255,e[c++]=a>>8;a=p[p.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+a+" at "+t+"/"+l);if(a>=65536){a-=65536;var m=55296|a>>10;e[c++]=m&255,e[c++]=m>>8,a=56320|a&1023}e[c++]=a&255,e[c++]=a>>8,t=0,s=o+1}return this.nodeIdx=t,this.prevBytes=s>=0?Array.prototype.slice.call(r,s):n.slice(s+i).concat(Array.prototype.slice.call(r)),e.slice(0,c).toString("ucs2")};Em.prototype.end=function(){for(var r="";this.prevBytes.length>0;){r+=this.defaultCharUnicode;var e=this.prevBytes.slice(1);this.prevBytes=[],this.nodeIdx=0,e.length>0&&(r+=this.write(e))}return this.prevBytes=[],this.nodeIdx=0,r};function Sm(r,e){if(r[0]>e)return-1;for(var t=0,n=r.length;t<n-1;){var i=t+(n-t+1>>1);r[i]<=e?t=i:n=i}return t}});var SE=h((moe,T8)=>{T8.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var wE=h((hoe,A8)=>{A8.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var Uc=h((yoe,K8)=>{K8.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var wm=h((boe,j8)=>{j8.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\u1E3F"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93],["8135f437","\uE7C7"]]});var IE=h((goe,O8)=>{O8.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var _E=h((voe,R8)=>{R8.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var Im=h((xoe,C8)=>{C8.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var kE=h((Eoe,D8)=>{D8.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var AE=h((Soe,TE)=>{"use strict";TE.exports={shiftjis:{type:"_dbcs",table:function(){return SE()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return wE()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return Uc()}},gbk:{type:"_dbcs",table:function(){return Uc().concat(wm())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return Uc().concat(wm())},gb18030:function(){return IE()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return _E()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return Im()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return Im().concat(kE())},encodeSkipVals:[36457,36463,36478,36523,36532,36557,36560,36695,36713,36718,36811,36862,36973,36986,37060,37084,37105,37311,37551,37552,37553,37554,37585,37959,38090,38361,38652,39285,39798,39800,39803,39878,39902,39916,39926,40002,40019,40034,40040,40043,40055,40124,40125,40144,40279,40282,40388,40431,40443,40617,40687,40701,40800,40907,41079,41180,41183,36812,37576,38468,38637,41636,41637,41639,41638,41676,41678]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var OE=h((jE,Bc)=>{"use strict";var P8=$f(),KE=[iE(),oE(),uE(),pE(),mE(),yE(),gE(),EE(),AE()];for(Gc=0;Gc<KE.length;Gc++)Bc=KE[Gc],P8(jE,Bc);var Bc,Gc});var DE=h((woe,CE)=>{"use strict";var RE=nn().Buffer;CE.exports=function(r){var e=r.Transform;function t(i,s){this.conv=i,s=s||{},s.decodeStrings=!1,e.call(this,s)}t.prototype=Object.create(e.prototype,{constructor:{value:t}}),t.prototype._transform=function(i,s,a){if(typeof i!="string")return a(new Error("Iconv encoding stream needs strings as its input."));try{var o=this.conv.write(i);o&&o.length&&this.push(o),a()}catch(c){a(c)}},t.prototype._flush=function(i){try{var s=this.conv.end();s&&s.length&&this.push(s),i()}catch(a){i(a)}},t.prototype.collect=function(i){var s=[];return this.on("error",i),this.on("data",function(a){s.push(a)}),this.on("end",function(){i(null,RE.concat(s))}),this};function n(i,s){this.conv=i,s=s||{},s.encoding=this.encoding="utf8",e.call(this,s)}return n.prototype=Object.create(e.prototype,{constructor:{value:n}}),n.prototype._transform=function(i,s,a){if(!RE.isBuffer(i)&&!(i instanceof Uint8Array))return a(new Error("Iconv decoding stream needs buffers as its input."));try{var o=this.conv.write(i);o&&o.length&&this.push(o,this.encoding),a()}catch(c){a(c)}},n.prototype._flush=function(i){try{var s=this.conv.end();s&&s.length&&this.push(s,this.encoding),i()}catch(a){i(a)}},n.prototype.collect=function(i){var s="";return this.on("error",i),this.on("data",function(a){s+=a}),this.on("end",function(){i(null,s)}),this},{IconvLiteEncoderStream:t,IconvLiteDecoderStream:n}}});var _m=h((Ioe,H)=>{"use strict";var PE=nn().Buffer,ME=tE(),M8=$f();H.exports.encodings=null;H.exports.defaultCharUnicode="\uFFFD";H.exports.defaultCharSingleByte="?";H.exports.encode=function(e,t,n){e=""+(e||"");var i=H.exports.getEncoder(t,n),s=i.write(e),a=i.end();return a&&a.length>0?PE.concat([s,a]):s};H.exports.decode=function(e,t,n){typeof e=="string"&&(H.exports.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),H.exports.skipDecodeWarning=!0),e=PE.from(""+(e||""),"binary"));var i=H.exports.getDecoder(t,n),s=i.write(e),a=i.end();return a?s+a:s};H.exports.encodingExists=function(e){try{return H.exports.getCodec(e),!0}catch{return!1}};H.exports.toEncoding=H.exports.encode;H.exports.fromEncoding=H.exports.decode;H.exports._codecDataCache={__proto__:null};H.exports.getCodec=function(e){if(!H.exports.encodings){var t=OE();H.exports.encodings={__proto__:null},M8(H.exports.encodings,t)}for(var n=H.exports._canonicalizeEncoding(e),i={};;){var s=H.exports._codecDataCache[n];if(s)return s;var a=H.exports.encodings[n];switch(typeof a){case"string":n=a;break;case"object":for(var o in a)i[o]=a[o];i.encodingName||(i.encodingName=n),n=a.type;break;case"function":return i.encodingName||(i.encodingName=n),s=new a(i,H.exports),H.exports._codecDataCache[i.encodingName]=s,s;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+n+"')")}}};H.exports._canonicalizeEncoding=function(r){return(""+r).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};H.exports.getEncoder=function(e,t){var n=H.exports.getCodec(e),i=new n.encoder(t,n);return n.bomAware&&t&&t.addBOM&&(i=new ME.PrependBOM(i,t)),i};H.exports.getDecoder=function(e,t){var n=H.exports.getCodec(e),i=new n.decoder(t,n);return n.bomAware&&!(t&&t.stripBOM===!1)&&(i=new ME.StripBOM(i,t)),i};H.exports.enableStreamingAPI=function(e){if(!H.exports.supportsStreams){var t=DE()(e);H.exports.IconvLiteEncoderStream=t.IconvLiteEncoderStream,H.exports.IconvLiteDecoderStream=t.IconvLiteDecoderStream,H.exports.encodeStream=function(i,s){return new H.exports.IconvLiteEncoderStream(H.exports.getEncoder(i,s),s)},H.exports.decodeStream=function(i,s){return new H.exports.IconvLiteDecoderStream(H.exports.getDecoder(i,s),s)},H.exports.supportsStreams=!0}};var $c;try{$c=require("stream")}catch{}$c&&$c.Transform?H.exports.enableStreamingAPI($c):H.exports.encodeStream=H.exports.decodeStream=function(){throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.")}});var NE=h((_oe,LE)=>{"use strict";LE.exports=N8;function L8(r){for(var e=r.listeners("data"),t=0;t<e.length;t++)if(e[t].name==="ondata")return!0;return!1}function N8(r){if(!r)throw new TypeError("argument stream is required");if(typeof r.unpipe=="function"){r.unpipe();return}if(L8(r))for(var e,t=r.listeners("close"),n=0;n<t.length;n++)e=t[n],!(e.name!=="cleanup"&&e.name!=="onclose")&&e.call(r)}});var UE=h((koe,JE)=>{"use strict";var qE=V8(),q8=Jf(),wi=ms(),F8=_m(),J8=NE();JE.exports=B8;var U8=/^Encoding not recognized: /;function G8(r){if(!r)return null;try{return F8.getDecoder(r)}catch(e){throw U8.test(e.message)?wi(415,"specified encoding unsupported",{encoding:r,type:"encoding.unsupported"}):e}}function B8(r,e,t){var n=t,i=e||{};if(r===void 0)throw new TypeError("argument stream is required");if(typeof r!="object"||r===null||typeof r.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(i={encoding:e}),typeof e=="function"&&(n=e,i={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var s=i.encoding!==!0?i.encoding:"utf-8",a=q8.parse(i.limit),o=i.length!=null&&!isNaN(i.length)?parseInt(i.length,10):null;return n?FE(r,s,o,a,H8(n)):new Promise(function(l,u){FE(r,s,o,a,function(p,f){if(p)return u(p);l(f)})})}function $8(r){J8(r),typeof r.pause=="function"&&r.pause()}function FE(r,e,t,n,i){var s=!1,a=!0;if(n!==null&&t!==null&&t>n)return d(wi(413,"request entity too large",{expected:t,length:t,limit:n,type:"entity.too.large"}));var o=r._readableState;if(r._decoder||o&&(o.encoding||o.decoder))return d(wi(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof r.readable<"u"&&!r.readable)return d(wi(500,"stream is not readable",{type:"stream.not.readable"}));var c=0,l;try{l=G8(e)}catch(b){return d(b)}var u=l?"":[];r.on("aborted",p),r.on("close",y),r.on("data",f),r.on("end",m),r.on("error",m),a=!1;function d(){for(var b=new Array(arguments.length),g=0;g<b.length;g++)b[g]=arguments[g];s=!0,a?process.nextTick(x):x();function x(){y(),b[0]&&$8(r),i.apply(null,b)}}function p(){s||d(wi(400,"request aborted",{code:"ECONNABORTED",expected:t,length:t,received:c,type:"request.aborted"}))}function f(b){s||(c+=b.length,n!==null&&c>n?d(wi(413,"request entity too large",{limit:n,received:c,type:"entity.too.large"})):l?u+=l.write(b):u.push(b))}function m(b){if(!s){if(b)return d(b);if(t!==null&&c!==t)d(wi(400,"request size did not match content length",{expected:t,length:t,received:c,type:"request.size.invalid"}));else{var g=l?u+(l.end()||""):Buffer.concat(u);d(null,g)}}}function y(){u=null,r.removeListener("aborted",p),r.removeListener("data",f),r.removeListener("end",m),r.removeListener("error",m),r.removeListener("close",y)}}function V8(){try{return require("async_hooks")}catch{return{}}}function H8(r){var e;return qE.AsyncResource&&(e=new qE.AsyncResource(r.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?r:e.runInAsyncScope.bind(e,r,null)}});var BE=h((Toe,GE)=>{"use strict";GE.exports=z8;function z8(r,e){if(!Array.isArray(r))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var t=[],n=0;n<r.length;n++){var i=r[n];if(!Array.isArray(i)||i.length<2)throw new TypeError("each array member must be [ee, events...]");for(var s=i[0],a=1;a<i.length;a++){var o=i[a],c=Y8(o,l);s.on(o,c),t.push({ee:s,event:o,fn:c})}}function l(){u(),e.apply(null,arguments)}function u(){for(var p,f=0;f<t.length;f++)p=t[f],p.ee.removeListener(p.event,p.fn)}function d(p){e=p}return d.cancel=u,d}function Y8(r,e){return function(n){for(var i=new Array(arguments.length),s=this,a=r==="error"?n:null,o=0;o<i.length;o++)i[o]=arguments[o];e(a,s,r,i)}}});var Fa=h((Aoe,km)=>{"use strict";km.exports=Q8;km.exports.isFinished=HE;var $E=rF(),VE=BE(),W8=typeof setImmediate=="function"?setImmediate:function(r){process.nextTick(r.bind.apply(r,arguments))};function Q8(r,e){return HE(r)!==!1?(W8(e,null,r),r):(Z8(r,nF(e)),r)}function HE(r){var e=r.socket;if(typeof r.finished=="boolean")return!!(r.finished||e&&!e.writable);if(typeof r.complete=="boolean")return!!(r.upgrade||!e||!e.readable||r.complete&&!r.readable)}function X8(r,e){var t,n,i=!1;function s(o){t.cancel(),n.cancel(),i=!0,e(o)}t=n=VE([[r,"end","finish"]],s);function a(o){r.removeListener("socket",a),!i&&t===n&&(n=VE([[o,"error","close"]],s))}if(r.socket){a(r.socket);return}r.on("socket",a),r.socket===void 0&&tF(r,a)}function Z8(r,e){var t=r.__onFinished;(!t||!t.queue)&&(t=r.__onFinished=eF(r),X8(r,t)),t.queue.push(e)}function eF(r){function e(t){if(r.__onFinished===e&&(r.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var i=0;i<n.length;i++)n[i](t,r)}}return e.queue=[],e}function tF(r,e){var t=r.assignSocket;typeof t=="function"&&(r.assignSocket=function(i){t.call(this,i),e(i)})}function rF(){try{return require("async_hooks")}catch{return{}}}function nF(r){var e;return $E.AsyncResource&&(e=new $E.AsyncResource(r.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?r:e.runInAsyncScope.bind(e,r,null)}});var Vc=h(Tm=>{"use strict";var zE=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,iF=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,YE=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,sF=/\\([\u000b\u0020-\u00ff])/g,aF=/([\\"])/g,WE=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Tm.format=oF;Tm.parse=cF;function oF(r){if(!r||typeof r!="object")throw new TypeError("argument obj is required");var e=r.parameters,t=r.type;if(!t||!WE.test(t))throw new TypeError("invalid type");var n=t;if(e&&typeof e=="object")for(var i,s=Object.keys(e).sort(),a=0;a<s.length;a++){if(i=s[a],!YE.test(i))throw new TypeError("invalid parameter name");n+="; "+i+"="+uF(e[i])}return n}function cF(r){if(!r)throw new TypeError("argument string is required");var e=typeof r=="object"?lF(r):r;if(typeof e!="string")throw new TypeError("argument string is required to be a string");var t=e.indexOf(";"),n=t!==-1?e.slice(0,t).trim():e.trim();if(!WE.test(n))throw new TypeError("invalid media type");var i=new dF(n.toLowerCase());if(t!==-1){var s,a,o;for(zE.lastIndex=t;a=zE.exec(e);){if(a.index!==t)throw new TypeError("invalid parameter format");t+=a[0].length,s=a[1].toLowerCase(),o=a[2],o.charCodeAt(0)===34&&(o=o.slice(1,-1),o.indexOf("\\")!==-1&&(o=o.replace(sF,"$1"))),i.parameters[s]=o}if(t!==e.length)throw new TypeError("invalid parameter format")}return i}function lF(r){var e;if(typeof r.getHeader=="function"?e=r.getHeader("content-type"):typeof r.headers=="object"&&(e=r.headers&&r.headers["content-type"]),typeof e!="string")throw new TypeError("content-type header is missing from object");return e}function uF(r){var e=String(r);if(YE.test(e))return e;if(e.length>0&&!iF.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(aF,"\\$1")+'"'}function dF(r){this.parameters=Object.create(null),this.type=r}});var QE=h((joe,pF)=>{pF.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/ace+json":{source:"iana",compressible:!0},"application/ace-groupcomm+cbor":{source:"iana"},"application/ace-trl+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/aif+cbor":{source:"iana"},"application/aif+json":{source:"iana",compressible:!0},"application/alto-cdni+json":{source:"iana",compressible:!0},"application/alto-cdnifilter+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-propmap+json":{source:"iana",compressible:!0},"application/alto-propmapparams+json":{source:"iana",compressible:!0},"application/alto-tips+json":{source:"iana",compressible:!0},"application/alto-tipsparams+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/appinstaller":{compressible:!1,extensions:["appinstaller"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/appx":{compressible:!1,extensions:["appx"]},"application/appxbundle":{compressible:!1,extensions:["appxbundle"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/automationml-aml+xml":{source:"iana",compressible:!0,extensions:["aml"]},"application/automationml-amlx+zip":{source:"iana",compressible:!1,extensions:["amlx"]},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/bufr":{source:"iana"},"application/c2pa":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/ce+cbor":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/cid-edhoc+cbor-seq":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/city+json-seq":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-eap":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/concise-problem-details+cbor":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cose-x509":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwl":{source:"iana",extensions:["cwl"]},"application/cwl+json":{source:"iana",compressible:!0},"application/cwl+yaml":{source:"iana"},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana",extensions:["dcm"]},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dpop+jwt":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/eat+cwt":{source:"iana"},"application/eat+jwt":{source:"iana"},"application/eat-bun+cbor":{source:"iana"},"application/eat-bun+json":{source:"iana",compressible:!0},"application/eat-ucs+cbor":{source:"iana"},"application/eat-ucs+json":{source:"iana",compressible:!0},"application/ecmascript":{source:"apache",compressible:!0,extensions:["ecma"]},"application/edhoc+cbor-seq":{source:"iana"},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.legacyesn+json":{source:"iana",compressible:!0},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/entity-statement+jwt":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdf":{source:"iana",extensions:["fdf"]},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geopose+json":{source:"iana",compressible:!0},"application/geoxacml+json":{source:"iana",compressible:!0},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gnap-binding-jws":{source:"iana"},"application/gnap-binding-jwsd":{source:"iana"},"application/gnap-binding-rotation-jws":{source:"iana"},"application/gnap-binding-rotation-jwsd":{source:"iana"},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/grib":{source:"iana"},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"iana",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"apache",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/jscontact+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jsonpath":{source:"iana"},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwk-set+jwt":{source:"iana"},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/linkset":{source:"iana"},"application/linkset+json":{source:"iana",compressible:!0},"application/load-control+xml":{source:"iana",compressible:!0},"application/logout+jwt":{source:"iana"},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msix":{compressible:!1,extensions:["msix"]},"application/msixbundle":{compressible:!1,extensions:["msixbundle"]},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!0,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/ohttp-keys":{source:"iana"},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["sig","asc"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/private-token-issuer-directory":{source:"iana"},"application/private-token-request":{source:"iana"},"application/private-token-response":{source:"iana"},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/provided-claims+jwt":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.implied-document+xml":{source:"iana",compressible:!0},"application/prs.implied-executable":{source:"iana"},"application/prs.implied-object+json":{source:"iana",compressible:!0},"application/prs.implied-object+json-seq":{source:"iana"},"application/prs.implied-object+yaml":{source:"iana"},"application/prs.implied-structure":{source:"iana"},"application/prs.mayfile":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.vcfbzip2":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0,extensions:["xsf"]},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"apache"},"application/reputon+json":{source:"iana",compressible:!0},"application/resolve-response+jwt":{source:"iana"},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-checklist":{source:"iana"},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-signed-tal":{source:"iana"},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"apache"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana",extensions:["sql"]},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/sslkeylogfile":{source:"iana"},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/st2110-41":{source:"iana"},"application/stix+json":{source:"iana",compressible:!0},"application/stratum":{source:"iana"},"application/swid+cbor":{source:"iana"},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tm+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/toc+cbor":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{source:"iana",compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/trust-chain+json":{source:"iana",compressible:!0},"application/trust-mark+jwt":{source:"iana"},"application/trust-mark-delegation+jwt":{source:"iana"},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/uccs+cbor":{source:"iana"},"application/ujcs+json":{source:"iana",compressible:!0},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vc":{source:"iana"},"application/vc+cose":{source:"iana"},"application/vc+jwt":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.1ob":{source:"iana"},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3a+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ach+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc8+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.5gsa2x":{source:"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gsv2x":{source:"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.crs+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.current-location-discovery+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.seal-group-doc+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-network-qos-management-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-ue-config-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-unicast-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-user-profile-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.v2x":{source:"iana"},"application/vnd.3gpp.vae-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acm.addressxfer+json":{source:"iana",compressible:!0},"application/vnd.acm.chatbot+json":{source:"iana",compressible:!0},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"apache",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"apache"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.parquet":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.apexlang":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"apache"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autodesk.fbx":{extensions:["fbx"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.belightsoft.lhzd+zip":{source:"iana",compressible:!1},"application/vnd.belightsoft.lhzl+zip":{source:"iana",compressible:!1},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.bzip3":{source:"iana"},"application/vnd.c3voc.schedule+xml":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{source:"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{source:"iana"},"application/vnd.cncf.helm.config.v1+json":{source:"iana",compressible:!0},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datalog":{source:"iana"},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.dcmp+xml":{source:"iana",compressible:!0,extensions:["dcmp"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.eln+zip":{source:"iana",compressible:!1},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.erofs":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"apache",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{source:"iana",charset:"XML-BASED",compressible:!0},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.freelog.comic":{source:"iana"},"application/vnd.frogans.fnc":{source:"apache",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"apache",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.ga4gh.passport+jwt":{source:"iana"},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.genozip":{source:"iana"},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.gentoo.catmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.ebuild":{source:"iana"},"application/vnd.gentoo.eclass":{source:"iana"},"application/vnd.gentoo.gpkg":{source:"iana"},"application/vnd.gentoo.manifest":{source:"iana"},"application/vnd.gentoo.pkgmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.xpak":{source:"iana"},"application/vnd.geo+json":{source:"apache",compressible:!0},"application/vnd.geocube+xml":{source:"apache",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.pinboard":{source:"iana"},"application/vnd.geogebra.slides":{source:"iana",extensions:["ggs"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.gnu.taler.exchange+json":{source:"iana",compressible:!0},"application/vnd.gnu.taler.merchant+json":{source:"iana",compressible:!0},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.drawing":{compressible:!1,extensions:["gdraw"]},"application/vnd.google-apps.drive-sdk":{compressible:!1},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{compressible:!1},"application/vnd.google-apps.form":{compressible:!1,extensions:["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{compressible:!1,extensions:["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{compressible:!1,extensions:["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.script":{compressible:!1,extensions:["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{compressible:!1,extensions:["gsite"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"apache",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0,extensions:["xdcf"]},"application/vnd.gpxsee.map+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.hsl":{source:"iana"},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"apache"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"apache",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"apache"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.ipfs.ipns-record":{source:"iana"},"application/vnd.ipld.car":{source:"iana"},"application/vnd.ipld.dag-cbor":{source:"iana"},"application/vnd.ipld.dag-json":{source:"iana"},"application/vnd.ipld.raw":{source:"iana"},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kdl":{source:"iana"},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.keyman.kmp+zip":{source:"iana",compressible:!1},"application/vnd.keyman.kmx":{source:"iana"},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.ldev.productlicensing":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.mdl":{source:"iana"},"application/vnd.mdl-mbsdf":{source:"iana"},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.medicalholodeck.recordxr":{source:"iana"},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mermaid":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.modl":{source:"iana"},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-visio.viewer":{extensions:["vdx"]},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msgpack":{source:"iana"},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+cbor":{source:"iana"},"application/vnd.nato.bindingdataobject+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+xml":{source:"iana",compressible:!0,extensions:["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{source:"iana",compressible:!1},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"apache",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oai.workflows":{source:"iana"},"application/vnd.oai.workflows+json":{source:"iana",compressible:!0},"application/vnd.oai.workflows+yaml":{source:"iana"},"application/vnd.oasis.opendocument.base":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"apache",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-master-template":{source:"iana"},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.onvif.metadata":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openvpi.dspx+json":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.procrate.brushset":{extensions:["brushset"]},"application/vnd.procreate.brush":{extensions:["brush"]},"application/vnd.procreate.dream":{extensions:["drm"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.pt.mundusmundi":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0,extensions:["xhtm"]},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.relpipe":{source:"iana"},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.sketchometry":{source:"iana"},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.smintio.portals.archive":{source:"iana"},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sybyl.mol2":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uic.osdm+json":{source:"iana",compressible:!0},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml","uo"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.veraison.tsm-report+cbor":{source:"iana"},"application/vnd.veraison.tsm-report+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vocalshaper.vsp4":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.wasmflow.wafl":{source:"iana"},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordlift":{source:"iana"},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xarin.cpj":{source:"iana"},"application/vnd.xecrets-encrypted":{source:"iana"},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/voucher-jws+json":{source:"iana",compressible:!0},"application/vp":{source:"iana"},"application/vp+cose":{source:"iana"},"application/vp+jwt":{source:"iana"},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blender":{extensions:["blend"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-compressed":{extensions:["rar"]},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-ipynb+json":{compressible:!0,extensions:["ipynb"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zip-compressed":{extensions:["zip"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xfdf":{source:"iana",extensions:["xfdf"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yaml":{source:"iana"},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+cbor":{source:"iana"},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yang-sid+json":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zip+dotlottie":{extensions:["lottie"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana",extensions:["adts","aac"]},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flac":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/matroska":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/midi-clip":{source:"iana"},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a","m4b"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"apache"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{source:"iana",compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp","dib"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/dpx":{source:"iana",extensions:["dpx"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/j2c":{source:"iana"},"image/jaii":{source:"iana",extensions:["jaii"]},"image/jais":{source:"iana",extensions:["jais"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpg","jpeg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm","jpgm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxl":{source:"iana",extensions:["jxl"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1,extensions:["jfif"]},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif","btf"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.clip":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"iana",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-adobe-dng":{extensions:["dng"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-emf":{source:"iana"},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-wmf":{source:"iana"},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/bhttp":{source:"iana"},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/mls":{source:"iana"},"message/news":{source:"apache"},"message/ohttp-req":{source:"iana"},"message/ohttp-res":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime","mht","mhtml"]},"message/s-http":{source:"apache"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"apache"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/jt":{source:"iana",extensions:["jt"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/prc":{source:"iana",extensions:["prc"]},"model/step":{source:"iana",extensions:["step","stp","stpnc","p21","210"]},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/u3d":{source:"iana",extensions:["u3d"]},"model/vnd.bary":{source:"iana",extensions:["bary"]},"model/vnd.cld":{source:"iana",extensions:["cld"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana",extensions:["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usda":{source:"iana",extensions:["usda"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"apache"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hl7v2":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["md","markdown"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/prs.texi":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.exchangeable":{source:"iana"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"apache"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.vcf":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vnd.zoo.kcl":{source:"iana"},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/wgsl":{source:"iana",extensions:["wgsl"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/evc":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/h266":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/lottie+json":{source:"iana",compressible:!0},"video/matroska":{source:"iana"},"video/matroska-3d":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts","m2t","m2ts","mts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.planar":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var ZE=h((Ooe,XE)=>{XE.exports=QE()});var iS=h((Roe,nS)=>{var eS={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},tS={nginx:10,apache:20,iana:40,default:30},rS={application:1,font:2,audio:2,video:3,default:0};nS.exports=function(e,t="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),s=i.replace(/(\.|x-).*/,"$1"),a=eS[s]||eS.default,o=tS[t]||tS.default,c=rS[n]||rS.default,l=1-e.length/100;return a+o+c+l}});var gs=h(nt=>{"use strict";var Ii=ZE(),fF=require("path").extname,sS=iS(),aS=/^\s*([^;\s]*)(?:;|\s|$)/,mF=/^text\//i;nt.charset=oS;nt.charsets={lookup:oS};nt.contentType=hF;nt.extension=Am;nt.extensions=Object.create(null);nt.lookup=yF;nt.types=Object.create(null);nt._extensionConflicts=[];bF(nt.extensions,nt.types);function oS(r){if(!r||typeof r!="string")return!1;var e=aS.exec(r),t=e&&Ii[e[1].toLowerCase()];return t&&t.charset?t.charset:e&&mF.test(e[1])?"UTF-8":!1}function hF(r){if(!r||typeof r!="string")return!1;var e=r.indexOf("/")===-1?nt.lookup(r):r;if(!e)return!1;if(e.indexOf("charset")===-1){var t=nt.charset(e);t&&(e+="; charset="+t.toLowerCase())}return e}function Am(r){if(!r||typeof r!="string")return!1;var e=aS.exec(r),t=e&&nt.extensions[e[1].toLowerCase()];return!t||!t.length?!1:t[0]}function yF(r){if(!r||typeof r!="string")return!1;var e=fF("x."+r).toLowerCase().slice(1);return e&&nt.types[e]||!1}function bF(r,e){Object.keys(Ii).forEach(function(n){var i=Ii[n],s=i.extensions;if(!(!s||!s.length)){r[n]=s;for(var a=0;a<s.length;a++){var o=s[a];e[o]=gF(o,e[o],n);let c=vF(o,e[o],n);c!==e[o]&&nt._extensionConflicts.push([o,c,e[o]])}}})}function gF(r,e,t){var n=e?sS(e,Ii[e].source):0,i=t?sS(t,Ii[t].source):0;return n>i?e:t}function vF(r,e,t){var n=["nginx","apache",void 0,"iana"],i=e?n.indexOf(Ii[e].source):0,s=t?n.indexOf(Ii[t].source):0;return nt.types[Am]!=="application/octet-stream"&&(i>s||i===s&&nt.types[Am]?.slice(0,12)==="application/")||i>s?e:t}});var uS=h(Hc=>{"use strict";var xF=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,cS=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,lS=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Hc.format=EF;Hc.parse=wF;Hc.test=SF;function EF(r){if(!r||typeof r!="object")throw new TypeError("argument obj is required");var e=r.subtype,t=r.suffix,n=r.type;if(!n||!cS.test(n))throw new TypeError("invalid type");if(!e||!xF.test(e))throw new TypeError("invalid subtype");var i=n+"/"+e;if(t){if(!cS.test(t))throw new TypeError("invalid suffix");i+="+"+t}return i}function SF(r){if(!r)throw new TypeError("argument string is required");if(typeof r!="string")throw new TypeError("argument string is required to be a string");return lS.test(r.toLowerCase())}function wF(r){if(!r)throw new TypeError("argument string is required");if(typeof r!="string")throw new TypeError("argument string is required to be a string");var e=lS.exec(r.toLowerCase());if(!e)throw new TypeError("invalid media type");var t=e[1],n=e[2],i,s=n.lastIndexOf("+");return s!==-1&&(i=n.substr(s+1),n=n.substr(0,s)),new IF(t,n,i)}function IF(r,e,t){this.type=r,this.subtype=e,this.suffix=t}});var zc=h((Poe,vs)=>{"use strict";var _F=Vc(),kF=gs(),TF=uS();vs.exports=AF;vs.exports.is=dS;vs.exports.hasBody=pS;vs.exports.normalize=fS;vs.exports.match=mS;function dS(r,e){var t,n=e,i=jF(r);if(!i)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),t=0;t<n.length;t++)n[t]=arguments[t+1];if(!n||!n.length)return i;var s;for(t=0;t<n.length;t++)if(mS(fS(s=n[t]),i))return s[0]==="+"||s.indexOf("*")!==-1?i:s;return!1}function pS(r){return r.headers["transfer-encoding"]!==void 0||!isNaN(r.headers["content-length"])}function AF(r,e){if(!pS(r))return null;var t=arguments.length>2?Array.prototype.slice.call(arguments,1):e,n=r.headers["content-type"];return dS(n,t)}function fS(r){if(typeof r!="string")return!1;switch(r){case"urlencoded":return"application/x-www-form-urlencoded";case"multipart":return"multipart/*"}return r[0]==="+"?"*/*"+r:r.indexOf("/")===-1?kF.lookup(r):r}function mS(r,e){if(r===!1)return!1;var t=e.split("/"),n=r.split("/");return t.length!==2||n.length!==2||n[0]!=="*"&&n[0]!==t[0]?!1:n[1].slice(0,2)==="*+"?n[1].length<=t[1].length+1&&n[1].slice(1)===t[1].slice(1-n[1].length):!(n[1]!=="*"&&n[1]!==t[1])}function KF(r){var e=_F.parse(r).type;return TF.test(e)?e:null}function jF(r){try{return r?KF(r):null}catch{return null}}});var xs=h((Moe,hS)=>{"use strict";var OF=Jf(),RF=Vc(),CF=zc();hS.exports={getCharset:DF,normalizeOptions:MF,passthrough:LF};function DF(r){try{return(RF.parse(r).parameters.charset||"").toLowerCase()}catch{return}}function PF(r){return function(t){return!!CF(t,r)}}function MF(r,e){if(!e)throw new TypeError("defaultType must be provided");var t=r?.inflate!==!1,n=typeof r?.limit!="number"?OF.parse(r?.limit||"100kb"):r?.limit,i=r?.type||e,s=r?.verify||!1,a=r?.defaultCharset||"utf-8";if(s!==!1&&typeof s!="function")throw new TypeError("option verify must be function");var o=typeof i!="function"?PF(i):i;return{inflate:t,limit:n,verify:s,defaultCharset:a,shouldParse:o}}function LF(r){return r}});var Ja=h((Loe,bS)=>{"use strict";var on=ms(),NF=UE(),yS=_m(),jm=Fa(),Km=require("node:zlib"),qF=zc().hasBody,{getCharset:FF}=xs();bS.exports=JF;function JF(r,e,t,n,i,s){if(jm.isFinished(r)){i("body already parsed"),t();return}if("body"in r||(r.body=void 0),!qF(r)){i("skip empty body"),t();return}if(i("content-type %j",r.headers["content-type"]),!s.shouldParse(r)){i("skip parsing"),t();return}var a=null;if(s?.skipCharset!==!0&&(a=FF(r)||s.defaultCharset,s?.isValidCharset&&!s.isValidCharset(a))){i("invalid charset"),t(on(415,'unsupported charset "'+a.toUpperCase()+'"',{charset:a,type:"charset.unsupported"}));return}var o,c=s,l,u=c.verify;try{l=UF(r,i,c.inflate),o=l.length,l.length=void 0}catch(d){return t(d)}if(c.length=o,c.encoding=u?null:a,c.encoding===null&&a!==null&&!yS.encodingExists(a))return t(on(415,'unsupported charset "'+a.toUpperCase()+'"',{charset:a.toLowerCase(),type:"charset.unsupported"}));i("read body"),NF(l,c,function(d,p){if(d){var f;d.type==="encoding.unsupported"?f=on(415,'unsupported charset "'+a.toUpperCase()+'"',{charset:a.toLowerCase(),type:"charset.unsupported"}):f=on(400,d),l!==r&&(r.unpipe(),l.destroy()),BF(r,function(){t(on(400,f))});return}if(u)try{i("verify body"),u(r,e,p,a)}catch(y){t(on(403,y,{body:p,type:y.type||"entity.verify.failed"}));return}var m=p;try{i("parse body"),m=typeof p!="string"&&a!==null?yS.decode(p,a):p,r.body=n(m,a)}catch(y){t(on(400,y,{body:m,type:y.type||"entity.parse.failed"}));return}t()})}function UF(r,e,t){var n=(r.headers["content-encoding"]||"identity").toLowerCase(),i=r.headers["content-length"];if(e('content-encoding "%s"',n),t===!1&&n!=="identity")throw on(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});if(n==="identity")return r.length=i,r;var s=GF(n,e);return r.pipe(s),s}function GF(r,e){switch(r){case"deflate":return e("inflate body"),Km.createInflate();case"gzip":return e("gunzip body"),Km.createGunzip();case"br":return e("brotli decompress body"),Km.createBrotliDecompress();default:throw on(415,'unsupported content encoding "'+r+'"',{encoding:r,type:"encoding.unsupported"})}}function BF(r,e){jm.isFinished(r)?e(null):(jm(r,e),r.resume())}});var xS=h((Noe,vS)=>{"use strict";var Om=Nt()("body-parser:json"),$F=Ja(),{normalizeOptions:VF}=xs();vS.exports=WF;var HF=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,zF="#",YF=/#+/g;function WF(r){let e=VF(r,"application/json");var t=r?.reviver,n=r?.strict!==!1;function i(a){if(a.length===0)return{};if(n){var o=XF(a);if(o!=="{"&&o!=="[")throw Om("strict violation"),QF(a,o)}try{return Om("parse json"),JSON.parse(a,t)}catch(c){throw gS(c,{message:c.message,stack:c.stack})}}let s={...e,isValidCharset:a=>a.slice(0,4)==="utf-"};return function(o,c,l){$F(o,c,l,i,Om,s)}}function QF(r,e){var t=r.indexOf(e),n="";t!==-1&&(n=r.substring(0,t)+zF.repeat(r.length-t));try{throw JSON.parse(n),new SyntaxError("strict violation")}catch(i){return gS(i,{message:i.message.replace(YF,function(s){return r.substring(t,t+s.length)}),stack:i.stack})}}function XF(r){var e=HF.exec(r);return e?e[1]:void 0}function gS(r,e){for(var t=Object.getOwnPropertyNames(r),n=0;n<t.length;n++){var i=t[n];i!=="stack"&&i!=="message"&&delete r[i]}return r.stack=e.stack.replace(r.message,e.message),r.message=e.message,r}});var SS=h((qoe,ES)=>{"use strict";var ZF=Nt()("body-parser:raw"),eJ=Ja(),{normalizeOptions:tJ,passthrough:rJ}=xs();ES.exports=nJ;function nJ(r){let t={...tJ(r,"application/octet-stream"),skipCharset:!0};return function(i,s,a){eJ(i,s,a,rJ,ZF,t)}}});var IS=h((Foe,wS)=>{"use strict";var iJ=Nt()("body-parser:text"),sJ=Ja(),{normalizeOptions:aJ,passthrough:oJ}=xs();wS.exports=cJ;function cJ(r){let e=aJ(r,"text/plain");return function(n,i,s){sJ(n,i,s,oJ,iJ,e)}}});var _i=h((Joe,_S)=>{"use strict";_S.exports=TypeError});var TS=h((Uoe,kS)=>{kS.exports=require("util").inspect});var Va=h((Goe,HS)=>{var Jm=typeof Map=="function"&&Map.prototype,Rm=Object.getOwnPropertyDescriptor&&Jm?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Wc=Jm&&Rm&&typeof Rm.get=="function"?Rm.get:null,AS=Jm&&Map.prototype.forEach,Um=typeof Set=="function"&&Set.prototype,Cm=Object.getOwnPropertyDescriptor&&Um?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Qc=Um&&Cm&&typeof Cm.get=="function"?Cm.get:null,KS=Um&&Set.prototype.forEach,lJ=typeof WeakMap=="function"&&WeakMap.prototype,Ga=lJ?WeakMap.prototype.has:null,uJ=typeof WeakSet=="function"&&WeakSet.prototype,Ba=uJ?WeakSet.prototype.has:null,dJ=typeof WeakRef=="function"&&WeakRef.prototype,jS=dJ?WeakRef.prototype.deref:null,pJ=Boolean.prototype.valueOf,fJ=Object.prototype.toString,mJ=Function.prototype.toString,hJ=String.prototype.match,Gm=String.prototype.slice,Dn=String.prototype.replace,yJ=String.prototype.toUpperCase,OS=String.prototype.toLowerCase,FS=RegExp.prototype.test,RS=Array.prototype.concat,Lr=Array.prototype.join,bJ=Array.prototype.slice,CS=Math.floor,Mm=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Dm=Object.getOwnPropertySymbols,Lm=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Es=typeof Symbol=="function"&&typeof Symbol.iterator=="object",$a=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Es||!0)?Symbol.toStringTag:null,JS=Object.prototype.propertyIsEnumerable,DS=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(r){return r.__proto__}:null);function PS(r,e){if(r===1/0||r===-1/0||r!==r||r&&r>-1e3&&r<1e3||FS.call(/e/,e))return e;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof r=="number"){var n=r<0?-CS(-r):CS(r);if(n!==r){var i=String(n),s=Gm.call(e,i.length+1);return Dn.call(i,t,"$&_")+"."+Dn.call(Dn.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Dn.call(e,t,"$&_")}var Nm=TS(),MS=Nm.custom,LS=BS(MS)?MS:null,US={__proto__:null,double:'"',single:"'"},gJ={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};HS.exports=function r(e,t,n,i){var s=t||{};if(cn(s,"quoteStyle")&&!cn(US,s.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(cn(s,"maxStringLength")&&(typeof s.maxStringLength=="number"?s.maxStringLength<0&&s.maxStringLength!==1/0:s.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=cn(s,"customInspect")?s.customInspect:!0;if(typeof a!="boolean"&&a!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(cn(s,"indent")&&s.indent!==null&&s.indent!==" "&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(cn(s,"numericSeparator")&&typeof s.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=s.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return VS(e,s);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var c=String(e);return o?PS(e,c):c}if(typeof e=="bigint"){var l=String(e)+"n";return o?PS(e,l):l}var u=typeof s.depth>"u"?5:s.depth;if(typeof n>"u"&&(n=0),n>=u&&u>0&&typeof e=="object")return qm(e)?"[Array]":"[Object]";var d=MJ(s,n);if(typeof i>"u")i=[];else if($S(i,e)>=0)return"[Circular]";function p(S,j,A){if(j&&(i=bJ.call(i),i.push(j)),A){var T={depth:s.depth};return cn(s,"quoteStyle")&&(T.quoteStyle=s.quoteStyle),r(S,T,n+1,i)}return r(S,s,n+1,i)}if(typeof e=="function"&&!NS(e)){var f=TJ(e),m=Yc(e,p);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(m.length>0?" { "+Lr.call(m,", ")+" }":"")}if(BS(e)){var y=Es?Dn.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Lm.call(e);return typeof e=="object"&&!Es?Ua(y):y}if(CJ(e)){for(var b="<"+OS.call(String(e.nodeName)),g=e.attributes||[],x=0;x<g.length;x++)b+=" "+g[x].name+"="+GS(vJ(g[x].value),"double",s);return b+=">",e.childNodes&&e.childNodes.length&&(b+="..."),b+="</"+OS.call(String(e.nodeName))+">",b}if(qm(e)){if(e.length===0)return"[]";var I=Yc(e,p);return d&&!PJ(I)?"["+Fm(I,d)+"]":"[ "+Lr.call(I,", ")+" ]"}if(EJ(e)){var k=Yc(e,p);return!("cause"in Error.prototype)&&"cause"in e&&!JS.call(e,"cause")?"{ ["+String(e)+"] "+Lr.call(RS.call("[cause]: "+p(e.cause),k),", ")+" }":k.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Lr.call(k,", ")+" }"}if(typeof e=="object"&&a){if(LS&&typeof e[LS]=="function"&&Nm)return Nm(e,{depth:u-n});if(a!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(AJ(e)){var M=[];return AS&&AS.call(e,function(S,j){M.push(p(j,e,!0)+" => "+p(S,e))}),qS("Map",Wc.call(e),M,d)}if(OJ(e)){var U=[];return KS&&KS.call(e,function(S){U.push(p(S,e))}),qS("Set",Qc.call(e),U,d)}if(KJ(e))return Pm("WeakMap");if(RJ(e))return Pm("WeakSet");if(jJ(e))return Pm("WeakRef");if(wJ(e))return Ua(p(Number(e)));if(_J(e))return Ua(p(Mm.call(e)));if(IJ(e))return Ua(pJ.call(e));if(SJ(e))return Ua(p(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!xJ(e)&&!NS(e)){var re=Yc(e,p),Ke=DS?DS(e)===Object.prototype:e instanceof Object||e.constructor===Object,ie=e instanceof Object?"":"null prototype",ee=!Ke&&$a&&Object(e)===e&&$a in e?Gm.call(Pn(e),8,-1):ie?"Object":"",Je=Ke||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",Sr=Je+(ee||ie?"["+Lr.call(RS.call([],ee||[],ie||[]),": ")+"] ":"");return re.length===0?Sr+"{}":d?Sr+"{"+Fm(re,d)+"}":Sr+"{ "+Lr.call(re,", ")+" }"}return String(e)};function GS(r,e,t){var n=t.quoteStyle||e,i=US[n];return i+r+i}function vJ(r){return Dn.call(String(r),/"/g,"&quot;")}function ki(r){return!$a||!(typeof r=="object"&&($a in r||typeof r[$a]<"u"))}function qm(r){return Pn(r)==="[object Array]"&&ki(r)}function xJ(r){return Pn(r)==="[object Date]"&&ki(r)}function NS(r){return Pn(r)==="[object RegExp]"&&ki(r)}function EJ(r){return Pn(r)==="[object Error]"&&ki(r)}function SJ(r){return Pn(r)==="[object String]"&&ki(r)}function wJ(r){return Pn(r)==="[object Number]"&&ki(r)}function IJ(r){return Pn(r)==="[object Boolean]"&&ki(r)}function BS(r){if(Es)return r&&typeof r=="object"&&r instanceof Symbol;if(typeof r=="symbol")return!0;if(!r||typeof r!="object"||!Lm)return!1;try{return Lm.call(r),!0}catch{}return!1}function _J(r){if(!r||typeof r!="object"||!Mm)return!1;try{return Mm.call(r),!0}catch{}return!1}var kJ=Object.prototype.hasOwnProperty||function(r){return r in this};function cn(r,e){return kJ.call(r,e)}function Pn(r){return fJ.call(r)}function TJ(r){if(r.name)return r.name;var e=hJ.call(mJ.call(r),/^function\s*([\w$]+)/);return e?e[1]:null}function $S(r,e){if(r.indexOf)return r.indexOf(e);for(var t=0,n=r.length;t<n;t++)if(r[t]===e)return t;return-1}function AJ(r){if(!Wc||!r||typeof r!="object")return!1;try{Wc.call(r);try{Qc.call(r)}catch{return!0}return r instanceof Map}catch{}return!1}function KJ(r){if(!Ga||!r||typeof r!="object")return!1;try{Ga.call(r,Ga);try{Ba.call(r,Ba)}catch{return!0}return r instanceof WeakMap}catch{}return!1}function jJ(r){if(!jS||!r||typeof r!="object")return!1;try{return jS.call(r),!0}catch{}return!1}function OJ(r){if(!Qc||!r||typeof r!="object")return!1;try{Qc.call(r);try{Wc.call(r)}catch{return!0}return r instanceof Set}catch{}return!1}function RJ(r){if(!Ba||!r||typeof r!="object")return!1;try{Ba.call(r,Ba);try{Ga.call(r,Ga)}catch{return!0}return r instanceof WeakSet}catch{}return!1}function CJ(r){return!r||typeof r!="object"?!1:typeof HTMLElement<"u"&&r instanceof HTMLElement?!0:typeof r.nodeName=="string"&&typeof r.getAttribute=="function"}function VS(r,e){if(r.length>e.maxStringLength){var t=r.length-e.maxStringLength,n="... "+t+" more character"+(t>1?"s":"");return VS(Gm.call(r,0,e.maxStringLength),e)+n}var i=gJ[e.quoteStyle||"single"];i.lastIndex=0;var s=Dn.call(Dn.call(r,i,"\\$1"),/[\x00-\x1f]/g,DJ);return GS(s,"single",e)}function DJ(r){var e=r.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return t?"\\"+t:"\\x"+(e<16?"0":"")+yJ.call(e.toString(16))}function Ua(r){return"Object("+r+")"}function Pm(r){return r+" { ? }"}function qS(r,e,t,n){var i=n?Fm(t,n):Lr.call(t,", ");return r+" ("+e+") {"+i+"}"}function PJ(r){for(var e=0;e<r.length;e++)if($S(r[e],`
`)>=0)return!1;return!0}function MJ(r,e){var t;if(r.indent===" ")t=" ";else if(typeof r.indent=="number"&&r.indent>0)t=Lr.call(Array(r.indent+1)," ");else return null;return{base:t,prev:Lr.call(Array(e+1),t)}}function Fm(r,e){if(r.length===0)return"";var t=`
`+e.prev+e.base;return t+Lr.call(r,","+t)+`
`+e.prev}function Yc(r,e){var t=qm(r),n=[];if(t){n.length=r.length;for(var i=0;i<r.length;i++)n[i]=cn(r,i)?e(r[i],r):""}var s=typeof Dm=="function"?Dm(r):[],a;if(Es){a={};for(var o=0;o<s.length;o++)a["$"+s[o]]=s[o]}for(var c in r)cn(r,c)&&(t&&String(Number(c))===c&&c<r.length||Es&&a["$"+c]instanceof Symbol||(FS.call(/[^\w$]/,c)?n.push(e(c,r)+": "+e(r[c],r)):n.push(c+": "+e(r[c],r))));if(typeof Dm=="function")for(var l=0;l<s.length;l++)JS.call(r,s[l])&&n.push("["+e(s[l])+"]: "+e(r[s[l]],r));return n}});var YS=h((Boe,zS)=>{"use strict";var LJ=Va(),NJ=_i(),Xc=function(r,e,t){for(var n=r,i;(i=n.next)!=null;n=i)if(i.key===e)return n.next=i.next,t||(i.next=r.next,r.next=i),i},qJ=function(r,e){if(r){var t=Xc(r,e);return t&&t.value}},FJ=function(r,e,t){var n=Xc(r,e);n?n.value=t:r.next={key:e,next:r.next,value:t}},JJ=function(r,e){return r?!!Xc(r,e):!1},UJ=function(r,e){if(r)return Xc(r,e,!0)};zS.exports=function(){var e,t={assert:function(n){if(!t.has(n))throw new NJ("Side channel does not contain "+LJ(n))},delete:function(n){var i=UJ(e,n);return i&&e&&!e.next&&(e=void 0),!!i},get:function(n){return qJ(e,n)},has:function(n){return JJ(e,n)},set:function(n,i){e||(e={next:void 0}),FJ(e,n,i)}};return t}});var Bm=h(($oe,WS)=>{"use strict";WS.exports=Object});var XS=h((Voe,QS)=>{"use strict";QS.exports=Error});var ew=h((Hoe,ZS)=>{"use strict";ZS.exports=EvalError});var rw=h((zoe,tw)=>{"use strict";tw.exports=RangeError});var iw=h((Yoe,nw)=>{"use strict";nw.exports=ReferenceError});var aw=h((Woe,sw)=>{"use strict";sw.exports=SyntaxError});var cw=h((Qoe,ow)=>{"use strict";ow.exports=URIError});var uw=h((Xoe,lw)=>{"use strict";lw.exports=Math.abs});var pw=h((Zoe,dw)=>{"use strict";dw.exports=Math.floor});var mw=h((ece,fw)=>{"use strict";fw.exports=Math.max});var yw=h((tce,hw)=>{"use strict";hw.exports=Math.min});var gw=h((rce,bw)=>{"use strict";bw.exports=Math.pow});var xw=h((nce,vw)=>{"use strict";vw.exports=Math.round});var Sw=h((ice,Ew)=>{"use strict";Ew.exports=Number.isNaN||function(e){return e!==e}});var Iw=h((sce,ww)=>{"use strict";var GJ=Sw();ww.exports=function(e){return GJ(e)||e===0?e:e<0?-1:1}});var kw=h((ace,_w)=>{"use strict";_w.exports=Object.getOwnPropertyDescriptor});var $m=h((oce,Tw)=>{"use strict";var Zc=kw();if(Zc)try{Zc([],"length")}catch{Zc=null}Tw.exports=Zc});var Kw=h((cce,Aw)=>{"use strict";var el=Object.defineProperty||!1;if(el)try{el({},"a",{value:1})}catch{el=!1}Aw.exports=el});var Ow=h((lce,jw)=>{"use strict";jw.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},t=Symbol("test"),n=Object(t);if(typeof t=="string"||Object.prototype.toString.call(t)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[t]=i;for(var s in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var a=Object.getOwnPropertySymbols(e);if(a.length!==1||a[0]!==t||!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,t);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var Dw=h((uce,Cw)=>{"use strict";var Rw=typeof Symbol<"u"&&Symbol,BJ=Ow();Cw.exports=function(){return typeof Rw!="function"||typeof Symbol!="function"||typeof Rw("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:BJ()}});var Vm=h((dce,Pw)=>{"use strict";Pw.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var Hm=h((pce,Mw)=>{"use strict";var $J=Bm();Mw.exports=$J.getPrototypeOf||null});var qw=h((fce,Nw)=>{"use strict";var VJ="Function.prototype.bind called on incompatible ",HJ=Object.prototype.toString,zJ=Math.max,YJ="[object Function]",Lw=function(e,t){for(var n=[],i=0;i<e.length;i+=1)n[i]=e[i];for(var s=0;s<t.length;s+=1)n[s+e.length]=t[s];return n},WJ=function(e,t){for(var n=[],i=t||0,s=0;i<e.length;i+=1,s+=1)n[s]=e[i];return n},QJ=function(r,e){for(var t="",n=0;n<r.length;n+=1)t+=r[n],n+1<r.length&&(t+=e);return t};Nw.exports=function(e){var t=this;if(typeof t!="function"||HJ.apply(t)!==YJ)throw new TypeError(VJ+t);for(var n=WJ(arguments,1),i,s=function(){if(this instanceof i){var u=t.apply(this,Lw(n,arguments));return Object(u)===u?u:this}return t.apply(e,Lw(n,arguments))},a=zJ(0,t.length-n.length),o=[],c=0;c<a;c++)o[c]="$"+c;if(i=Function("binder","return function ("+QJ(o,",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var l=function(){};l.prototype=t.prototype,i.prototype=new l,l.prototype=null}return i}});var Ha=h((mce,Fw)=>{"use strict";var XJ=qw();Fw.exports=Function.prototype.bind||XJ});var tl=h((hce,Jw)=>{"use strict";Jw.exports=Function.prototype.call});var zm=h((yce,Uw)=>{"use strict";Uw.exports=Function.prototype.apply});var Bw=h((bce,Gw)=>{"use strict";Gw.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var Vw=h((gce,$w)=>{"use strict";var ZJ=Ha(),e3=zm(),t3=tl(),r3=Bw();$w.exports=r3||ZJ.call(t3,e3)});var Ym=h((vce,Hw)=>{"use strict";var n3=Ha(),i3=_i(),s3=tl(),a3=Vw();Hw.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new i3("a function is required");return a3(n3,s3,e)}});var Zw=h((xce,Xw)=>{"use strict";var o3=Ym(),zw=$m(),Ww;try{Ww=[].__proto__===Array.prototype}catch(r){if(!r||typeof r!="object"||!("code"in r)||r.code!=="ERR_PROTO_ACCESS")throw r}var Wm=!!Ww&&zw&&zw(Object.prototype,"__proto__"),Qw=Object,Yw=Qw.getPrototypeOf;Xw.exports=Wm&&typeof Wm.get=="function"?o3([Wm.get]):typeof Yw=="function"?function(e){return Yw(e==null?e:Qw(e))}:!1});var i1=h((Ece,n1)=>{"use strict";var e1=Vm(),t1=Hm(),r1=Zw();n1.exports=e1?function(e){return e1(e)}:t1?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return t1(e)}:r1?function(e){return r1(e)}:null});var a1=h((Sce,s1)=>{"use strict";var c3=Function.prototype.call,l3=Object.prototype.hasOwnProperty,u3=Ha();s1.exports=u3.call(c3,l3)});var il=h((wce,p1)=>{"use strict";var te,d3=Bm(),p3=XS(),f3=ew(),m3=rw(),h3=iw(),_s=aw(),Is=_i(),y3=cw(),b3=uw(),g3=pw(),v3=mw(),x3=yw(),E3=gw(),S3=xw(),w3=Iw(),u1=Function,Qm=function(r){try{return u1('"use strict"; return ('+r+").constructor;")()}catch{}},za=$m(),I3=Kw(),Xm=function(){throw new Is},_3=za?(function(){try{return arguments.callee,Xm}catch{try{return za(arguments,"callee").get}catch{return Xm}}})():Xm,Ss=Dw()(),it=i1(),k3=Hm(),T3=Vm(),d1=zm(),Ya=tl(),ws={},A3=typeof Uint8Array>"u"||!it?te:it(Uint8Array),Ti={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?te:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?te:ArrayBuffer,"%ArrayIteratorPrototype%":Ss&&it?it([][Symbol.iterator]()):te,"%AsyncFromSyncIteratorPrototype%":te,"%AsyncFunction%":ws,"%AsyncGenerator%":ws,"%AsyncGeneratorFunction%":ws,"%AsyncIteratorPrototype%":ws,"%Atomics%":typeof Atomics>"u"?te:Atomics,"%BigInt%":typeof BigInt>"u"?te:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?te:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?te:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?te:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":p3,"%eval%":eval,"%EvalError%":f3,"%Float16Array%":typeof Float16Array>"u"?te:Float16Array,"%Float32Array%":typeof Float32Array>"u"?te:Float32Array,"%Float64Array%":typeof Float64Array>"u"?te:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?te:FinalizationRegistry,"%Function%":u1,"%GeneratorFunction%":ws,"%Int8Array%":typeof Int8Array>"u"?te:Int8Array,"%Int16Array%":typeof Int16Array>"u"?te:Int16Array,"%Int32Array%":typeof Int32Array>"u"?te:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ss&&it?it(it([][Symbol.iterator]())):te,"%JSON%":typeof JSON=="object"?JSON:te,"%Map%":typeof Map>"u"?te:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Ss||!it?te:it(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":d3,"%Object.getOwnPropertyDescriptor%":za,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?te:Promise,"%Proxy%":typeof Proxy>"u"?te:Proxy,"%RangeError%":m3,"%ReferenceError%":h3,"%Reflect%":typeof Reflect>"u"?te:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?te:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Ss||!it?te:it(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?te:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ss&&it?it(""[Symbol.iterator]()):te,"%Symbol%":Ss?Symbol:te,"%SyntaxError%":_s,"%ThrowTypeError%":_3,"%TypedArray%":A3,"%TypeError%":Is,"%Uint8Array%":typeof Uint8Array>"u"?te:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?te:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?te:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?te:Uint32Array,"%URIError%":y3,"%WeakMap%":typeof WeakMap>"u"?te:WeakMap,"%WeakRef%":typeof WeakRef>"u"?te:WeakRef,"%WeakSet%":typeof WeakSet>"u"?te:WeakSet,"%Function.prototype.call%":Ya,"%Function.prototype.apply%":d1,"%Object.defineProperty%":I3,"%Object.getPrototypeOf%":k3,"%Math.abs%":b3,"%Math.floor%":g3,"%Math.max%":v3,"%Math.min%":x3,"%Math.pow%":E3,"%Math.round%":S3,"%Math.sign%":w3,"%Reflect.getPrototypeOf%":T3};if(it)try{null.error}catch(r){o1=it(it(r)),Ti["%Error.prototype%"]=o1}var o1,K3=function r(e){var t;if(e==="%AsyncFunction%")t=Qm("async function () {}");else if(e==="%GeneratorFunction%")t=Qm("function* () {}");else if(e==="%AsyncGeneratorFunction%")t=Qm("async function* () {}");else if(e==="%AsyncGenerator%"){var n=r("%AsyncGeneratorFunction%");n&&(t=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=r("%AsyncGenerator%");i&&it&&(t=it(i.prototype))}return Ti[e]=t,t},c1={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Wa=Ha(),rl=a1(),j3=Wa.call(Ya,Array.prototype.concat),O3=Wa.call(d1,Array.prototype.splice),l1=Wa.call(Ya,String.prototype.replace),nl=Wa.call(Ya,String.prototype.slice),R3=Wa.call(Ya,RegExp.prototype.exec),C3=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,D3=/\\(\\)?/g,P3=function(e){var t=nl(e,0,1),n=nl(e,-1);if(t==="%"&&n!=="%")throw new _s("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&t!=="%")throw new _s("invalid intrinsic syntax, expected opening `%`");var i=[];return l1(e,C3,function(s,a,o,c){i[i.length]=o?l1(c,D3,"$1"):a||s}),i},M3=function(e,t){var n=e,i;if(rl(c1,n)&&(i=c1[n],n="%"+i[0]+"%"),rl(Ti,n)){var s=Ti[n];if(s===ws&&(s=K3(n)),typeof s>"u"&&!t)throw new Is("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:s}}throw new _s("intrinsic "+e+" does not exist!")};p1.exports=function(e,t){if(typeof e!="string"||e.length===0)throw new Is("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof t!="boolean")throw new Is('"allowMissing" argument must be a boolean');if(R3(/^%?[^%]*%?$/,e)===null)throw new _s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=P3(e),i=n.length>0?n[0]:"",s=M3("%"+i+"%",t),a=s.name,o=s.value,c=!1,l=s.alias;l&&(i=l[0],O3(n,j3([0,1],l)));for(var u=1,d=!0;u<n.length;u+=1){var p=n[u],f=nl(p,0,1),m=nl(p,-1);if((f==='"'||f==="'"||f==="`"||m==='"'||m==="'"||m==="`")&&f!==m)throw new _s("property names with quotes must have matching quotes");if((p==="constructor"||!d)&&(c=!0),i+="."+p,a="%"+i+"%",rl(Ti,a))o=Ti[a];else if(o!=null){if(!(p in o)){if(!t)throw new Is("base intrinsic for "+e+" exists, but the property is not available.");return}if(za&&u+1>=n.length){var y=za(o,p);d=!!y,d&&"get"in y&&!("originalValue"in y.get)?o=y.get:o=o[p]}else d=rl(o,p),o=o[p];d&&!c&&(Ti[a]=o)}}return o}});var Zm=h((Ice,h1)=>{"use strict";var f1=il(),m1=Ym(),L3=m1([f1("%String.prototype.indexOf%")]);h1.exports=function(e,t){var n=f1(e,!!t);return typeof n=="function"&&L3(e,".prototype.")>-1?m1([n]):n}});var eh=h((_ce,b1)=>{"use strict";var N3=il(),Qa=Zm(),q3=Va(),F3=_i(),y1=N3("%Map%",!0),J3=Qa("Map.prototype.get",!0),U3=Qa("Map.prototype.set",!0),G3=Qa("Map.prototype.has",!0),B3=Qa("Map.prototype.delete",!0),$3=Qa("Map.prototype.size",!0);b1.exports=!!y1&&function(){var e,t={assert:function(n){if(!t.has(n))throw new F3("Side channel does not contain "+q3(n))},delete:function(n){if(e){var i=B3(e,n);return $3(e)===0&&(e=void 0),i}return!1},get:function(n){if(e)return J3(e,n)},has:function(n){return e?G3(e,n):!1},set:function(n,i){e||(e=new y1),U3(e,n,i)}};return t}});var v1=h((kce,g1)=>{"use strict";var V3=il(),al=Zm(),H3=Va(),sl=eh(),z3=_i(),ks=V3("%WeakMap%",!0),Y3=al("WeakMap.prototype.get",!0),W3=al("WeakMap.prototype.set",!0),Q3=al("WeakMap.prototype.has",!0),X3=al("WeakMap.prototype.delete",!0);g1.exports=ks?function(){var e,t,n={assert:function(i){if(!n.has(i))throw new z3("Side channel does not contain "+H3(i))},delete:function(i){if(ks&&i&&(typeof i=="object"||typeof i=="function")){if(e)return X3(e,i)}else if(sl&&t)return t.delete(i);return!1},get:function(i){return ks&&i&&(typeof i=="object"||typeof i=="function")&&e?Y3(e,i):t&&t.get(i)},has:function(i){return ks&&i&&(typeof i=="object"||typeof i=="function")&&e?Q3(e,i):!!t&&t.has(i)},set:function(i,s){ks&&i&&(typeof i=="object"||typeof i=="function")?(e||(e=new ks),W3(e,i,s)):sl&&(t||(t=sl()),t.set(i,s))}};return n}:sl});var th=h((Tce,x1)=>{"use strict";var Z3=_i(),e6=Va(),t6=YS(),r6=eh(),n6=v1(),i6=n6||r6||t6;x1.exports=function(){var e,t={assert:function(n){if(!t.has(n))throw new Z3("Side channel does not contain "+e6(n))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,i){e||(e=i6()),e.set(n,i)}};return t}});var ol=h((Ace,E1)=>{"use strict";var s6=String.prototype.replace,a6=/%20/g,rh={RFC1738:"RFC1738",RFC3986:"RFC3986"};E1.exports={default:rh.RFC3986,formatters:{RFC1738:function(r){return s6.call(r,a6,"+")},RFC3986:function(r){return String(r)}},RFC1738:rh.RFC1738,RFC3986:rh.RFC3986}});var ah=h((Kce,S1)=>{"use strict";var o6=ol(),c6=th(),nh=Object.prototype.hasOwnProperty,Ai=Array.isArray,cl=c6(),Ts=function(e,t){return cl.set(e,t),e},Ki=function(e){return cl.has(e)},Xa=function(e){return cl.get(e)},sh=function(e,t){cl.set(e,t)},Nr=(function(){for(var r=[],e=0;e<256;++e)r[r.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return r})(),l6=function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(Ai(n)){for(var i=[],s=0;s<n.length;++s)typeof n[s]<"u"&&(i[i.length]=n[s]);t.obj[t.prop]=i}}},Za=function(e,t){for(var n=t&&t.plainObjects?{__proto__:null}:{},i=0;i<e.length;++i)typeof e[i]<"u"&&(n[i]=e[i]);return n},u6=function r(e,t,n){if(!t)return e;if(typeof t!="object"&&typeof t!="function"){if(Ai(e)){var i=e.length;if(n&&typeof n.arrayLimit=="number"&&i>n.arrayLimit)return Ts(Za(e.concat(t),n),i);e[i]=t}else if(e&&typeof e=="object")if(Ki(e)){var s=Xa(e)+1;e[s]=t,sh(e,s)}else{if(n&&n.strictMerge)return[e,t];(n&&(n.plainObjects||n.allowPrototypes)||!nh.call(Object.prototype,t))&&(e[t]=!0)}else return[e,t];return e}if(!e||typeof e!="object"){if(Ki(t)){for(var a=Object.keys(t),o=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},c=0;c<a.length;c++){var l=parseInt(a[c],10);o[l+1]=t[a[c]]}return Ts(o,Xa(t)+1)}var u=[e].concat(t);return n&&typeof n.arrayLimit=="number"&&u.length>n.arrayLimit?Ts(Za(u,n),u.length-1):u}var d=e;return Ai(e)&&!Ai(t)&&(d=Za(e,n)),Ai(e)&&Ai(t)?(t.forEach(function(p,f){if(nh.call(e,f)){var m=e[f];m&&typeof m=="object"&&p&&typeof p=="object"?e[f]=r(m,p,n):e[e.length]=p}else e[f]=p}),e):Object.keys(t).reduce(function(p,f){var m=t[f];if(nh.call(p,f)?p[f]=r(p[f],m,n):p[f]=m,Ki(t)&&!Ki(p)&&Ts(p,Xa(t)),Ki(p)){var y=parseInt(f,10);String(y)===f&&y>=0&&y>Xa(p)&&sh(p,y)}return p},d)},d6=function(e,t){return Object.keys(t).reduce(function(n,i){return n[i]=t[i],n},e)},p6=function(r,e,t){var n=r.replace(/\+/g," ");if(t==="iso-8859-1")return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch{return n}},ih=1024,f6=function(e,t,n,i,s){if(e.length===0)return e;var a=e;if(typeof e=="symbol"?a=Symbol.prototype.toString.call(e):typeof e!="string"&&(a=String(e)),n==="iso-8859-1")return escape(a).replace(/%u[0-9a-f]{4}/gi,function(f){return"%26%23"+parseInt(f.slice(2),16)+"%3B"});for(var o="",c=0;c<a.length;c+=ih){for(var l=a.length>=ih?a.slice(c,c+ih):a,u=[],d=0;d<l.length;++d){var p=l.charCodeAt(d);if(p===45||p===46||p===95||p===126||p>=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||s===o6.RFC1738&&(p===40||p===41)){u[u.length]=l.charAt(d);continue}if(p<128){u[u.length]=Nr[p];continue}if(p<2048){u[u.length]=Nr[192|p>>6]+Nr[128|p&63];continue}if(p<55296||p>=57344){u[u.length]=Nr[224|p>>12]+Nr[128|p>>6&63]+Nr[128|p&63];continue}d+=1,p=65536+((p&1023)<<10|l.charCodeAt(d)&1023),u[u.length]=Nr[240|p>>18]+Nr[128|p>>12&63]+Nr[128|p>>6&63]+Nr[128|p&63]}o+=u.join("")}return o},m6=function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],i=0;i<t.length;++i)for(var s=t[i],a=s.obj[s.prop],o=Object.keys(a),c=0;c<o.length;++c){var l=o[c],u=a[l];typeof u=="object"&&u!==null&&n.indexOf(u)===-1&&(t[t.length]={obj:a,prop:l},n[n.length]=u)}return l6(t),e},h6=function(e){return Object.prototype.toString.call(e)==="[object RegExp]"},y6=function(e){return!e||typeof e!="object"?!1:!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},b6=function(e,t,n,i){if(Ki(e)){var s=Xa(e)+1;return e[s]=t,sh(e,s),e}var a=[].concat(e,t);return a.length>n?Ts(Za(a,{plainObjects:i}),a.length-1):a},g6=function(e,t){if(Ai(e)){for(var n=[],i=0;i<e.length;i+=1)n[n.length]=t(e[i]);return n}return t(e)};S1.exports={arrayToObject:Za,assign:d6,combine:b6,compact:m6,decode:p6,encode:f6,isBuffer:y6,isOverflow:Ki,isRegExp:h6,markOverflow:Ts,maybeMap:g6,merge:u6}});var A1=h((jce,T1)=>{"use strict";var I1=th(),ll=ah(),eo=ol(),v6=Object.prototype.hasOwnProperty,_1={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},qr=Array.isArray,x6=Array.prototype.push,k1=function(r,e){x6.apply(r,qr(e)?e:[e])},E6=Date.prototype.toISOString,w1=eo.default,Xe={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,commaRoundTrip:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:ll.encode,encodeValuesOnly:!1,filter:void 0,format:w1,formatter:eo.formatters[w1],indices:!1,serializeDate:function(e){return E6.call(e)},skipNulls:!1,strictNullHandling:!1},S6=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},oh={},w6=function r(e,t,n,i,s,a,o,c,l,u,d,p,f,m,y,b,g,x){for(var I=e,k=x,M=0,U=!1;(k=k.get(oh))!==void 0&&!U;){var re=k.get(e);if(M+=1,typeof re<"u"){if(re===M)throw new RangeError("Cyclic object value");U=!0}typeof k.get(oh)>"u"&&(M=0)}if(typeof u=="function"?I=u(t,I):I instanceof Date?I=f(I):n==="comma"&&qr(I)&&(I=ll.maybeMap(I,function(N){return N instanceof Date?f(N):N})),I===null){if(a)return l&&!b?l(t,Xe.encoder,g,"key",m):t;I=""}if(S6(I)||ll.isBuffer(I)){if(l){var Ke=b?t:l(t,Xe.encoder,g,"key",m);return[y(Ke)+"="+y(l(I,Xe.encoder,g,"value",m))]}return[y(t)+"="+y(String(I))]}var ie=[];if(typeof I>"u")return ie;var ee;if(n==="comma"&&qr(I))b&&l&&(I=ll.maybeMap(I,l)),ee=[{value:I.length>0?I.join(",")||null:void 0}];else if(qr(u))ee=u;else{var Je=Object.keys(I);ee=d?Je.sort(d):Je}var Sr=c?String(t).replace(/\./g,"%2E"):String(t),S=i&&qr(I)&&I.length===1?Sr+"[]":Sr;if(s&&qr(I)&&I.length===0)return S+"[]";for(var j=0;j<ee.length;++j){var A=ee[j],T=typeof A=="object"&&A&&typeof A.value<"u"?A.value:I[A];if(!(o&&T===null)){var K=p&&c?String(A).replace(/\./g,"%2E"):String(A),B=qr(I)?typeof n=="function"?n(S,K):S:S+(p?"."+K:"["+K+"]");x.set(e,M);var G=I1();G.set(oh,x),k1(ie,r(T,B,n,i,s,a,o,c,n==="comma"&&b&&qr(I)?null:l,u,d,p,f,m,y,b,g,G))}}return ie},I6=function(e){if(!e)return Xe;if(typeof e.allowEmptyArrays<"u"&&typeof e.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof e.encodeDotInKeys<"u"&&typeof e.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(e.encoder!==null&&typeof e.encoder<"u"&&typeof e.encoder!="function")throw new TypeError("Encoder has to be a function.");var t=e.charset||Xe.charset;if(typeof e.charset<"u"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=eo.default;if(typeof e.format<"u"){if(!v6.call(eo.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var i=eo.formatters[n],s=Xe.filter;(typeof e.filter=="function"||qr(e.filter))&&(s=e.filter);var a;if(e.arrayFormat in _1?a=e.arrayFormat:"indices"in e?a=e.indices?"indices":"repeat":a=Xe.arrayFormat,"commaRoundTrip"in e&&typeof e.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var o=typeof e.allowDots>"u"?e.encodeDotInKeys===!0?!0:Xe.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:Xe.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:Xe.allowEmptyArrays,arrayFormat:a,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Xe.charsetSentinel,commaRoundTrip:!!e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?Xe.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:Xe.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:Xe.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:Xe.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:Xe.encodeValuesOnly,filter:s,format:n,formatter:i,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:Xe.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:Xe.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Xe.strictNullHandling}};T1.exports=function(r,e){var t=r,n=I6(e),i,s;typeof n.filter=="function"?(s=n.filter,t=s("",t)):qr(n.filter)&&(s=n.filter,i=s);var a=[];if(typeof t!="object"||t===null)return"";var o=_1[n.arrayFormat],c=o==="comma"&&n.commaRoundTrip;i||(i=Object.keys(t)),n.sort&&i.sort(n.sort);for(var l=I1(),u=0;u<i.length;++u){var d=i[u],p=t[d];n.skipNulls&&p===null||k1(a,w6(p,d,o,c,n.allowEmptyArrays,n.strictNullHandling,n.skipNulls,n.encodeDotInKeys,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,l))}var f=a.join(n.delimiter),m=n.addQueryPrefix===!0?"?":"";return n.charsetSentinel&&(n.charset==="iso-8859-1"?m+="utf8=%26%2310003%3B&":m+="utf8=%E2%9C%93&"),f.length>0?m+f:""}});var O1=h((Oce,j1)=>{"use strict";var Fr=ah(),ul=Object.prototype.hasOwnProperty,ch=Array.isArray,je={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:Fr.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},_6=function(r){return r.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},K1=function(r,e,t){if(r&&typeof r=="string"&&e.comma&&r.indexOf(",")>-1)return r.split(",");if(e.throwOnLimitExceeded&&t>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(e.arrayLimit===1?"":"s")+" allowed in an array.");return r},k6="utf8=%26%2310003%3B",T6="utf8=%E2%9C%93",A6=function(e,t){var n={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=i.split(t.delimiter,t.throwOnLimitExceeded&&typeof s<"u"?s+1:s);if(t.throwOnLimitExceeded&&typeof s<"u"&&a.length>s)throw new RangeError("Parameter limit exceeded. Only "+s+" parameter"+(s===1?"":"s")+" allowed.");var o=-1,c,l=t.charset;if(t.charsetSentinel)for(c=0;c<a.length;++c)a[c].indexOf("utf8=")===0&&(a[c]===T6?l="utf-8":a[c]===k6&&(l="iso-8859-1"),o=c,c=a.length);for(c=0;c<a.length;++c)if(c!==o){var u=a[c],d=u.indexOf("]="),p=d===-1?u.indexOf("="):d+1,f,m;if(p===-1?(f=t.decoder(u,je.decoder,l,"key"),m=t.strictNullHandling?null:""):(f=t.decoder(u.slice(0,p),je.decoder,l,"key"),f!==null&&(m=Fr.maybeMap(K1(u.slice(p+1),t,ch(n[f])?n[f].length:0),function(b){return t.decoder(b,je.decoder,l,"value")}))),m&&t.interpretNumericEntities&&l==="iso-8859-1"&&(m=_6(String(m))),u.indexOf("[]=")>-1&&(m=ch(m)?[m]:m),t.comma&&ch(m)&&m.length>t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(t.arrayLimit===1?"":"s")+" allowed in an array.");m=Fr.combine([],m,t.arrayLimit,t.plainObjects)}if(f!==null){var y=ul.call(n,f);y&&(t.duplicates==="combine"||u.indexOf("[]=")>-1)?n[f]=Fr.combine(n[f],m,t.arrayLimit,t.plainObjects):(!y||t.duplicates==="last")&&(n[f]=m)}}return n},K6=function(r,e,t,n){var i=0;if(r.length>0&&r[r.length-1]==="[]"){var s=r.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=n?e:K1(e,t,i),o=r.length-1;o>=0;--o){var c,l=r[o];if(l==="[]"&&t.parseArrays)Fr.isOverflow(a)?c=a:c=t.allowEmptyArrays&&(a===""||t.strictNullHandling&&a===null)?[]:Fr.combine([],a,t.arrayLimit,t.plainObjects);else{c=t.plainObjects?{__proto__:null}:{};var u=l.charAt(0)==="["&&l.charAt(l.length-1)==="]"?l.slice(1,-1):l,d=t.decodeDotInKeys?u.replace(/%2E/g,"."):u,p=parseInt(d,10),f=!isNaN(p)&&l!==d&&String(p)===d&&p>=0&&t.parseArrays;if(!t.parseArrays&&d==="")c={0:a};else if(f&&p<t.arrayLimit)c=[],c[p]=a;else{if(f&&t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(t.arrayLimit===1?"":"s")+" allowed in an array.");f?(c[p]=a,Fr.markOverflow(c,p)):d!=="__proto__"&&(c[d]=a)}}a=c}return a},j6=function(e,t){var n=t.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e;if(t.depth<=0)return!t.plainObjects&&ul.call(Object.prototype,n)&&!t.allowPrototypes?void 0:[n];var i=/(\[[^[\]]*])/,s=/(\[[^[\]]*])/g,a=i.exec(n),o=a?n.slice(0,a.index):n,c=[];if(o){if(!t.plainObjects&&ul.call(Object.prototype,o)&&!t.allowPrototypes)return;c[c.length]=o}for(var l=0;(a=s.exec(n))!==null&&l<t.depth;){l+=1;var u=a[1].slice(1,-1);if(!t.plainObjects&&ul.call(Object.prototype,u)&&!t.allowPrototypes)return;c[c.length]=a[1]}if(a){if(t.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+t.depth+" and strictDepth is true");c[c.length]="["+n.slice(a.index)+"]"}return c},O6=function(e,t,n,i){if(e){var s=j6(e,n);if(s)return K6(s,t,n,i)}},R6=function(e){if(!e)return je;if(typeof e.allowEmptyArrays<"u"&&typeof e.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof e.decodeDotInKeys<"u"&&typeof e.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(e.decoder!==null&&typeof e.decoder<"u"&&typeof e.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof e.charset<"u"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof e.throwOnLimitExceeded<"u"&&typeof e.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var t=typeof e.charset>"u"?je.charset:e.charset,n=typeof e.duplicates>"u"?je.duplicates:e.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var i=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:je.allowDots:!!e.allowDots;return{allowDots:i,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:je.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:je.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:je.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:je.arrayLimit,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:je.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:je.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:je.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:je.decoder,delimiter:typeof e.delimiter=="string"||Fr.isRegExp(e.delimiter)?e.delimiter:je.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:je.depth,duplicates:n,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:je.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:je.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:je.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:je.strictDepth,strictMerge:typeof e.strictMerge=="boolean"?!!e.strictMerge:je.strictMerge,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:je.strictNullHandling,throwOnLimitExceeded:typeof e.throwOnLimitExceeded=="boolean"?e.throwOnLimitExceeded:!1}};j1.exports=function(r,e){var t=R6(e);if(r===""||r===null||typeof r>"u")return t.plainObjects?{__proto__:null}:{};for(var n=typeof r=="string"?A6(r,t):r,i=t.plainObjects?{__proto__:null}:{},s=Object.keys(n),a=0;a<s.length;++a){var o=s[a],c=O6(o,n[o],t,typeof r=="string");i=Fr.merge(i,c,t)}return t.allowSparse===!0?i:Fr.compact(i)}});var lh=h((Rce,R1)=>{"use strict";var C6=A1(),D6=O1(),P6=ol();R1.exports={formats:P6,parse:D6,stringify:C6}});var P1=h((Cce,D1)=>{"use strict";var C1=ms(),uh=Nt()("body-parser:urlencoded"),M6=Ja(),L6=lh(),{normalizeOptions:N6}=xs();D1.exports=q6;function q6(r){let e=N6(r,"application/x-www-form-urlencoded");if(e.defaultCharset!=="utf-8"&&e.defaultCharset!=="iso-8859-1")throw new TypeError("option defaultCharset must be either utf-8 or iso-8859-1");var t=F6(r);function n(s,a){return s.length?t(s,a):{}}let i={...e,isValidCharset:s=>s==="utf-8"||s==="iso-8859-1"};return function(a,o,c){M6(a,o,c,n,uh,i)}}function F6(r){var e=!!r?.extended,t=r?.parameterLimit!==void 0?r?.parameterLimit:1e3,n=r?.charsetSentinel,i=r?.interpretNumericEntities,s=e?r?.depth!==void 0?r?.depth:32:0;if(isNaN(t)||t<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(s)||s<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(t)&&(t=t|0),function(o,c){var l=J6(o,t);if(l===void 0)throw uh("too many parameters"),C1(413,"too many parameters",{type:"parameters.too.many"});var u=e?Math.max(100,l):l;uh("parse "+(e?"extended ":"")+"urlencoding");try{return L6.parse(o,{allowPrototypes:!0,arrayLimit:u,depth:s,charsetSentinel:n,interpretNumericEntities:i,charset:c,parameterLimit:t,strictDepth:!0})}catch(d){throw d instanceof RangeError?C1(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):d}}}function J6(r,e){let t=0,n=-1;do{if(t++,t>e)return;n=r.indexOf("&",n+1)}while(n!==-1);return t}});var L1=h((As,M1)=>{"use strict";As=M1.exports=U6;Object.defineProperty(As,"json",{configurable:!0,enumerable:!0,get:()=>xS()});Object.defineProperty(As,"raw",{configurable:!0,enumerable:!0,get:()=>SS()});Object.defineProperty(As,"text",{configurable:!0,enumerable:!0,get:()=>IS()});Object.defineProperty(As,"urlencoded",{configurable:!0,enumerable:!0,get:()=>P1()});function U6(){throw new Error("The bodyParser() generic has been split into individual middleware to use instead.")}});var q1=h((Dce,N1)=>{"use strict";function G6(r,e,t=!0){if(!r)throw new TypeError("The `destination` argument is required.");if(!e)throw new TypeError("The `source` argument is required.");for(let n of Object.getOwnPropertyNames(e)){if(!t&&Object.hasOwn(r,n))continue;let i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,i)}return r}N1.exports=G6});var to=h((Pce,F1)=>{"use strict";F1.exports=H6;var B6=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,$6=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,V6="$1\uFFFD$2";function H6(r){return String(r).replace($6,V6).replace(B6,encodeURI)}});var ro=h((Mce,J1)=>{"use strict";var z6=/["'&<>]/;J1.exports=Y6;function Y6(r){var e=""+r,t=z6.exec(e);if(!t)return e;var n,i="",s=0,a=0;for(s=t.index;s<e.length;s++){switch(e.charCodeAt(s)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}a!==s&&(i+=e.substring(a,s)),a=s+1,i+=n}return a!==s?i+e.substring(a,s):i}});var no=h((Lce,dh)=>{"use strict";var G1=require("url"),U1=G1.parse,dl=G1.Url;dh.exports=B1;dh.exports.original=W6;function B1(r){var e=r.url;if(e!==void 0){var t=r._parsedUrl;return V1(e,t)?t:(t=$1(e),t._raw=e,r._parsedUrl=t)}}function W6(r){var e=r.originalUrl;if(typeof e!="string")return B1(r);var t=r._parsedOriginalUrl;return V1(e,t)?t:(t=$1(e),t._raw=e,r._parsedOriginalUrl=t)}function $1(r){if(typeof r!="string"||r.charCodeAt(0)!==47)return U1(r);for(var e=r,t=null,n=null,i=1;i<r.length;i++)switch(r.charCodeAt(i)){case 63:n===null&&(e=r.substring(0,i),t=r.substring(i+1),n=r.substring(i));break;case 9:case 10:case 12:case 13:case 32:case 35:case 160:case 65279:return U1(r)}var s=dl!==void 0?new dl:{};return s.path=r,s.href=r,s.pathname=e,n!==null&&(s.query=t,s.search=n),s}function V1(r,e){return typeof e=="object"&&e!==null&&(dl===void 0||e instanceof dl)&&e._raw===r}});var W1=h((Nce,Y1)=>{"use strict";var ph=Nt()("finalhandler"),Q6=to(),X6=ro(),H1=Fa(),Z6=no(),z1=La(),eU=H1.isFinished;function tU(r){var e=X6(r).replaceAll(`
`,"<br>").replaceAll(" "," &nbsp;");return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}Y1.exports=rU;function rU(r,e,t){var n=t||{},i=n.env||process.env.NODE_ENV||"development",s=n.onerror;return function(a){var o,c,l;if(!a&&e.headersSent){ph("cannot 404 after headers sent");return}if(a?(l=sU(a),l===void 0?l=oU(e):o=nU(a),c=iU(a,l,i)):(l=404,c="Cannot "+r.method+" "+Q6(aU(r))),ph("default %s",l),a&&s&&setImmediate(s,a,r,e),e.headersSent){ph("cannot %d after headers sent",l),r.socket&&r.socket.destroy();return}cU(r,e,l,o,c)}}function nU(r){if(!(!r.headers||typeof r.headers!="object"))return{...r.headers}}function iU(r,e,t){var n;return t!=="production"&&(n=r.stack,!n&&typeof r.toString=="function"&&(n=r.toString())),n||z1.message[e]}function sU(r){if(typeof r.status=="number"&&r.status>=400&&r.status<600)return r.status;if(typeof r.statusCode=="number"&&r.statusCode>=400&&r.statusCode<600)return r.statusCode}function aU(r){try{return Z6.original(r).pathname}catch{return"resource"}}function oU(r){var e=r.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function cU(r,e,t,n,i){function s(){var a=tU(i);e.statusCode=t,r.httpVersionMajor<2&&(e.statusMessage=z1.message[t]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range");for(let[o,c]of Object.entries(n??{}))e.setHeader(o,c);if(e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(a,"utf8")),r.method==="HEAD"){e.end();return}e.end(a,"utf8")}if(eU(r)){s();return}r.unpipe(),H1(r,s),r.resume()}});var tI=h((qce,eI)=>{"use strict";var pl=Nt()("express:view"),io=require("node:path"),lU=require("node:fs"),uU=io.dirname,Z1=io.basename,dU=io.extname,Q1=io.join,pU=io.resolve;eI.exports=fl;function fl(r,e){var t=e||{};if(this.defaultEngine=t.defaultEngine,this.ext=dU(r),this.name=r,this.root=t.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=r;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!t.engines[this.ext]){var i=this.ext.slice(1);pl('require "%s"',i);var s=require(i).__express;if(typeof s!="function")throw new Error('Module "'+i+'" does not provide a view engine.');t.engines[this.ext]=s}this.engine=t.engines[this.ext],this.path=this.lookup(n)}fl.prototype.lookup=function(e){var t,n=[].concat(this.root);pl('lookup "%s"',e);for(var i=0;i<n.length&&!t;i++){var s=n[i],a=pU(s,e),o=uU(a),c=Z1(a);t=this.resolve(o,c)}return t};fl.prototype.render=function(e,t){var n=!0;pl('render "%s"',this.path),this.engine(this.path,e,function(){if(!n)return t.apply(this,arguments);for(var s=new Array(arguments.length),a=this,o=0;o<arguments.length;o++)s[o]=arguments[o];return process.nextTick(function(){return t.apply(a,s)})}),n=!1};fl.prototype.resolve=function(e,t){var n=this.ext,i=Q1(e,t),s=X1(i);if(s&&s.isFile()||(i=Q1(e,Z1(t,n),"index"+n),s=X1(i),s&&s.isFile()))return i};function X1(r){pl('stat "%s"',r);try{return lU.statSync(r)}catch{return}}});var fh=h((Fce,iI)=>{"use strict";iI.exports=hU;var fU=require("crypto"),rI=require("fs").Stats,nI=Object.prototype.toString;function mU(r){if(r.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=fU.createHash("sha1").update(r,"utf8").digest("base64").substring(0,27),t=typeof r=="string"?Buffer.byteLength(r,"utf8"):r.length;return'"'+t.toString(16)+"-"+e+'"'}function hU(r,e){if(r==null)throw new TypeError("argument entity is required");var t=yU(r),n=e&&typeof e.weak=="boolean"?e.weak:t;if(!t&&typeof r!="string"&&!Buffer.isBuffer(r))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var i=t?bU(r):mU(r);return n?"W/"+i:i}function yU(r){return typeof rI=="function"&&r instanceof rI?!0:r&&typeof r=="object"&&"ctime"in r&&nI.call(r.ctime)==="[object Date]"&&"mtime"in r&&nI.call(r.mtime)==="[object Date]"&&"ino"in r&&typeof r.ino=="number"&&"size"in r&&typeof r.size=="number"}function bU(r){var e=r.mtime.getTime().toString(16),t=r.size.toString(16);return'"'+t+"-"+e+'"'}});var aI=h((Jce,sI)=>{"use strict";sI.exports=gU;function gU(r){if(!r)throw new TypeError("argument req is required");var e=xU(r.headers["x-forwarded-for"]||""),t=vU(r),n=[t].concat(e);return n}function vU(r){return r.socket?r.socket.remoteAddress:r.connection.remoteAddress}function xU(r){for(var e=r.length,t=[],n=r.length,i=r.length-1;i>=0;i--)switch(r.charCodeAt(i)){case 32:n===e&&(n=e=i);break;case 44:n!==e&&t.push(r.substring(n,e)),n=e=i;break;default:n=i;break}return n!==e&&t.push(r.substring(n,e)),t}});var cI=h((oI,so)=>{(function(){var r,e,t,n,i,s,a,o,c;e={},o=this,typeof so<"u"&&so!==null&&so.exports?so.exports=e:o.ipaddr=e,a=function(l,u,d,p){var f,m;if(l.length!==u.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(f=0;p>0;){if(m=d-p,m<0&&(m=0),l[f]>>m!==u[f]>>m)return!1;p-=d,f+=1}return!0},e.subnetMatch=function(l,u,d){var p,f,m,y,b;d==null&&(d="unicast");for(m in u)for(y=u[m],y[0]&&!(y[0]instanceof Array)&&(y=[y]),p=0,f=y.length;p<f;p++)if(b=y[p],l.kind()===b[0].kind()&&l.match.apply(l,b))return m;return d},e.IPv4=(function(){function l(u){var d,p,f;if(u.length!==4)throw new Error("ipaddr: ipv4 octet count should be 4");for(d=0,p=u.length;d<p;d++)if(f=u[d],!(0<=f&&f<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=u}return l.prototype.kind=function(){return"ipv4"},l.prototype.toString=function(){return this.octets.join(".")},l.prototype.toNormalizedString=function(){return this.toString()},l.prototype.toByteArray=function(){return this.octets.slice(0)},l.prototype.match=function(u,d){var p;if(d===void 0&&(p=u,u=p[0],d=p[1]),u.kind()!=="ipv4")throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,u.octets,8,d)},l.prototype.SpecialRanges={unspecified:[[new l([0,0,0,0]),8]],broadcast:[[new l([255,255,255,255]),32]],multicast:[[new l([224,0,0,0]),4]],linkLocal:[[new l([169,254,0,0]),16]],loopback:[[new l([127,0,0,0]),8]],carrierGradeNat:[[new l([100,64,0,0]),10]],private:[[new l([10,0,0,0]),8],[new l([172,16,0,0]),12],[new l([192,168,0,0]),16]],reserved:[[new l([192,0,0,0]),24],[new l([192,0,2,0]),24],[new l([192,88,99,0]),24],[new l([198,51,100,0]),24],[new l([203,0,113,0]),24],[new l([240,0,0,0]),4]]},l.prototype.range=function(){return e.subnetMatch(this,this.SpecialRanges)},l.prototype.toIPv4MappedAddress=function(){return e.IPv6.parse("::ffff:"+this.toString())},l.prototype.prefixLengthFromSubnetMask=function(){var u,d,p,f,m,y,b;for(b={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},u=0,m=!1,d=p=3;p>=0;d=p+=-1)if(f=this.octets[d],f in b){if(y=b[f],m&&y!==0)return null;y!==8&&(m=!0),u+=y}else return null;return 32-u},l})(),t="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+t+"\\."+t+"\\."+t+"\\."+t+"$","i"),longValue:new RegExp("^"+t+"$","i")},e.IPv4.parser=function(l){var u,d,p,f,m;if(d=function(y){return y[0]==="0"&&y[1]!=="x"?parseInt(y,8):parseInt(y)},u=l.match(n.fourOctet))return(function(){var y,b,g,x;for(g=u.slice(1,6),x=[],y=0,b=g.length;y<b;y++)p=g[y],x.push(d(p));return x})();if(u=l.match(n.longValue)){if(m=d(u[1]),m>4294967295||m<0)throw new Error("ipaddr: address outside defined range");return(function(){var y,b;for(b=[],f=y=0;y<=24;f=y+=8)b.push(m>>f&255);return b})().reverse()}else return null},e.IPv6=(function(){function l(u,d){var p,f,m,y,b,g;if(u.length===16)for(this.parts=[],p=f=0;f<=14;p=f+=2)this.parts.push(u[p]<<8|u[p+1]);else if(u.length===8)this.parts=u;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(g=this.parts,m=0,y=g.length;m<y;m++)if(b=g[m],!(0<=b&&b<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");d&&(this.zoneId=d)}return l.prototype.kind=function(){return"ipv6"},l.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},l.prototype.toRFC5952String=function(){var u,d,p,f,m;for(f=/((^|:)(0(:|$)){2,})/g,m=this.toNormalizedString(),u=0,d=-1;p=f.exec(m);)p[0].length>d&&(u=p.index,d=p[0].length);return d<0?m:m.substring(0,u)+"::"+m.substring(u+d)},l.prototype.toByteArray=function(){var u,d,p,f,m;for(u=[],m=this.parts,d=0,p=m.length;d<p;d++)f=m[d],u.push(f>>8),u.push(f&255);return u},l.prototype.toNormalizedString=function(){var u,d,p;return u=(function(){var f,m,y,b;for(y=this.parts,b=[],f=0,m=y.length;f<m;f++)d=y[f],b.push(d.toString(16));return b}).call(this).join(":"),p="",this.zoneId&&(p="%"+this.zoneId),u+p},l.prototype.toFixedLengthString=function(){var u,d,p;return u=(function(){var f,m,y,b;for(y=this.parts,b=[],f=0,m=y.length;f<m;f++)d=y[f],b.push(d.toString(16).padStart(4,"0"));return b}).call(this).join(":"),p="",this.zoneId&&(p="%"+this.zoneId),u+p},l.prototype.match=function(u,d){var p;if(d===void 0&&(p=u,u=p[0],d=p[1]),u.kind()!=="ipv6")throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,u.parts,16,d)},l.prototype.SpecialRanges={unspecified:[new l([0,0,0,0,0,0,0,0]),128],linkLocal:[new l([65152,0,0,0,0,0,0,0]),10],multicast:[new l([65280,0,0,0,0,0,0,0]),8],loopback:[new l([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new l([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new l([0,0,0,0,0,65535,0,0]),96],rfc6145:[new l([0,0,0,0,65535,0,0,0]),96],rfc6052:[new l([100,65435,0,0,0,0,0,0]),96],"6to4":[new l([8194,0,0,0,0,0,0,0]),16],teredo:[new l([8193,0,0,0,0,0,0,0]),32],reserved:[[new l([8193,3512,0,0,0,0,0,0]),32]]},l.prototype.range=function(){return e.subnetMatch(this,this.SpecialRanges)},l.prototype.isIPv4MappedAddress=function(){return this.range()==="ipv4Mapped"},l.prototype.toIPv4Address=function(){var u,d,p;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return p=this.parts.slice(-2),u=p[0],d=p[1],new e.IPv4([u>>8,u&255,d>>8,d&255])},l.prototype.prefixLengthFromSubnetMask=function(){var u,d,p,f,m,y,b;for(b={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},u=0,m=!1,d=p=7;p>=0;d=p+=-1)if(f=this.parts[d],f in b){if(y=b[f],m&&y!==0)return null;y!==16&&(m=!0),u+=y}else return null;return 128-u},l})(),i="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",s={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(t+"\\."+t+"\\."+t+"\\."+t)+("("+c+")?$"),"i")},r=function(l,u){var d,p,f,m,y,b;if(l.indexOf("::")!==l.lastIndexOf("::"))return null;for(b=(l.match(s.zoneIndex)||[])[0],b&&(b=b.substring(1),l=l.replace(/%.+$/,"")),d=0,p=-1;(p=l.indexOf(":",p+1))>=0;)d++;if(l.substr(0,2)==="::"&&d--,l.substr(-2,2)==="::"&&d--,d>u)return null;for(y=u-d,m=":";y--;)m+="0:";return l=l.replace("::",m),l[0]===":"&&(l=l.slice(1)),l[l.length-1]===":"&&(l=l.slice(0,-1)),u=(function(){var g,x,I,k;for(I=l.split(":"),k=[],g=0,x=I.length;g<x;g++)f=I[g],k.push(parseInt(f,16));return k})(),{parts:u,zoneId:b}},e.IPv6.parser=function(l){var u,d,p,f,m,y,b;if(s.native.test(l))return r(l,8);if((f=l.match(s.transitional))&&(b=f[6]||"",u=r(f[1].slice(0,-1)+b,6),u.parts)){for(y=[parseInt(f[2]),parseInt(f[3]),parseInt(f[4]),parseInt(f[5])],d=0,p=y.length;d<p;d++)if(m=y[d],!(0<=m&&m<=255))return null;return u.parts.push(y[0]<<8|y[1]),u.parts.push(y[2]<<8|y[3]),{parts:u.parts,zoneId:u.zoneId}}return null},e.IPv4.isIPv4=e.IPv6.isIPv6=function(l){return this.parser(l)!==null},e.IPv4.isValid=function(l){var u;try{return new this(this.parser(l)),!0}catch(d){return u=d,!1}},e.IPv4.isValidFourPartDecimal=function(l){return!!(e.IPv4.isValid(l)&&l.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},e.IPv6.isValid=function(l){var u,d;if(typeof l=="string"&&l.indexOf(":")===-1)return!1;try{return u=this.parser(l),new this(u.parts,u.zoneId),!0}catch(p){return d=p,!1}},e.IPv4.parse=function(l){var u;if(u=this.parser(l),u===null)throw new Error("ipaddr: string is not formatted like ip address");return new this(u)},e.IPv6.parse=function(l){var u;if(u=this.parser(l),u.parts===null)throw new Error("ipaddr: string is not formatted like ip address");return new this(u.parts,u.zoneId)},e.IPv4.parseCIDR=function(l){var u,d,p;if((d=l.match(/^(.+)\/(\d+)$/))&&(u=parseInt(d[2]),u>=0&&u<=32))return p=[this.parse(d[1]),u],Object.defineProperty(p,"toString",{value:function(){return this.join("/")}}),p;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(l){var u,d,p;if(l=parseInt(l),l<0||l>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(p=[0,0,0,0],d=0,u=Math.floor(l/8);d<u;)p[d]=255,d++;return u<4&&(p[u]=Math.pow(2,l%8)-1<<8-l%8),new this(p)},e.IPv4.broadcastAddressFromCIDR=function(l){var u,d,p,f,m,y;try{for(u=this.parseCIDR(l),f=u[0].toByteArray(),y=this.subnetMaskFromPrefixLength(u[1]).toByteArray(),m=[],p=0;p<4;)m.push(parseInt(f[p],10)|parseInt(y[p],10)^255),p++;return new this(m)}catch(b){throw d=b,new Error("ipaddr: the address does not have IPv4 CIDR format")}},e.IPv4.networkAddressFromCIDR=function(l){var u,d,p,f,m,y;try{for(u=this.parseCIDR(l),f=u[0].toByteArray(),y=this.subnetMaskFromPrefixLength(u[1]).toByteArray(),m=[],p=0;p<4;)m.push(parseInt(f[p],10)&parseInt(y[p],10)),p++;return new this(m)}catch(b){throw d=b,new Error("ipaddr: the address does not have IPv4 CIDR format")}},e.IPv6.parseCIDR=function(l){var u,d,p;if((d=l.match(/^(.+)\/(\d+)$/))&&(u=parseInt(d[2]),u>=0&&u<=128))return p=[this.parse(d[1]),u],Object.defineProperty(p,"toString",{value:function(){return this.join("/")}}),p;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(l){return e.IPv6.isValid(l)||e.IPv4.isValid(l)},e.parse=function(l){if(e.IPv6.isValid(l))return e.IPv6.parse(l);if(e.IPv4.isValid(l))return e.IPv4.parse(l);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(l){var u;try{return e.IPv6.parseCIDR(l)}catch(d){u=d;try{return e.IPv4.parseCIDR(l)}catch(p){throw u=p,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(l){var u;if(u=l.length,u===4)return new e.IPv4(l);if(u===16)return new e.IPv6(l);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(l){var u;return u=this.parse(l),u.kind()==="ipv6"&&u.isIPv4MappedAddress()?u.toIPv4Address():u}}).call(oI)});var mh=h((Uce,yl)=>{"use strict";yl.exports=TU;yl.exports.all=dI;yl.exports.compile=pI;var EU=aI(),uI=cI(),SU=/^[0-9]+$/,ml=uI.isValid,hl=uI.parse,lI={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function dI(r,e){var t=EU(r);if(!e)return t;typeof e!="function"&&(e=pI(e));for(var n=0;n<t.length-1;n++)e(t[n],n)||(t.length=n+1);return t}function pI(r){if(!r)throw new TypeError("argument is required");var e;if(typeof r=="string")e=[r];else if(Array.isArray(r))e=r.slice();else throw new TypeError("unsupported trust argument");for(var t=0;t<e.length;t++)r=e[t],Object.prototype.hasOwnProperty.call(lI,r)&&(r=lI[r],e.splice.apply(e,[t,1].concat(r)),t+=r.length-1);return IU(wU(e))}function wU(r){for(var e=new Array(r.length),t=0;t<r.length;t++)e[t]=_U(r[t]);return e}function IU(r){var e=r.length;return e===0?AU:e===1?jU(r[0]):KU(r)}function _U(r){var e=r.lastIndexOf("/"),t=e!==-1?r.substring(0,e):r;if(!ml(t))throw new TypeError("invalid IP address: "+t);var n=hl(t);e===-1&&n.kind()==="ipv6"&&n.isIPv4MappedAddress()&&(n=n.toIPv4Address());var i=n.kind()==="ipv6"?128:32,s=e!==-1?r.substring(e+1,r.length):null;if(s===null?s=i:SU.test(s)?s=parseInt(s,10):n.kind()==="ipv4"&&ml(s)?s=kU(s):s=null,s<=0||s>i)throw new TypeError("invalid range on address: "+r);return[n,s]}function kU(r){var e=hl(r),t=e.kind();return t==="ipv4"?e.prefixLengthFromSubnetMask():null}function TU(r,e){if(!r)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var t=dI(r,e),n=t[t.length-1];return n}function AU(){return!1}function KU(r){return function(t){if(!ml(t))return!1;for(var n=hl(t),i,s=n.kind(),a=0;a<r.length;a++){var o=r[a],c=o[0],l=c.kind(),u=o[1],d=n;if(s!==l){if(l==="ipv4"&&!n.isIPv4MappedAddress())continue;i||(i=l==="ipv4"?n.toIPv4Address():n.toIPv4MappedAddress()),d=i}if(d.match(c,u))return!0}return!1}}function jU(r){var e=r[0],t=e.kind(),n=t==="ipv4",i=r[1];return function(a){if(!ml(a))return!1;var o=hl(a),c=o.kind();if(c!==t){if(n&&!o.isIPv4MappedAddress())return!1;o=n?o.toIPv4Address():o.toIPv4MappedAddress()}return o.match(e,i)}}});var Mn=h(qt=>{"use strict";var{METHODS:OU}=require("node:http"),fI=Vc(),RU=fh(),CU=gs(),DU=mh(),PU=lh(),MU=require("node:querystring"),{Buffer:mI}=require("node:buffer");qt.methods=OU.map(r=>r.toLowerCase());qt.etag=hI({weak:!1});qt.wetag=hI({weak:!0});qt.normalizeType=function(r){return~r.indexOf("/")?LU(r):{value:CU.lookup(r)||"application/octet-stream",params:{}}};qt.normalizeTypes=function(r){return r.map(qt.normalizeType)};function LU(r){for(var e=r.length,t=r.indexOf(";"),n=t===-1?e:t,i={value:r.slice(0,n).trim(),quality:1,params:{}};n<e;){var s=r.indexOf("=",n);if(s===-1)break;var t=r.indexOf(";",n),a=t===-1?e:t;if(s>a){n=r.lastIndexOf(";",s-1)+1;continue}var o=r.slice(n,s).trim(),c=r.slice(s+1,a).trim();o==="q"?i.quality=parseFloat(c):i.params[o]=c,n=a+1}return i}qt.compileETag=function(r){var e;if(typeof r=="function")return r;switch(r){case!0:case"weak":e=qt.wetag;break;case!1:break;case"strong":e=qt.etag;break;default:throw new TypeError("unknown value for etag function: "+r)}return e};qt.compileQueryParser=function(e){var t;if(typeof e=="function")return e;switch(e){case!0:case"simple":t=MU.parse;break;case!1:break;case"extended":t=NU;break;default:throw new TypeError("unknown value for query parser function: "+e)}return t};qt.compileTrust=function(r){return typeof r=="function"?r:r===!0?function(){return!0}:typeof r=="number"?function(e,t){return t<r}:(typeof r=="string"&&(r=r.split(",").map(function(e){return e.trim()})),DU.compile(r||[]))};qt.setCharset=function(e,t){if(!e||!t)return e;var n=fI.parse(e);return n.parameters.charset=t,fI.format(n)};function hI(r){return function(t,n){var i=mI.isBuffer(t)?t:mI.from(t,n);return RU(i,r)}}function NU(r){return PU.parse(r,{allowPrototypes:!0})}});var gI=h((Bce,bI)=>{bI.exports=yI;function yI(r,e){if(r&&e)return yI(r)(e);if(typeof r!="function")throw new TypeError("need wrapper function");return Object.keys(r).forEach(function(n){t[n]=r[n]}),t;function t(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var s=r.apply(this,n),a=n[n.length-1];return typeof s=="function"&&s!==a&&Object.keys(a).forEach(function(o){s[o]=a[o]}),s}}});var EI=h(($ce,hh)=>{var vI=gI();hh.exports=vI(bl);hh.exports.strict=vI(xI);bl.proto=bl(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return bl(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return xI(this)},configurable:!0})});function bl(r){var e=function(){return e.called?e.value:(e.called=!0,e.value=r.apply(this,arguments))};return e.called=!1,e}function xI(r){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=r.apply(this,arguments)},t=r.name||"Function wrapped with `once`";return e.onceError=t+" shouldn't be called more than once",e.called=!1,e}});var bh=h((Vce,yh)=>{yh.exports=SI;yh.exports.default=SI;function SI(r){return!!r&&(typeof r=="object"||typeof r=="function")&&typeof r.then=="function"}});var AI=h(Ir=>{"use strict";Object.defineProperty(Ir,"__esModule",{value:!0});Ir.PathError=Ir.TokenData=void 0;Ir.parse=Eh;Ir.compile=UU;Ir.match=BU;Ir.pathToRegexp=kI;Ir.stringify=VU;var vh="/",xh=r=>r,qU=/^[$_\p{ID_Start}]$/u,II=/^[$\u200c\u200d\p{ID_Continue}]$/u,FU=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;function JU(r){return r.replace(/[{}()\[\]+?!:*\\]/g,"\\$&")}function ln(r){return r.replace(/[.+*?^${}()[\]|/\\]/g,"\\$&")}var gl=class{constructor(e,t){this.tokens=e,this.originalPath=t}};Ir.TokenData=gl;var Jr=class extends TypeError{constructor(e,t){let n=e;t&&(n+=`: ${t}`),n+="; visit https://git.new/pathToRegexpError for info",super(n),this.originalPath=t}};Ir.PathError=Jr;function Eh(r,e={}){let{encodePath:t=xh}=e,n=[...r],i=0;function s(a){let o=[],c="";function l(){c&&(o.push({type:"text",value:t(c)}),c="")}for(;i<n.length;){let u=n[i++];if(u===a)return l(),o;if(u==="\\"){if(i===n.length)throw new Jr(`Unexpected end after \\ at index ${i}`,r);c+=n[i++];continue}if(u===":"||u==="*"){let d=u===":"?"param":"wildcard",p="";if(qU.test(n[i]))do p+=n[i++];while(II.test(n[i]));else if(n[i]==='"'){let f=i;for(;i<n.length;){if(n[++i]==='"'){i++,f=0;break}n[i]==="\\"&&i++,p+=n[i]}if(f)throw new Jr(`Unterminated quote at index ${f}`,r)}if(!p)throw new Jr(`Missing parameter name at index ${i}`,r);l(),o.push({type:d,name:p});continue}if(u==="{"){l(),o.push({type:"group",tokens:s("}")});continue}if(u==="}"||u==="("||u===")"||u==="["||u==="]"||u==="+"||u==="?"||u==="!")throw new Jr(`Unexpected ${u} at index ${i-1}`,r);c+=u}if(a)throw new Jr(`Unexpected end at index ${i}, expected ${a}`,r);return l(),o}return new gl(s(""),r)}function UU(r,e={}){let{encode:t=encodeURIComponent,delimiter:n=vh}=e,i=typeof r=="object"?r:Eh(r,e),s=_I(i.tokens,n,t);return function(o={}){let c=[],l=s(o,c);if(c.length)throw new TypeError(`Missing parameters: ${c.join(", ")}`);return l}}function _I(r,e,t){let n=r.map(i=>GU(i,e,t));return(i,s)=>{let a="";for(let o of n)a+=o(i,s);return a}}function GU(r,e,t){if(r.type==="text")return()=>r.value;if(r.type==="group"){let i=_I(r.tokens,e,t);return(s,a)=>{let o=a.length,c=i(s,a);return a.length===o?c:(a.length=o,"")}}let n=t||xh;return r.type==="wildcard"&&t!==!1?(i,s)=>{let a=i[r.name];if(a==null)return s.push(r.name),"";if(!Array.isArray(a)||a.length===0)throw new TypeError(`Expected "${r.name}" to be a non-empty array`);let o="";for(let c=0;c<a.length;c++){if(typeof a[c]!="string")throw new TypeError(`Expected "${r.name}/${c}" to be a string`);c>0&&(o+=e),o+=n(a[c])}return o}:(i,s)=>{let a=i[r.name];if(a==null)return s.push(r.name),"";if(typeof a!="string")throw new TypeError(`Expected "${r.name}" to be a string`);return n(a)}}function BU(r,e={}){let{decode:t=decodeURIComponent,delimiter:n=vh}=e,{regexp:i,keys:s}=kI(r,e),a=s.map(o=>t===!1?xh:o.type==="param"?t:c=>c.split(n).map(t));return function(c){let l=i.exec(c);if(!l)return!1;let u=l[0],d=Object.create(null);for(let p=1;p<l.length;p++){if(l[p]===void 0)continue;let f=s[p-1],m=a[p-1];d[f.name]=m(l[p])}return{path:u,params:d}}}function kI(r,e={}){let{delimiter:t=vh,end:n=!0,sensitive:i=!1,trailing:s=!0}=e,a=[],o="",c=0;function l(d){if(Array.isArray(d)){for(let f of d)l(f);return}let p=typeof d=="object"?d:Eh(d,e);gh(p.tokens,0,[],f=>{if(c>=256)throw new Jr("Too many path combinations",p.originalPath);c>0&&(o+="|"),o+=$U(f,t,a,p.originalPath),c++})}l(r);let u=`^(?:${o})`;return s&&(u+="(?:"+ln(t)+"$)?"),u+=n?"$":"(?="+ln(t)+"|$)",{regexp:new RegExp(u,i?"":"i"),keys:a}}function gh(r,e,t,n){for(;e<r.length;){let i=r[e++];if(i.type==="group"){let s=t.length;gh(i.tokens,0,t,a=>gh(r,e,a,n)),t.length=s;continue}t.push(i)}n(t)}function $U(r,e,t,n){let i="",s="",a="",o=0,c=0,l=0;function u(p,f){for(;p<r.length;){let m=r[p++];if(m.type===f)return!0;if(m.type==="text"&&m.value.includes(e))break}return!1}function d(p){let f="";for(;p<r.length;){let m=r[p++];if(m.type!=="text")break;f+=m.value}return f}for(;l<r.length;){let p=r[l++];if(p.type==="text"){i+=ln(p.value),s+=p.value,o===2&&(a+=p.value),p.value.includes(e)&&(c=0);continue}if(p.type==="param"||p.type==="wildcard"){if(o&&!s)throw new Jr(`Missing text before "${p.name}" ${p.type}`,n);p.type==="param"?(i+=c&2?`(${Ln(e,s)}+)`:u(l,"wildcard")?`(${Ln(e,d(l))}+)`:c&1?`(${Ln(e,s)}+|${ln(s)})`:`(${Ln(e,"")}+)`,c|=o=1):(i+=c&2?`(${Ln(s,"")}+)`:a?`(${Ln(a,"")}+|${Ln(e,"")}+)`:"([^]+)",a="",c|=o=2),t.push(p),s="";continue}throw new TypeError(`Unknown token type: ${p.type}`)}return i}function Ln(r,e){return e.length>r.length?Ln(e,r):(r===e&&(e=""),e.length>1?`(?:(?!${ln(r)}|${ln(e)})[^])`:r.length>1?`(?:(?!${ln(r)})[^${ln(e)}])`:`[^${ln(r+e)}]`)}function TI(r,e){let t="";for(;e<r.length;){let n=r[e++];if(n.type==="text"){t+=JU(n.value);continue}if(n.type==="group"){t+="{"+TI(n.tokens,0)+"}";continue}if(n.type==="param"){t+=":"+wI(n.name,r[e]);continue}if(n.type==="wildcard"){t+="*"+wI(n.name,r[e]);continue}throw new TypeError(`Unknown token type: ${n.type}`)}return t}function VU(r){return TI(r.tokens,0)}function wI(r,e){return!FU.test(r)||e?.type==="text"&&II.test(e.value[0])?JSON.stringify(r):r}});var Sh=h((zce,CI)=>{"use strict";var jI=bh(),HU=AI(),zU=Nt()("router:layer"),OI=Ma()("router"),YU=/\/+$/,WU=/\((?:\?<(.*?)>)?(?!\?)/g;CI.exports=Ks;function Ks(r,e,t){if(!(this instanceof Ks))return new Ks(r,e,t);zU("new %o",r);let n=e||{};this.handle=t,this.keys=[],this.name=t.name||"<anonymous>",this.params=void 0,this.path=void 0,this.slash=r==="/"&&n.end===!1;function i(s){if(s instanceof RegExp){let a=[],o=0,c;for(;c=WU.exec(s.source);)a.push({name:c[1]||o++,offset:c.index});return function(u){let d=s.exec(u);if(!d)return!1;let p={};for(let f=1;f<d.length;f++){let y=a[f-1].name,b=KI(d[f]);b!==void 0&&(p[y]=b)}return{params:p,path:d[0]}}}return HU.match(n.strict?s:RI(s),{sensitive:n.sensitive,end:n.end,trailing:!n.strict,decode:KI})}this.matchers=Array.isArray(r)?r.map(i):[i(r)]}Ks.prototype.handleError=function(e,t,n,i){let s=this.handle;if(s.length!==4)return i(e);try{let a=s(e,t,n,i);jI(a)&&(a instanceof Promise||OI("handlers that are Promise-like are deprecated, use a native Promise instead"),a.then(null,function(o){i(o||new Error("Rejected promise"))}))}catch(a){i(a)}};Ks.prototype.handleRequest=function(e,t,n){let i=this.handle;if(i.length>3)return n();try{let s=i(e,t,n);jI(s)&&(s instanceof Promise||OI("handlers that are Promise-like are deprecated, use a native Promise instead"),s.then(null,function(a){n(a||new Error("Rejected promise"))}))}catch(s){n(s)}};Ks.prototype.match=function(e){let t;if(e!=null){if(this.slash)return this.params={},this.path="",!0;let n=0;for(;!t&&n<this.matchers.length;)t=this.matchers[n](e),n++}return t?(this.params=t.params,this.path=t.path,this.keys=Object.keys(t.params),!0):(this.params=void 0,this.path=void 0,!1)};function KI(r){if(typeof r!="string"||r.length===0)return r;try{return decodeURIComponent(r)}catch(e){throw e instanceof URIError&&(e.message="Failed to decode param '"+r+"'",e.status=400),e}}function RI(r){return r instanceof RegExp||r==="/"?r:Array.isArray(r)?r.map(function(e){return RI(e)}):String(r).replace(YU,"")}});var qI=h((Yce,NI)=>{"use strict";var DI=Nt()("router:route"),PI=Sh(),{METHODS:QU}=require("node:http"),MI=Array.prototype.slice,LI=Array.prototype.flat,XU=QU.map(r=>r.toLowerCase());NI.exports=js;function js(r){DI("new %o",r),this.path=r,this.stack=[],this.methods=Object.create(null)}js.prototype._handlesMethod=function(e){if(this.methods._all)return!0;let t=typeof e=="string"?e.toLowerCase():e;return t==="head"&&!this.methods.head&&(t="get"),!!this.methods[t]};js.prototype._methods=function(){let e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(let t=0;t<e.length;t++)e[t]=e[t].toUpperCase();return e};js.prototype.dispatch=function(e,t,n){let i=0,s=this.stack,a=0;if(s.length===0)return n();let o=typeof e.method=="string"?e.method.toLowerCase():e.method;o==="head"&&!this.methods.head&&(o="get"),e.route=this,c();function c(l){if(l&&l==="route")return n();if(l&&l==="router"||i>=s.length)return n(l);if(++a>100)return setImmediate(c,l);let u,d;for(;d!==!0&&i<s.length;)u=s[i++],d=!u.method||u.method===o;if(d!==!0)return n(l);l?u.handleError(l,e,t,c):u.handleRequest(e,t,c),a=0}};js.prototype.all=function(e){let t=LI.call(MI.call(arguments),1/0);if(t.length===0)throw new TypeError("argument handler is required");for(let n=0;n<t.length;n++){let i=t[n];if(typeof i!="function")throw new TypeError("argument handler must be a function");let s=PI("/",{},i);s.method=void 0,this.methods._all=!0,this.stack.push(s)}return this};XU.forEach(function(r){js.prototype[r]=function(e){let t=LI.call(MI.call(arguments),1/0);if(t.length===0)throw new TypeError("argument handler is required");for(let n=0;n<t.length;n++){let i=t[n];if(typeof i!="function")throw new TypeError("argument handler must be a function");DI("%s %s",r,this.path);let s=PI("/",{},i);s.method=r,this.methods[r]=!0,this.stack.push(s)}return this}})});var Ih=h((Wce,wh)=>{"use strict";var ZU=bh(),FI=Sh(),{METHODS:e5}=require("node:http"),t5=no(),JI=qI(),vl=Nt()("router"),r5=Ma()("router"),UI=Array.prototype.slice,n5=Array.prototype.flat,i5=e5.map(r=>r.toLowerCase());wh.exports=un;wh.exports.Route=JI;function un(r){if(!(this instanceof un))return new un(r);let e=r||{};function t(n,i,s){t.handle(n,i,s)}return Object.setPrototypeOf(t,this),t.caseSensitive=e.caseSensitive,t.mergeParams=e.mergeParams,t.params={},t.strict=e.strict,t.stack=[],t}un.prototype=function(){};un.prototype.param=function(e,t){if(!e)throw new TypeError("argument name is required");if(typeof e!="string")throw new TypeError("argument name must be a string");if(!t)throw new TypeError("argument fn is required");if(typeof t!="function")throw new TypeError("argument fn must be a function");let n=this.params[e];return n||(n=this.params[e]=[]),n.push(t),this};un.prototype.handle=function(e,t,n){if(!n)throw new TypeError("argument callback is required");vl("dispatching %s %s",e.method,e.url);let i=0,s,a=o5(e.url)||"",o="",c=this,l=!1,u=0,d={},p=this.stack,f=e.params,m=e.baseUrl||"",y=d5(n,e,"baseUrl","next","params");e.next=b,e.method==="OPTIONS"&&(s=[],y=m5(y,s5(t,s))),e.baseUrl=m,e.originalUrl=e.originalUrl||e.url,b();function b(x){let I=x==="route"?null:x;if(l&&(e.url=e.url.slice(1),l=!1),o.length!==0&&(e.baseUrl=m,e.url=a+o+e.url.slice(a.length),o=""),I==="router"){setImmediate(y,null);return}if(i>=p.length){setImmediate(y,I);return}if(++u>100)return setImmediate(b,x);let k=a5(e);if(k==null)return y(I);let M,U,re;for(;U!==!0&&i<p.length;){if(M=p[i++],U=c5(M,k),re=M.route,typeof U!="boolean"&&(I=I||U),U!==!0||!re)continue;if(I){U=!1;continue}let ie=e.method,ee=re._handlesMethod(ie);!ee&&ie==="OPTIONS"&&s&&s.push.apply(s,re._methods()),!ee&&ie!=="HEAD"&&(U=!1)}if(U!==!0)return y(I);re&&(e.route=re),e.params=c.mergeParams?l5(M.params,f):M.params;let Ke=M.path;u5(c.params,M,d,e,t,function(ie){ie?b(I||ie):re?M.handleRequest(e,t,b):g(M,I,Ke,k),u=0})}function g(x,I,k,M){if(k.length!==0){if(k!==M.substring(0,k.length)){b(I);return}let U=M[k.length];if(U&&U!=="/"){b(I);return}vl("trim prefix (%s) from url %s",k,e.url),o=k,e.url=a+e.url.slice(a.length+o.length),!a&&e.url[0]!=="/"&&(e.url="/"+e.url,l=!0),e.baseUrl=m+(o[o.length-1]==="/"?o.substring(0,o.length-1):o)}vl("%s %s : %s",x.name,k,e.originalUrl),I?x.handleError(I,e,t,b):x.handleRequest(e,t,b)}};un.prototype.use=function(e){let t=0,n="/";if(typeof e!="function"){let s=e;for(;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(t=1,n=e)}let i=n5.call(UI.call(arguments,t),1/0);if(i.length===0)throw new TypeError("argument handler is required");for(let s=0;s<i.length;s++){let a=i[s];if(typeof a!="function")throw new TypeError("argument handler must be a function");vl("use %o %s",n,a.name||"<anonymous>");let o=new FI(n,{sensitive:this.caseSensitive,strict:!1,end:!1},a);o.route=void 0,this.stack.push(o)}return this};un.prototype.route=function(e){let t=new JI(e),n=new FI(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},i);function i(s,a,o){t.dispatch(s,a,o)}return n.route=t,this.stack.push(n),t};i5.concat("all").forEach(function(r){un.prototype[r]=function(e){let t=this.route(e);return t[r].apply(t,UI.call(arguments,1)),this}});function s5(r,e){return function(n,i){if(i||e.length===0)return n(i);f5(r,e,n)}}function a5(r){try{return t5(r).pathname}catch{return}}function o5(r){if(typeof r!="string"||r.length===0||r[0]==="/")return;let e=r.indexOf("?"),t=e!==-1?e:r.length,n=r.substring(0,t).indexOf("://");return n!==-1?r.substring(0,r.indexOf("/",3+n)):void 0}function c5(r,e){try{return r.match(e)}catch(t){return t}}function l5(r,e){if(typeof e!="object"||!e)return r;let t=Object.assign({},e);if(!(0 in r)||!(0 in e))return Object.assign(t,r);let n=0,i=0;for(;n in r;)n++;for(;i in e;)i++;for(n--;n>=0;n--)r[n+i]=r[n],n<i&&delete r[n];return Object.assign(t,r)}function u5(r,e,t,n,i,s){let a=e.keys;if(!a||a.length===0)return s();let o=0,c=0,l,u,d,p;function f(y){if(y)return s(y);if(o>=a.length)return s();if(c=0,l=a[o++],u=n.params[l],d=r[l],p=t[l],u===void 0||!d)return f();if(p&&(p.match===u||p.error&&p.error!=="route"))return n.params[l]=p.value,f(p.error);t[l]=p={error:null,match:u,value:u},m()}function m(y){let b=d[c++];if(p.value=n.params[l],y){p.error=y,f(y);return}if(!b)return f();try{let g=b(n,i,m,u,l);ZU(g)&&(g instanceof Promise||r5("parameters that are Promise-like are deprecated, use a native Promise instead"),g.then(null,function(x){m(x||new Error("Rejected promise"))}))}catch(g){m(g)}}f()}function d5(r,e){let t=new Array(arguments.length-2),n=new Array(arguments.length-2);for(let i=0;i<t.length;i++)t[i]=arguments[i+2],n[i]=e[t[i]];return function(){for(let i=0;i<t.length;i++)e[t[i]]=n[i];return r.apply(this,arguments)}}function p5(r,e){let t=Object.create(null);for(let i=0;i<e.length;i++)t[e[i]]=!0;let n=Object.keys(t).sort().join(", ");r.setHeader("Allow",n),r.setHeader("Content-Length",Buffer.byteLength(n)),r.setHeader("Content-Type","text/plain"),r.setHeader("X-Content-Type-Options","nosniff"),r.end(n)}function f5(r,e,t){try{p5(r,e)}catch(n){t(n)}}function m5(r,e){return function(){let n=new Array(arguments.length+1);n[0]=r;for(let i=0,s=arguments.length;i<s;i++)n[i+1]=arguments[i];e.apply(this,n)}}});var $I=h((GI,BI)=>{"use strict";var h5=W1(),Th=Nt()("express:application"),y5=tI(),b5=require("node:http"),_h=Mn().methods,g5=Mn().compileETag,v5=Mn().compileQueryParser,x5=Mn().compileTrust,E5=require("node:path").resolve,S5=EI(),w5=Ih(),xl=Array.prototype.slice,I5=Array.prototype.flat,lt=GI=BI.exports={},kh="@@symbol:trust_proxy_default";lt.init=function(){var e=null;this.cache=Object.create(null),this.engines=Object.create(null),this.settings=Object.create(null),this.defaultConfiguration(),Object.defineProperty(this,"router",{configurable:!0,enumerable:!0,get:function(){return e===null&&(e=new w5({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")})),e}})};lt.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","simple"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,kh,{configurable:!0,value:!0}),Th("booting in %s mode",e),this.on("mount",function(n){this.settings[kh]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),Object.setPrototypeOf(this.request,n.request),Object.setPrototypeOf(this.response,n.response),Object.setPrototypeOf(this.engines,n.engines),Object.setPrototypeOf(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",y5),this.set("views",E5("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache")};lt.handle=function(e,t,n){var i=n||h5(e,t,{env:this.get("env"),onerror:_5.bind(this)});this.enabled("x-powered-by")&&t.setHeader("X-Powered-By","Express"),e.res=t,t.req=e,Object.setPrototypeOf(e,this.request),Object.setPrototypeOf(t,this.response),t.locals||(t.locals=Object.create(null)),this.router.handle(e,t,i)};lt.use=function(e){var t=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(t=1,n=e)}var s=I5.call(xl.call(arguments,t),1/0);if(s.length===0)throw new TypeError("app.use() requires a middleware function");var a=this.router;return s.forEach(function(o){if(!o||!o.handle||!o.set)return a.use(n,o);Th(".use app under %s",n),o.mountpath=n,o.parent=this,a.use(n,function(l,u,d){var p=l.app;o.handle(l,u,function(f){Object.setPrototypeOf(l,p.request),Object.setPrototypeOf(u,p.response),d(f)})}),o.emit("mount",this)},this),this};lt.route=function(e){return this.router.route(e)};lt.engine=function(e,t){if(typeof t!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=t,this};lt.param=function(e,t){if(Array.isArray(e)){for(var n=0;n<e.length;n++)this.param(e[n],t);return this}return this.router.param(e,t),this};lt.set=function(e,t){if(arguments.length===1)return this.settings[e];switch(Th('set "%s" to %o',e,t),this.settings[e]=t,e){case"etag":this.set("etag fn",g5(t));break;case"query parser":this.set("query parser fn",v5(t));break;case"trust proxy":this.set("trust proxy fn",x5(t)),Object.defineProperty(this.settings,kh,{configurable:!0,value:!1});break}return this};lt.path=function(){return this.parent?this.parent.path()+this.mountpath:""};lt.enabled=function(e){return!!this.set(e)};lt.disabled=function(e){return!this.set(e)};lt.enable=function(e){return this.set(e,!0)};lt.disable=function(e){return this.set(e,!1)};_h.forEach(function(r){lt[r]=function(e){if(r==="get"&&arguments.length===1)return this.set(e);var t=this.route(e);return t[r].apply(t,xl.call(arguments,1)),this}});lt.all=function(e){for(var t=this.route(e),n=xl.call(arguments,1),i=0;i<_h.length;i++)t[_h[i]].apply(t,n);return this};lt.render=function(e,t,n){var i=this.cache,s=n,a=this.engines,o=t,c;typeof t=="function"&&(s=t,o={});var l={...this.locals,...o._locals,...o};if(l.cache==null&&(l.cache=this.enabled("view cache")),l.cache&&(c=i[e]),!c){var u=this.get("view");if(c=new u(e,{defaultEngine:this.get("view engine"),root:this.get("views"),engines:a}),!c.path){var d=Array.isArray(c.root)&&c.root.length>1?'directories "'+c.root.slice(0,-1).join('", "')+'" or "'+c.root[c.root.length-1]+'"':'directory "'+c.root+'"',p=new Error('Failed to lookup view "'+e+'" in views '+d);return p.view=c,s(p)}l.cache&&(i[e]=c)}k5(c,l,s)};lt.listen=function(){var e=b5.createServer(this),t=xl.call(arguments);if(typeof t[t.length-1]=="function"){var n=t[t.length-1]=S5(t[t.length-1]);e.once("error",n)}return e.listen.apply(e,t)};function _5(r){this.get("env")!=="test"&&console.error(r.stack||r.toString())}function k5(r,e,t){try{r.render(e,t)}catch(n){t(n)}}});var YI=h((Qce,Ah)=>{"use strict";Ah.exports=zI;Ah.exports.preferredCharsets=zI;var T5=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function A5(r){for(var e=r.split(","),t=0,n=0;t<e.length;t++){var i=K5(e[t].trim(),t);i&&(e[n++]=i)}return e.length=n,e}function K5(r,e){var t=T5.exec(r);if(!t)return null;var n=t[1],i=1;if(t[2])for(var s=t[2].split(";"),a=0;a<s.length;a++){var o=s[a].trim().split("=");if(o[0]==="q"){i=parseFloat(o[1]);break}}return{charset:n,q:i,i:e}}function j5(r,e,t){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=O5(r,e[i],t);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function O5(r,e,t){var n=0;if(e.charset.toLowerCase()===r.toLowerCase())n|=1;else if(e.charset!=="*")return null;return{i:t,o:e.i,q:e.q,s:n}}function zI(r,e){var t=A5(r===void 0?"*":r||"");if(!e)return t.filter(HI).sort(VI).map(R5);var n=e.map(function(s,a){return j5(s,t,a)});return n.filter(HI).sort(VI).map(function(s){return e[n.indexOf(s)]})}function VI(r,e){return e.q-r.q||e.s-r.s||r.o-e.o||r.i-e.i||0}function R5(r){return r.charset}function HI(r){return r.q>0}});var ZI=h((Xce,Kh)=>{"use strict";Kh.exports=XI;Kh.exports.preferredEncodings=XI;var C5=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function D5(r){for(var e=r.split(","),t=!1,n=1,i=0,s=0;i<e.length;i++){var a=P5(e[i].trim(),i);a&&(e[s++]=a,t=t||QI("identity",a),n=Math.min(n,a.q||1))}return t||(e[s++]={encoding:"identity",q:n,i}),e.length=s,e}function P5(r,e){var t=C5.exec(r);if(!t)return null;var n=t[1],i=1;if(t[2])for(var s=t[2].split(";"),a=0;a<s.length;a++){var o=s[a].trim().split("=");if(o[0]==="q"){i=parseFloat(o[1]);break}}return{encoding:n,q:i,i:e}}function M5(r,e,t){for(var n={encoding:r,o:-1,q:0,s:0},i=0;i<e.length;i++){var s=QI(r,e[i],t);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function QI(r,e,t){var n=0;if(e.encoding.toLowerCase()===r.toLowerCase())n|=1;else if(e.encoding!=="*")return null;return{encoding:r,i:t,o:e.i,q:e.q,s:n}}function XI(r,e,t){var n=D5(r||""),i=t?function(o,c){if(o.q!==c.q)return c.q-o.q;var l=t.indexOf(o.encoding),u=t.indexOf(c.encoding);return l===-1&&u===-1?c.s-o.s||o.o-c.o||o.i-c.i:l!==-1&&u!==-1?l-u:l===-1?1:-1}:L5;if(!e)return n.filter(WI).sort(i).map(N5);var s=e.map(function(o,c){return M5(o,n,c)});return s.filter(WI).sort(i).map(function(o){return e[s.indexOf(o)]})}function L5(r,e){return e.q-r.q||e.s-r.s||r.o-e.o||r.i-e.i}function N5(r){return r.encoding}function WI(r){return r.q>0}});var i_=h((Zce,jh)=>{"use strict";jh.exports=n_;jh.exports.preferredLanguages=n_;var q5=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function F5(r){for(var e=r.split(","),t=0,n=0;t<e.length;t++){var i=r_(e[t].trim(),t);i&&(e[n++]=i)}return e.length=n,e}function r_(r,e){var t=q5.exec(r);if(!t)return null;var n=t[1],i=t[2],s=n;i&&(s+="-"+i);var a=1;if(t[3])for(var o=t[3].split(";"),c=0;c<o.length;c++){var l=o[c].split("=");l[0]==="q"&&(a=parseFloat(l[1]))}return{prefix:n,suffix:i,q:a,i:e,full:s}}function J5(r,e,t){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=U5(r,e[i],t);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function U5(r,e,t){var n=r_(r);if(!n)return null;var i=0;if(e.full.toLowerCase()===n.full.toLowerCase())i|=4;else if(e.prefix.toLowerCase()===n.full.toLowerCase())i|=2;else if(e.full.toLowerCase()===n.prefix.toLowerCase())i|=1;else if(e.full!=="*")return null;return{i:t,o:e.i,q:e.q,s:i}}function n_(r,e){var t=F5(r===void 0?"*":r||"");if(!e)return t.filter(t_).sort(e_).map(G5);var n=e.map(function(s,a){return J5(s,t,a)});return n.filter(t_).sort(e_).map(function(s){return e[n.indexOf(s)]})}function e_(r,e){return e.q-r.q||e.s-r.s||r.o-e.o||r.i-e.i||0}function G5(r){return r.full}function t_(r){return r.q>0}});var u_=h((ele,Oh)=>{"use strict";Oh.exports=c_;Oh.exports.preferredMediaTypes=c_;var B5=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function $5(r){for(var e=W5(r),t=0,n=0;t<e.length;t++){var i=o_(e[t].trim(),t);i&&(e[n++]=i)}return e.length=n,e}function o_(r,e){var t=B5.exec(r);if(!t)return null;var n=Object.create(null),i=1,s=t[2],a=t[1];if(t[3])for(var o=Q5(t[3]).map(Y5),c=0;c<o.length;c++){var l=o[c],u=l[0].toLowerCase(),d=l[1],p=d&&d[0]==='"'&&d[d.length-1]==='"'?d.slice(1,-1):d;if(u==="q"){i=parseFloat(p);break}n[u]=p}return{type:a,subtype:s,params:n,q:i,i:e}}function V5(r,e,t){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=H5(r,e[i],t);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function H5(r,e,t){var n=o_(r),i=0;if(!n)return null;if(e.type.toLowerCase()==n.type.toLowerCase())i|=4;else if(e.type!="*")return null;if(e.subtype.toLowerCase()==n.subtype.toLowerCase())i|=2;else if(e.subtype!="*")return null;var s=Object.keys(e.params);if(s.length>0)if(s.every(function(a){return e.params[a]=="*"||(e.params[a]||"").toLowerCase()==(n.params[a]||"").toLowerCase()}))i|=1;else return null;return{i:t,o:e.i,q:e.q,s:i}}function c_(r,e){var t=$5(r===void 0?"*/*":r||"");if(!e)return t.filter(a_).sort(s_).map(z5);var n=e.map(function(s,a){return V5(s,t,a)});return n.filter(a_).sort(s_).map(function(s){return e[n.indexOf(s)]})}function s_(r,e){return e.q-r.q||e.s-r.s||r.o-e.o||r.i-e.i||0}function z5(r){return r.type+"/"+r.subtype}function a_(r){return r.q>0}function l_(r){for(var e=0,t=0;(t=r.indexOf('"',t))!==-1;)e++,t++;return e}function Y5(r){var e=r.indexOf("="),t,n;return e===-1?t=r:(t=r.slice(0,e),n=r.slice(e+1)),[t,n]}function W5(r){for(var e=r.split(","),t=1,n=0;t<e.length;t++)l_(e[n])%2==0?e[++n]=e[t]:e[n]+=","+e[t];return e.length=n+1,e}function Q5(r){for(var e=r.split(";"),t=1,n=0;t<e.length;t++)l_(e[n])%2==0?e[++n]=e[t]:e[n]+=";"+e[t];e.length=n+1;for(var t=0;t<e.length;t++)e[t]=e[t].trim();return e}});var d_=h((tle,Rh)=>{"use strict";var X5=YI(),Z5=ZI(),eG=i_(),tG=u_();Rh.exports=be;Rh.exports.Negotiator=be;function be(r){if(!(this instanceof be))return new be(r);this.request=r}be.prototype.charset=function(e){var t=this.charsets(e);return t&&t[0]};be.prototype.charsets=function(e){return X5(this.request.headers["accept-charset"],e)};be.prototype.encoding=function(e,t){var n=this.encodings(e,t);return n&&n[0]};be.prototype.encodings=function(e,t){var n=t||{};return Z5(this.request.headers["accept-encoding"],e,n.preferred)};be.prototype.language=function(e){var t=this.languages(e);return t&&t[0]};be.prototype.languages=function(e){return eG(this.request.headers["accept-language"],e)};be.prototype.mediaType=function(e){var t=this.mediaTypes(e);return t&&t[0]};be.prototype.mediaTypes=function(e){return tG(this.request.headers.accept,e)};be.prototype.preferredCharset=be.prototype.charset;be.prototype.preferredCharsets=be.prototype.charsets;be.prototype.preferredEncoding=be.prototype.encoding;be.prototype.preferredEncodings=be.prototype.encodings;be.prototype.preferredLanguage=be.prototype.language;be.prototype.preferredLanguages=be.prototype.languages;be.prototype.preferredMediaType=be.prototype.mediaType;be.prototype.preferredMediaTypes=be.prototype.mediaTypes});var f_=h((rle,p_)=>{"use strict";var rG=d_(),nG=gs();p_.exports=Ft;function Ft(r){if(!(this instanceof Ft))return new Ft(r);this.headers=r.headers,this.negotiator=new rG(r)}Ft.prototype.type=Ft.prototype.types=function(r){var e=r;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var t=0;t<e.length;t++)e[t]=arguments[t]}if(!e||e.length===0)return this.negotiator.mediaTypes();if(!this.headers.accept)return e[0];var n=e.map(iG),i=this.negotiator.mediaTypes(n.filter(sG)),s=i[0];return s?e[n.indexOf(s)]:!1};Ft.prototype.encoding=Ft.prototype.encodings=function(r){var e=r;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var t=0;t<e.length;t++)e[t]=arguments[t]}return!e||e.length===0?this.negotiator.encodings():this.negotiator.encodings(e)[0]||!1};Ft.prototype.charset=Ft.prototype.charsets=function(r){var e=r;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var t=0;t<e.length;t++)e[t]=arguments[t]}return!e||e.length===0?this.negotiator.charsets():this.negotiator.charsets(e)[0]||!1};Ft.prototype.lang=Ft.prototype.langs=Ft.prototype.language=Ft.prototype.languages=function(r){var e=r;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var t=0;t<e.length;t++)e[t]=arguments[t]}return!e||e.length===0?this.negotiator.languages():this.negotiator.languages(e)[0]||!1};function iG(r){return r.indexOf("/")===-1?nG.lookup(r):r}function sG(r){return typeof r=="string"}});var Ch=h((nle,h_)=>{"use strict";var aG=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;h_.exports=oG;function oG(r,e){var t=r["if-modified-since"],n=r["if-none-match"];if(!t&&!n)return!1;var i=r["cache-control"];if(i&&aG.test(i))return!1;if(n){if(n==="*")return!0;var s=e.etag;if(!s)return!1;for(var a=cG(n),o=0;o<a.length;o++){var c=a[o];if(c===s||c==="W/"+s||"W/"+c===s)return!0}return!1}if(t){var l=e["last-modified"],u=!l||!(m_(l)<=m_(t));if(u)return!1}return!0}function m_(r){var e=r&&Date.parse(r);return typeof e=="number"?e:NaN}function cG(r){for(var e=0,t=[],n=0,i=0,s=r.length;i<s;i++)switch(r.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:t.push(r.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return t.push(r.substring(n,e)),t}});var Dh=h((ile,y_)=>{"use strict";y_.exports=lG;function lG(r,e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var i=e.slice(n+1).split(","),s=[];s.type=e.slice(0,n);for(var a=0;a<i.length;a++){var o=i[a].split("-"),c=parseInt(o[0],10),l=parseInt(o[1],10);isNaN(c)?(c=r-l,l=r-1):isNaN(l)&&(l=r-1),l>r-1&&(l=r-1),!(isNaN(c)||isNaN(l)||c>l||c<0)&&s.push({start:c,end:l})}return s.length<1?-1:t&&t.combine?uG(s):s}function uG(r){for(var e=r.map(dG).sort(mG),t=0,n=1;n<e.length;n++){var i=e[n],s=e[t];i.start>s.end+1?e[++t]=i:i.end>s.end&&(s.end=i.end,s.index=Math.min(s.index,i.index))}e.length=t+1;var a=e.sort(fG).map(pG);return a.type=r.type,a}function dG(r,e){return{start:r.start,end:r.end,index:e}}function pG(r){return{start:r.start,end:r.end}}function fG(r,e){return r.index-e.index}function mG(r,e){return r.start-e.start}});var x_=h((sle,v_)=>{"use strict";var El=f_(),hG=require("node:net").isIP,yG=zc(),bG=require("node:http"),gG=Ch(),vG=Dh(),b_=no(),g_=mh(),Ue=Object.create(bG.IncomingMessage.prototype);v_.exports=Ue;Ue.get=Ue.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var t=e.toLowerCase();switch(t){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[t]}};Ue.accepts=function(){var r=El(this);return r.types.apply(r,arguments)};Ue.acceptsEncodings=function(){var r=El(this);return r.encodings.apply(r,arguments)};Ue.acceptsCharsets=function(){var r=El(this);return r.charsets.apply(r,arguments)};Ue.acceptsLanguages=function(...r){return El(this).languages(...r)};Ue.range=function(e,t){var n=this.get("Range");if(n)return vG(e,n,t)};ir(Ue,"query",function(){var e=this.app.get("query parser fn");if(!e)return Object.create(null);var t=b_(this).query;return e(t)});Ue.is=function(e){var t=e;if(!Array.isArray(e)){t=new Array(arguments.length);for(var n=0;n<t.length;n++)t[n]=arguments[n]}return yG(this,t)};ir(Ue,"protocol",function(){var e=this.socket.encrypted?"https":"http",t=this.app.get("trust proxy fn");if(!t(this.socket.remoteAddress,0))return e;var n=this.get("X-Forwarded-Proto")||e,i=n.indexOf(",");return i!==-1?n.substring(0,i).trim():n.trim()});ir(Ue,"secure",function(){return this.protocol==="https"});ir(Ue,"ip",function(){var e=this.app.get("trust proxy fn");return g_(this,e)});ir(Ue,"ips",function(){var e=this.app.get("trust proxy fn"),t=g_.all(this,e);return t.reverse().pop(),t});ir(Ue,"subdomains",function(){var e=this.hostname;if(!e)return[];var t=this.app.get("subdomain offset"),n=hG(e)?[e]:e.split(".").reverse();return n.slice(t)});ir(Ue,"path",function(){return b_(this).pathname});ir(Ue,"host",function(){var e=this.app.get("trust proxy fn"),t=this.get("X-Forwarded-Host");return!t||!e(this.socket.remoteAddress,0)?t=this.get("Host"):t.indexOf(",")!==-1&&(t=t.substring(0,t.indexOf(",")).trimRight()),t||void 0});ir(Ue,"hostname",function(){var e=this.host;if(e){var t=e[0]==="["?e.indexOf("]")+1:0,n=e.indexOf(":",t);return n!==-1?e.substring(0,n):e}});ir(Ue,"fresh",function(){var r=this.method,e=this.res,t=e.statusCode;return r!=="GET"&&r!=="HEAD"?!1:t>=200&&t<300||t===304?gG(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});ir(Ue,"stale",function(){return!this.fresh});ir(Ue,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function ir(r,e,t){Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:t})}});var T_=h((ale,Ph)=>{"use strict";Ph.exports=AG;Ph.exports.parse=RG;var xG=new TextDecoder("utf-8"),EG=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,I_=/[^\x20-\x7e\xa0-\xff]/g,SG=/\\([\u0000-\u007f])/g,wG=/([\\"])/g,E_=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,IG=/^[\x20-\x7e\x80-\xff]+$/,_G=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,kG=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,TG=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function AG(r,e){var t=e||{},n=t.type||"attachment",i=KG(r,t.fallback);return jG(new k_(n,i))}function KG(r,e){if(r!==void 0){var t={};if(typeof r!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&I_.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=S_(r),i=IG.test(n),s=typeof e!="string"?e&&__(n):S_(e),a=typeof s=="string"&&s!==n;return(a||!i||MG(n))&&(t["filename*"]=n),(i||a)&&(t.filename=a?s:n),t}}function jG(r){var e=r.parameters,t=r.type;if(!t||typeof t!="string"||!_G.test(t))throw new TypeError("invalid type");var n=String(t).toLowerCase();if(e&&typeof e=="object")for(var i,s=Object.keys(e).sort(),a=0;a<s.length;a++){i=s[a];var o=i.slice(-1)==="*"?PG(e[i]):DG(e[i]);n+="; "+i+"="+o}return n}function OG(r){let e=kG.exec(r);if(!e)throw new TypeError("invalid extended field value");let t=e[1].toLowerCase(),n=e[2];switch(t){case"iso-8859-1":{let i=w_(n);return __(i)}case"utf-8":case"utf8":try{return decodeURIComponent(n)}catch{let i=w_(n),s=new Uint8Array(i.length);for(let a=0;a<i.length;a++)s[a]=i.charCodeAt(a);return xG.decode(s)}}throw new TypeError("unsupported charset in extended field")}function __(r){return String(r).replace(I_,"?")}function RG(r){if(!r||typeof r!="string")throw new TypeError("argument string is required");var e=TG.exec(r);if(!e)throw new TypeError("invalid type format");var t=e[0].length,n=e[1].toLowerCase(),i,s=[],a={},o;for(t=E_.lastIndex=e[0].slice(-1)===";"?t-1:t;e=E_.exec(r);){if(e.index!==t)throw new TypeError("invalid parameter format");if(t+=e[0].length,i=e[1].toLowerCase(),o=e[2],s.indexOf(i)!==-1)throw new TypeError("invalid duplicate parameter");if(s.push(i),i.indexOf("*")+1===i.length){i=i.slice(0,-1),o=OG(o),a[i]=o;continue}typeof a[i]!="string"&&(o[0]==='"'&&(o=o.slice(1,-1).replace(SG,"$1")),a[i]=o)}if(t!==-1&&t!==r.length)throw new TypeError("invalid parameter format");return new k_(n,a)}function CG(r){return"%"+String(r).charCodeAt(0).toString(16).toUpperCase()}function DG(r){var e=String(r);return'"'+e.replace(wG,"\\$1")+'"'}function PG(r){var e=String(r),t=encodeURIComponent(e).replace(EG,CG);return"UTF-8''"+t}function k_(r,e){this.type=r,this.parameters=e}function S_(r){let e=r.replaceAll("\\","/"),t=e.length;for(;t>0&&e[t-1]==="/";)t--;if(t===0)return"";let n=t-1;for(;n>=0&&e[n]!=="/";)n--;return e.slice(n+1,t)}function Sl(r){let e=r.charCodeAt(0);return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function MG(r){let e=r.length-3,t=-1;for(;(t=r.indexOf("%",t+1))!==-1&&t<=e;)if(Sl(r[t+1])&&Sl(r[t+2]))return!0;return!1}function w_(r){let e=r.indexOf("%");if(e===-1)return r;let t=r.slice(0,e);for(let n=e;n<r.length;n++)r[n]==="%"&&n+2<r.length&&Sl(r[n+1])&&Sl(r[n+2])?(t+=String.fromCharCode(Number.parseInt(r[n+1]+r[n+2],16)),n+=2):t+=r[n];return t}});var K_=h(wl=>{var A_=require("crypto");wl.sign=function(r,e){if(typeof r!="string")throw new TypeError("Cookie value must be provided as a string.");if(e==null)throw new TypeError("Secret key must be provided.");return r+"."+A_.createHmac("sha256",e).update(r).digest("base64").replace(/\=+$/,"")};wl.unsign=function(r,e){if(typeof r!="string")throw new TypeError("Signed cookie string must be provided.");if(e==null)throw new TypeError("Secret key must be provided.");var t=r.slice(0,r.lastIndexOf(".")),n=wl.sign(t,e),i=Buffer.from(n),s=Buffer.from(r);return i.length===s.length&&A_.timingSafeEqual(i,s)?t:!1}});var R_=h(Mh=>{"use strict";Mh.parse=GG;Mh.serialize=BG;var LG=Object.prototype.toString,NG=Object.prototype.hasOwnProperty,qG=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,FG=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,JG=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,UG=/^[\u0020-\u003A\u003D-\u007E]*$/;function GG(r,e){if(typeof r!="string")throw new TypeError("argument str must be a string");var t={},n=r.length;if(n<2)return t;var i=e&&e.decode||$G,s=0,a=0,o=0;do{if(a=r.indexOf("=",s),a===-1)break;if(o=r.indexOf(";",s),o===-1)o=n;else if(a>o){s=r.lastIndexOf(";",a-1)+1;continue}var c=j_(r,s,a),l=O_(r,a,c),u=r.slice(c,l);if(!NG.call(t,u)){var d=j_(r,a+1,o),p=O_(r,o,d);r.charCodeAt(d)===34&&r.charCodeAt(p-1)===34&&(d++,p--);var f=r.slice(d,p);t[u]=HG(f,i)}s=o+1}while(s<n);return t}function j_(r,e,t){do{var n=r.charCodeAt(e);if(n!==32&&n!==9)return e}while(++e<t);return t}function O_(r,e,t){for(;e>t;){var n=r.charCodeAt(--e);if(n!==32&&n!==9)return e+1}return t}function BG(r,e,t){var n=t&&t.encode||encodeURIComponent;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!qG.test(r))throw new TypeError("argument name is invalid");var i=n(e);if(!FG.test(i))throw new TypeError("argument val is invalid");var s=r+"="+i;if(!t)return s;if(t.maxAge!=null){var a=Math.floor(t.maxAge);if(!isFinite(a))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+a}if(t.domain){if(!JG.test(t.domain))throw new TypeError("option domain is invalid");s+="; Domain="+t.domain}if(t.path){if(!UG.test(t.path))throw new TypeError("option path is invalid");s+="; Path="+t.path}if(t.expires){var o=t.expires;if(!VG(o)||isNaN(o.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+o.toUTCString()}if(t.httpOnly&&(s+="; HttpOnly"),t.secure&&(s+="; Secure"),t.partitioned&&(s+="; Partitioned"),t.priority){var c=typeof t.priority=="string"?t.priority.toLowerCase():t.priority;switch(c){case"low":s+="; Priority=Low";break;case"medium":s+="; Priority=Medium";break;case"high":s+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(t.sameSite){var l=typeof t.sameSite=="string"?t.sameSite.toLowerCase():t.sameSite;switch(l){case!0:s+="; SameSite=Strict";break;case"lax":s+="; SameSite=Lax";break;case"strict":s+="; SameSite=Strict";break;case"none":s+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return s}function $G(r){return r.indexOf("%")!==-1?decodeURIComponent(r):r}function VG(r){return LG.call(r)==="[object Date]"}function HG(r,e){try{return e(r)}catch{return r}}});var qh=h((lle,G_)=>{"use strict";var Lh=ms(),ut=Nt()("send"),zG=to(),M_=ro(),YG=fh(),WG=Ch(),_l=require("fs"),QG=gs(),XG=jf(),ZG=Fa(),eB=Dh(),ao=require("path"),tB=La(),L_=require("stream"),rB=require("util"),N_=ao.extname,q_=ao.join,Nh=ao.normalize,F_=ao.resolve,Il=ao.sep,nB=/^ *bytes=/,iB=3600*24*365*1e3,C_=/(?:^|[\\/])\.\.(?:[\\/]|$)/;G_.exports=sB;function sB(r,e,t){return new Ge(r,e,t)}function Ge(r,e,t){L_.call(this);var n=t||{};if(this.options=n,this.path=e,this.req=r,this._acceptRanges=n.acceptRanges!==void 0?!!n.acceptRanges:!0,this._cacheControl=n.cacheControl!==void 0?!!n.cacheControl:!0,this._etag=n.etag!==void 0?!!n.etag:!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._extensions=n.extensions!==void 0?P_(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?!!n.immutable:!1,this._index=n.index!==void 0?P_(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?!!n.lastModified:!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?XG(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),iB),this._root=n.root?F_(n.root):null}rB.inherits(Ge,L_);Ge.prototype.error=function(e,t){if(U_(this,"error"))return this.emit("error",lB(e,t));var n=this.res,i=tB.message[e]||String(e),s=J_("Error",M_(i));aB(n),t&&t.headers&&pB(n,t.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(s)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(s)};Ge.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};Ge.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};Ge.prototype.isPreconditionFailure=function(){var e=this.req,t=this.res,n=e.headers["if-match"];if(n){var i=t.getHeader("ETag");return!i||n!=="*"&&dB(n).every(function(o){return o!==i&&o!=="W/"+i&&"W/"+o!==i})}var s=kl(e.headers["if-unmodified-since"]);if(!isNaN(s)){var a=kl(t.getHeader("Last-Modified"));return isNaN(a)||a>s}return!1};Ge.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};Ge.prototype.notModified=function(){var e=this.res;ut("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};Ge.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");ut("headers already sent"),this.error(500,e)};Ge.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};Ge.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};Ge.prototype.isFresh=function(){return WG(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};Ge.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var t=this.res.getHeader("ETag");return!!(t&&e.indexOf(t)!==-1)}var n=this.res.getHeader("Last-Modified");return kl(n)<=kl(e)};Ge.prototype.redirect=function(e){var t=this.res;if(U_(this,"directory")){this.emit("directory",t,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=zG(oB(this.path+"/")),i=J_("Redirecting","Redirecting to "+M_(n));t.statusCode=301,t.setHeader("Content-Type","text/html; charset=UTF-8"),t.setHeader("Content-Length",Buffer.byteLength(i)),t.setHeader("Content-Security-Policy","default-src 'none'"),t.setHeader("X-Content-Type-Options","nosniff"),t.setHeader("Location",n),t.end(i)};Ge.prototype.pipe=function(e){var t=this._root;this.res=e;var n=uB(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var i;if(t!==null){if(n&&(n=Nh("."+Il+n)),C_.test(n))return ut('malicious path "%s"',n),this.error(403),e;i=n.split(Il),n=Nh(q_(t,n))}else{if(C_.test(n))return ut('malicious path "%s"',n),this.error(403),e;i=Nh(n).split(Il),n=F_(n)}if(cB(i))switch(ut('%s dotfile "%s"',this._dotfiles,n),this._dotfiles){case"allow":break;case"deny":return this.error(403),e;default:return this.error(404),e}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};Ge.prototype.send=function(e,t){var n=t.size,i=this.options,s={},a=this.res,o=this.req,c=o.headers.range,l=i.start||0;if(a.headersSent){this.headersAlreadySent();return}if(ut('pipe "%s"',e),this.setHeader(e,t),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-l),i.end!==void 0){var u=i.end-l+1;n>u&&(n=u)}if(this._acceptRanges&&nB.test(c)){if(c=eB(n,c,{combine:!0}),this.isRangeFresh()||(ut("range stale"),c=-2),c===-1)return ut("range unsatisfiable"),a.setHeader("Content-Range",D_("bytes",n)),this.error(416,{headers:{"Content-Range":a.getHeader("Content-Range")}});c!==-2&&c.length===1&&(ut("range %j",c),a.statusCode=206,a.setHeader("Content-Range",D_("bytes",n,c[0])),l+=c[0].start,n=c[0].end-c[0].start+1)}for(var d in i)s[d]=i[d];if(s.start=l,s.end=Math.max(l,l+n-1),a.setHeader("Content-Length",n),o.method==="HEAD"){a.end();return}this.stream(e,s)};Ge.prototype.sendFile=function(e){var t=0,n=this;ut('stat "%s"',e),_l.stat(e,function(a,o){var c=e[e.length-1]===Il;if(a&&a.code==="ENOENT"&&!N_(e)&&!c)return i(a);if(a)return n.onStatError(a);if(o.isDirectory())return n.redirect(e);if(c)return n.error(404);n.emit("file",e,o),n.send(e,o)});function i(s){if(n._extensions.length<=t)return s?n.onStatError(s):n.error(404);var a=e+"."+n._extensions[t++];ut('stat "%s"',a),_l.stat(a,function(o,c){if(o)return i(o);if(c.isDirectory())return i();n.emit("file",a,c),n.send(a,c)})}};Ge.prototype.sendIndex=function(e){var t=-1,n=this;function i(s){if(++t>=n._index.length)return s?n.onStatError(s):n.error(404);var a=q_(e,n._index[t]);ut('stat "%s"',a),_l.stat(a,function(o,c){if(o)return i(o);if(c.isDirectory())return i();n.emit("file",a,c),n.send(a,c)})}i()};Ge.prototype.stream=function(e,t){var n=this,i=this.res,s=_l.createReadStream(e,t);this.emit("stream",s),s.pipe(i);function a(){s.destroy()}ZG(i,a),s.on("error",function(c){a(),n.onStatError(c)}),s.on("end",function(){n.emit("end")})};Ge.prototype.type=function(e){var t=this.res;if(!t.getHeader("Content-Type")){var n=N_(e),i=QG.contentType(n)||"application/octet-stream";ut("content-type %s",i),t.setHeader("Content-Type",i)}};Ge.prototype.setHeader=function(e,t){var n=this.res;if(this.emit("headers",n,e,t),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(ut("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var i="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(i+=", immutable"),ut("cache-control %s",i),n.setHeader("Cache-Control",i)}if(this._lastModified&&!n.getHeader("Last-Modified")){var s=t.mtime.toUTCString();ut("modified %s",s),n.setHeader("Last-Modified",s)}if(this._etag&&!n.getHeader("ETag")){var a=YG(t);ut("etag %s",a),n.setHeader("ETag",a)}};function aB(r){for(let e of r.getHeaderNames())r.removeHeader(e)}function oB(r){for(var e=0;e<r.length&&r[e]==="/";e++);return e>1?"/"+r.substr(e):r}function cB(r){for(var e=0;e<r.length;e++){var t=r[e];if(t.length>1&&t[0]===".")return!0}return!1}function D_(r,e,t){return r+" "+(t?t.start+"-"+t.end:"*")+"/"+e}function J_(r,e){return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>`+r+`</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}function lB(r,e){return e?e instanceof Error?Lh(r,e,{expose:!1}):Lh(r,e):Lh(r)}function uB(r){try{return decodeURIComponent(r)}catch{return-1}}function U_(r,e){var t=typeof r.listenerCount!="function"?r.listeners(e).length:r.listenerCount(e);return t>0}function P_(r,e){for(var t=[].concat(r||[]),n=0;n<t.length;n++)if(typeof t[n]!="string")throw new TypeError(e+" must be array of strings or false");return t}function kl(r){var e=r&&Date.parse(r);return typeof e=="number"?e:NaN}function dB(r){for(var e=0,t=[],n=0,i=0,s=r.length;i<s;i++)switch(r.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:n!==e&&t.push(r.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return n!==e&&t.push(r.substring(n,e)),t}function pB(r,e){for(var t=Object.keys(e),n=0;n<t.length;n++){var i=t[n];r.setHeader(i,e[i])}}});var Jh=h((ule,Fh)=>{"use strict";Fh.exports=mB;Fh.exports.append=$_;var fB=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function $_(r,e){if(typeof r!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var t=Array.isArray(e)?e:B_(String(e)),n=0;n<t.length;n++)if(!fB.test(t[n]))throw new TypeError("field argument contains an invalid header name");if(r==="*")return r;var i=r,s=B_(r.toLowerCase());if(t.indexOf("*")!==-1||s.indexOf("*")!==-1)return"*";for(var a=0;a<t.length;a++){var o=t[a].toLowerCase();s.indexOf(o)===-1&&(s.push(o),i=i?i+", "+t[a]:t[a])}return i}function B_(r){for(var e=0,t=[],n=0,i=0,s=r.length;i<s;i++)switch(r.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:t.push(r.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return t.push(r.substring(n,e)),t}function mB(r,e){if(!r||!r.getHeader||!r.setHeader)throw new TypeError("res argument is required");var t=r.getHeader("Vary")||"",n=Array.isArray(t)?t.join(", "):String(t);(t=$_(n,e))&&r.setHeader("Vary",t)}});var Q_=h((dle,W_)=>{"use strict";var V_=T_(),hB=ms(),Uh=Ma()("express"),yB=to(),bB=ro(),gB=require("node:http"),vB=Fa(),H_=gs(),z_=require("node:path"),xB=require("node:path").isAbsolute,Gh=La(),EB=K_().sign,SB=Mn().normalizeType,wB=Mn().normalizeTypes,IB=Mn().setCharset,_B=R_(),kB=qh(),TB=z_.extname,AB=z_.resolve,KB=Jh(),{Buffer:Tl}=require("node:buffer"),Oe=Object.create(gB.ServerResponse.prototype);W_.exports=Oe;Oe.status=function(e){if(!Number.isInteger(e))throw new TypeError(`Invalid status code: ${JSON.stringify(e)}. Status code must be an integer.`);if(e<100||e>999)throw new RangeError(`Invalid status code: ${JSON.stringify(e)}. Status code must be greater than 99 and less than 1000.`);return this.statusCode=e,this};Oe.links=function(r){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(r).map(function(t){return Array.isArray(r[t])?r[t].map(function(n){return`<${n}>; rel="${t}"`}).join(", "):`<${r[t]}>; rel="${t}"`}).join(", "))};Oe.send=function(e){var t=e,n,i=this.req,s,a=this.app;switch(typeof t){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(t===null)t="";else if(ArrayBuffer.isView(t))this.get("Content-Type")||this.type("bin");else return this.json(t);break}typeof t=="string"&&(n="utf8",s=this.get("Content-Type"),typeof s=="string"&&this.set("Content-Type",IB(s,"utf-8")));var o=a.get("etag fn"),c=!this.get("ETag")&&typeof o=="function",l;t!==void 0&&(Tl.isBuffer(t)?l=t.length:!c&&t.length<1e3?l=Tl.byteLength(t,n):(t=Tl.from(t,n),n=void 0,l=t.length),this.set("Content-Length",l));var u;return c&&l!==void 0&&(u=o(t,n))&&this.set("ETag",u),i.fresh&&this.status(304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),t=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),t=""),i.method==="HEAD"?this.end():this.end(t,n),this};Oe.json=function(e){var t=this.app,n=t.get("json escape"),i=t.get("json replacer"),s=t.get("json spaces"),a=Y_(e,i,s,n);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(a)};Oe.jsonp=function(e){var t=this.app,n=t.get("json escape"),i=t.get("json replacer"),s=t.get("json spaces"),a=Y_(e,i,s,n),o=this.req.query[t.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(o)&&(o=o[0]),typeof o=="string"&&o.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),o=o.replace(/[^\[\]\w$.]/g,""),a===void 0?a="":typeof a=="string"&&(a=a.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),a="/**/ typeof "+o+" === 'function' && "+o+"("+a+");"),this.send(a)};Oe.sendStatus=function(e){var t=Gh.message[e]||String(e);return this.status(e),this.type("txt"),this.send(t)};Oe.sendFile=function(e,t,n){var i=n,s=this.req,a=this,o=s.next,c=t||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof t=="function"&&(i=t,c={}),!c.root&&!xB(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var l=encodeURI(e);c.etag=this.app.enabled("etag");var u=kB(s,l,c);jB(a,u,c,function(d){if(i)return i(d);if(d&&d.code==="EISDIR")return o();d&&d.code!=="ECONNABORTED"&&d.syscall!=="write"&&o(d)})};Oe.download=function(e,t,n,i){var s=i,a=t,o=n||null;typeof t=="function"?(s=t,a=null,o=null):typeof n=="function"&&(s=n,o=null),typeof t=="object"&&(typeof n=="function"||n===void 0)&&(a=null,o=t);var c={"Content-Disposition":V_(a||e)};if(o&&o.headers)for(var l=Object.keys(o.headers),u=0;u<l.length;u++){var d=l[u];d.toLowerCase()!=="content-disposition"&&(c[d]=o.headers[d])}o=Object.create(o),o.headers=c;var p=o.root?e:AB(e);return this.sendFile(p,o,s)};Oe.contentType=Oe.type=function(e){var t=e.indexOf("/")===-1?H_.contentType(e)||"application/octet-stream":e;return this.set("Content-Type",t)};Oe.format=function(r){var e=this.req,t=e.next,n=Object.keys(r).filter(function(s){return s!=="default"}),i=n.length>0?e.accepts(n):!1;return this.vary("Accept"),i?(this.set("Content-Type",SB(i).value),r[i](e,this,t)):r.default?r.default(e,this,t):t(hB(406,{types:wB(n).map(function(s){return s.value})})),this};Oe.attachment=function(e){return e&&this.type(TB(e)),this.set("Content-Disposition",V_(e)),this};Oe.append=function(e,t){var n=this.get(e),i=t;return n&&(i=Array.isArray(n)?n.concat(t):Array.isArray(t)?[n].concat(t):[n,t]),this.set(e,i)};Oe.set=Oe.header=function(e,t){if(arguments.length===2){var n=Array.isArray(t)?t.map(String):String(t);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");n=H_.contentType(n)}this.setHeader(e,n)}else for(var i in e)this.set(i,e[i]);return this};Oe.get=function(r){return this.getHeader(r)};Oe.clearCookie=function(e,t){let n={path:"/",...t,expires:new Date(1)};return delete n.maxAge,this.cookie(e,"",n)};Oe.cookie=function(r,e,t){var n={...t},i=this.req.secret,s=n.signed;if(s&&!i)throw new Error('cookieParser("secret") required for signed cookies');var a=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(s&&(a="s:"+EB(a,i)),n.maxAge!=null){var o=n.maxAge-0;isNaN(o)||(n.expires=new Date(Date.now()+o),n.maxAge=Math.floor(o/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",_B.serialize(r,String(a),n)),this};Oe.location=function(e){return this.set("Location",yB(e))};Oe.redirect=function(e){var t=e,n,i=302;arguments.length===2&&(i=arguments[0],t=arguments[1]),t||Uh("Provide a url argument"),typeof t!="string"&&Uh("Url must be a string"),typeof i!="number"&&Uh("Status must be a number"),t=this.location(t).get("Location"),this.format({text:function(){n=Gh.message[i]+". Redirecting to "+t},html:function(){var s=bB(t);n="<p>"+Gh.message[i]+". Redirecting to "+s+"</p>"},default:function(){n=""}}),this.status(i),this.set("Content-Length",Tl.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};Oe.vary=function(r){return KB(this,r),this};Oe.render=function(e,t,n){var i=this.req.app,s=n,a=t||{},o=this.req,c=this;typeof t=="function"&&(s=t,a={}),a._locals=c.locals,s=s||function(l,u){if(l)return o.next(l);c.send(u)},i.render(e,a,s)};function jB(r,e,t,n){var i=!1,s;function a(){if(!i){i=!0;var f=new Error("Request aborted");f.code="ECONNABORTED",n(f)}}function o(){if(!i){i=!0;var f=new Error("EISDIR, read");f.code="EISDIR",n(f)}}function c(f){i||(i=!0,n(f))}function l(){i||(i=!0,n())}function u(){s=!1}function d(f){if(f&&f.code==="ECONNRESET")return a();if(f)return c(f);i||setImmediate(function(){if(s!==!1&&!i){a();return}i||(i=!0,n())})}function p(){s=!0}e.on("directory",o),e.on("end",l),e.on("error",c),e.on("file",u),e.on("stream",p),vB(r,d),t.headers&&e.on("headers",function(m){for(var y=t.headers,b=Object.keys(y),g=0;g<b.length;g++){var x=b[g];m.setHeader(x,y[x])}}),e.pipe(r)}function Y_(r,e,t,n){var i=e||t?JSON.stringify(r,e,t):JSON.stringify(r);return n&&typeof i=="string"&&(i=i.replace(/[<>&]/g,function(s){switch(s.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return s}})),i}});var Z_=h((ple,X_)=>{"use strict";var OB=to(),RB=ro(),Bh=no(),CB=require("path").resolve,DB=qh(),PB=require("url");X_.exports=MB;function MB(r,e){if(!r)throw new TypeError("root path required");if(typeof r!="string")throw new TypeError("root path must be a string");var t=Object.create(e||null),n=t.fallthrough!==!1,i=t.redirect!==!1,s=t.setHeaders;if(s&&typeof s!="function")throw new TypeError("option setHeaders must be function");t.maxage=t.maxage||t.maxAge||0,t.root=CB(r);var a=i?FB():qB();return function(c,l,u){if(c.method!=="GET"&&c.method!=="HEAD"){if(n)return u();l.statusCode=405,l.setHeader("Allow","GET, HEAD"),l.setHeader("Content-Length","0"),l.end();return}var d=!n,p=Bh.original(c),f=Bh(c).pathname;f==="/"&&p.pathname.substr(-1)!=="/"&&(f="");var m=DB(c,f,t);m.on("directory",a),s&&m.on("headers",s),n&&m.on("file",function(){d=!0}),m.on("error",function(b){if(d||!(b.statusCode<500)){u(b);return}u()}),m.pipe(l)}}function LB(r){for(var e=0;e<r.length&&r.charCodeAt(e)===47;e++);return e>1?"/"+r.substr(e):r}function NB(r,e){return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>`+r+`</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}function qB(){return function(){this.error(404)}}function FB(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var t=Bh.original(this.req);t.path=null,t.pathname=LB(t.pathname+"/");var n=OB(PB.format(t)),i=NB("Redirecting","Redirecting to "+RB(n));e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(i)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",n),e.end(i)}}});var ak=h((sr,sk)=>{"use strict";var Al=L1(),JB=require("node:events").EventEmitter,ek=q1(),tk=$I(),rk=Ih(),nk=x_(),ik=Q_();sr=sk.exports=UB;function UB(){var r=function(e,t,n){r.handle(e,t,n)};return ek(r,JB.prototype,!1),ek(r,tk,!1),r.request=Object.create(nk,{app:{configurable:!0,enumerable:!0,writable:!0,value:r}}),r.response=Object.create(ik,{app:{configurable:!0,enumerable:!0,writable:!0,value:r}}),r.init(),r}sr.application=tk;sr.request=nk;sr.response=ik;sr.Route=rk.Route;sr.Router=rk;sr.json=Al.json;sr.raw=Al.raw;sr.static=Z_();sr.text=Al.text;sr.urlencoded=Al.urlencoded});var $h=h((fle,ok)=>{"use strict";ok.exports=ak()});var Vh,ck,lk=L(()=>{"use strict";Vh=["search","context","summarize","import","export"],ck=["workflow","search_params","examples","all"]});function GB(){return typeof __dirname<"u"?__dirname:(0,se.dirname)((0,uk.fileURLToPath)(XB.url))}function $B(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let r=(0,se.join)((0,Hh.homedir)(),".claude-mem"),e=(0,se.join)(r,"settings.json");try{if((0,oo.existsSync)(e)){let t=JSON.parse((0,oo.readFileSync)(e,"utf-8")),n=t.env??t;if(n.CLAUDE_MEM_DATA_DIR)return n.CLAUDE_MEM_DATA_DIR}}catch{}return r}function jl(){return(0,se.join)(BB,"..")}var se,Hh,oo,uk,XB,BB,Re,Kl,ble,VB,HB,zB,YB,WB,zh,gle,QB,dk,vle,xle,Ele,Sle,Be,dn=L(()=>{"use strict";se=require("path"),Hh=require("os"),oo=require("fs"),uk=require("url");ve();XB={};BB=GB();Re=$B(),Kl=process.env.CLAUDE_CONFIG_DIR||(0,se.join)((0,Hh.homedir)(),".claude"),ble=(0,se.join)(Kl,"plugins","marketplaces","thedotmack"),VB=(0,se.join)(Re,"archives"),HB=(0,se.join)(Re,"logs"),zB=(0,se.join)(Re,"trash"),YB=(0,se.join)(Re,"backups"),WB=(0,se.join)(Re,"modes"),zh=(0,se.join)(Re,"settings.json"),gle=(0,se.join)(Re,"claude-mem.db"),QB=(0,se.join)(Re,"vector-db"),dk=(0,se.join)(Re,"observer-sessions"),vle=(0,se.basename)(dk),xle=(0,se.join)(Kl,"settings.json"),Ele=(0,se.join)(Kl,"commands"),Sle=(0,se.join)(Kl,"CLAUDE.md");Be={dataDir:()=>Re,workerPid:()=>(0,se.join)(Re,"worker.pid"),serverBetaPid:()=>(0,se.join)(Re,".server-beta.pid"),serverBetaPort:()=>(0,se.join)(Re,".server-beta.port"),serverBetaRuntime:()=>(0,se.join)(Re,".server-beta.runtime.json"),settings:()=>(0,se.join)(Re,"settings.json"),database:()=>(0,se.join)(Re,"claude-mem.db"),chroma:()=>(0,se.join)(Re,"chroma"),combinedCerts:()=>(0,se.join)(Re,"combined_certs.pem"),transcriptsConfig:()=>(0,se.join)(Re,"transcript-watch.json"),transcriptsState:()=>(0,se.join)(Re,"transcript-watch-state.json"),corpora:()=>(0,se.join)(Re,"corpora"),supervisorRegistry:()=>(0,se.join)(Re,"supervisor.json"),envFile:()=>(0,se.join)(Re,".env"),logsDir:()=>HB,archives:()=>VB,trash:()=>zB,backups:()=>YB,modes:()=>WB,vectorDb:()=>QB,observerSessions:()=>dk}});var pn,pk,Yh,Wh,_,ve=L(()=>{"use strict";pn=require("fs"),pk=require("path");dn();Yh=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(Yh||{}),Wh=class{level=null;useColor;logFilePath=null;logFileInitialized=!1;constructor(){this.useColor=process.stdout.isTTY??!1}ensureLogFileInitialized(){if(!this.logFileInitialized){this.logFileInitialized=!0;try{let e=Be.logsDir();(0,pn.existsSync)(e)||(0,pn.mkdirSync)(e,{recursive:!0});let t=new Date().toISOString().split("T")[0];this.logFilePath=(0,pk.join)(e,`claude-mem-${t}.log`)}catch(e){console.error("[LOGGER] Failed to initialize log file:",e instanceof Error?e.message:String(e)),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let e=Be.settings();if((0,pn.existsSync)(e)){let t=(0,pn.readFileSync)(e,"utf-8"),i=(JSON.parse(t).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=Yh[i]??1}else this.level=1}catch(e){console.error("[LOGGER] Failed to load log level from settings:",e instanceof Error?e.message:String(e)),this.level=1}return this.level}correlationId(e,t){return`obs-${e}-${t}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message}
${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let t=Object.keys(e);return t.length===0?"{}":t.length<=3?JSON.stringify(e):`{${t.length} keys: ${t.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,t){if(!t)return e;let n=t;if(typeof t=="string")try{n=JSON.parse(t)}catch{n=t}if(e==="Bash"&&n.command)return`${e}(${n.command})`;if(n.file_path)return`${e}(${n.file_path})`;if(n.notebook_path)return`${e}(${n.notebook_path})`;if(e==="Glob"&&n.pattern)return`${e}(${n.pattern})`;if(e==="Grep"&&n.pattern)return`${e}(${n.pattern})`;if(n.url)return`${e}(${n.url})`;if(n.query)return`${e}(${n.query})`;if(e==="Task"){if(n.subagent_type)return`${e}(${n.subagent_type})`;if(n.description)return`${e}(${n.description})`}return e==="Skill"&&n.skill?`${e}(${n.skill})`:e==="LSP"&&n.operation?`${e}(${n.operation})`:e}formatTimestamp(e){let t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0"),s=String(e.getHours()).padStart(2,"0"),a=String(e.getMinutes()).padStart(2,"0"),o=String(e.getSeconds()).padStart(2,"0"),c=String(e.getMilliseconds()).padStart(3,"0");return`${t}-${n}-${i} ${s}:${a}:${o}.${c}`}log(e,t,n,i,s){if(e<this.getLevel())return;this.ensureLogFileInitialized();let a=this.formatTimestamp(new Date),o=Yh[e].padEnd(5),c=t.padEnd(6),l="";i?.correlationId?l=`[${i.correlationId}] `:i?.sessionId&&(l=`[session-${i.sessionId}] `);let u="";if(s!=null)if(s instanceof Error)u=this.getLevel()===0?`
${s.message}
${s.stack}`:` ${s.message}`;else if(this.getLevel()===0&&typeof s=="object")try{u=`
`+JSON.stringify(s,null,2)}catch{u=" "+this.formatData(s)}else u=" "+this.formatData(s);let d="";if(i){let{sessionId:f,memorySessionId:m,correlationId:y,...b}=i;Object.keys(b).length>0&&(d=` {${Object.entries(b).map(([x,I])=>`${x}=${I}`).join(", ")}}`)}let p=`[${a}] [${o}] [${c}] ${l}${n}${d}${u}`;if(this.logFilePath)try{(0,pn.appendFileSync)(this.logFilePath,p+`
`,"utf8")}catch(f){process.stderr.write(`[LOGGER] Failed to write to log file: ${f instanceof Error?f.message:String(f)}
`)}else process.stderr.write(p+`
`)}debug(e,t,n,i){this.log(0,e,t,n,i)}info(e,t,n,i){this.log(1,e,t,n,i)}warn(e,t,n,i){this.log(2,e,t,n,i)}error(e,t,n,i){this.log(3,e,t,n,i)}dataIn(e,t,n,i){this.info(e,`\u2192 ${t}`,n,i)}dataOut(e,t,n,i){this.info(e,`\u2190 ${t}`,n,i)}success(e,t,n,i){this.info(e,`\u2713 ${t}`,n,i)}failure(e,t,n,i){this.error(e,`\u2717 ${t}`,n,i)}timing(e,t,n,i){this.info(e,`\u23F1 ${t}`,i,{duration:`${n}ms`})}happyPathError(e,t,n,i,s=""){let l=((new Error().stack||"").split(`
`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),u=l?`${l[1].split("/").pop()}:${l[2]}`:"unknown",d={...n,location:u};return this.warn(e,`[HAPPY-PATH] ${t}`,d,i),s}},_=new Wh});var hk=h((kle,mk)=>{"use strict";var fk=Object.getOwnPropertySymbols,ZB=Object.prototype.hasOwnProperty,e9=Object.prototype.propertyIsEnumerable;function t9(r){if(r==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(r)}function r9(){try{if(!Object.assign)return!1;var r=new String("abc");if(r[5]="de",Object.getOwnPropertyNames(r)[0]==="5")return!1;for(var e={},t=0;t<10;t++)e["_"+String.fromCharCode(t)]=t;var n=Object.getOwnPropertyNames(e).map(function(s){return e[s]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(s){i[s]=s}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}mk.exports=r9()?Object.assign:function(r,e){for(var t,n=t9(r),i,s=1;s<arguments.length;s++){t=Object(arguments[s]);for(var a in t)ZB.call(t,a)&&(n[a]=t[a]);if(fk){i=fk(t);for(var o=0;o<i.length;o++)e9.call(t,i[o])&&(n[i[o]]=t[i[o]])}}return n}});var bk=h((Tle,yk)=>{(function(){"use strict";var r=hk(),e=Jh(),t={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function n(m){return typeof m=="string"||m instanceof String}function i(m,y){if(Array.isArray(y)){for(var b=0;b<y.length;++b)if(i(m,y[b]))return!0;return!1}else return n(y)?m===y:y instanceof RegExp?y.test(m):!!y}function s(m,y){var b=y.headers.origin,g=[],x;return!m.origin||m.origin==="*"?g.push([{key:"Access-Control-Allow-Origin",value:"*"}]):n(m.origin)?(g.push([{key:"Access-Control-Allow-Origin",value:m.origin}]),g.push([{key:"Vary",value:"Origin"}])):(x=i(b,m.origin),g.push([{key:"Access-Control-Allow-Origin",value:x?b:!1}]),g.push([{key:"Vary",value:"Origin"}])),g}function a(m){var y=m.methods;return y.join&&(y=m.methods.join(",")),{key:"Access-Control-Allow-Methods",value:y}}function o(m){return m.credentials===!0?{key:"Access-Control-Allow-Credentials",value:"true"}:null}function c(m,y){var b=m.allowedHeaders||m.headers,g=[];return b?b.join&&(b=b.join(",")):(b=y.headers["access-control-request-headers"],g.push([{key:"Vary",value:"Access-Control-Request-Headers"}])),b&&b.length&&g.push([{key:"Access-Control-Allow-Headers",value:b}]),g}function l(m){var y=m.exposedHeaders;if(y)y.join&&(y=y.join(","));else return null;return y&&y.length?{key:"Access-Control-Expose-Headers",value:y}:null}function u(m){var y=(typeof m.maxAge=="number"||m.maxAge)&&m.maxAge.toString();return y&&y.length?{key:"Access-Control-Max-Age",value:y}:null}function d(m,y){for(var b=0,g=m.length;b<g;b++){var x=m[b];x&&(Array.isArray(x)?d(x,y):x.key==="Vary"&&x.value?e(y,x.value):x.value&&y.setHeader(x.key,x.value))}}function p(m,y,b,g){var x=[],I=y.method&&y.method.toUpperCase&&y.method.toUpperCase();I==="OPTIONS"?(x.push(s(m,y)),x.push(o(m)),x.push(a(m)),x.push(c(m,y)),x.push(u(m)),x.push(l(m)),d(x,b),m.preflightContinue?g():(b.statusCode=m.optionsSuccessStatus,b.setHeader("Content-Length","0"),b.end())):(x.push(s(m,y)),x.push(o(m)),x.push(l(m)),d(x,b),g())}function f(m){var y=null;return typeof m=="function"?y=m:y=function(b,g){g(null,m)},function(g,x,I){y(g,function(k,M){if(k)I(k);else{var U=r({},t,M),re=null;U.origin&&typeof U.origin=="function"?re=U.origin:U.origin&&(re=function(Ke,ie){ie(null,U.origin)}),re?re(g.headers.origin,function(Ke,ie){Ke||!ie?I(Ke):(U.origin=ie,p(U,g,x,I))}):I()}})}}yk.exports=f})()});function Xh(r,e={}){let t=[];e.includeCors!==!1&&t.push(Ol()),t.push(Qh.default.json({limit:"5mb"})),t.push((s,a,o)=>{let l=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(y=>s.path.endsWith(y)),u=s.path==="/api/logs";if(s.path.startsWith("/health")||s.path==="/"||l||u)return o();let d=Date.now(),p=`${s.method}-${Date.now()}`,f=r(s.method,s.path,s.body);_.debug("HTTP",`\u2192 ${s.method} ${s.path}`,{requestId:p},f);let m=a.send.bind(a);a.send=function(y){let b=Date.now()-d;return _.debug("HTTP",`\u2190 ${a.statusCode} ${s.path}`,{requestId:p,duration:`${b}ms`}),m(y)},o()});let n=jl(),i=vk.default.join(n,"plugin","ui");return t.push(Qh.default.static(i)),t}function Ol(){return(0,gk.default)({origin:(r,e)=>{!r||r.startsWith("http://localhost:")||r.startsWith("http://127.0.0.1:")?e(null,!0):e(new Error("CORS not allowed"))},methods:["GET","HEAD","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","X-Requested-With"],credentials:!1})}function co(r,e,t){let n=r.ip||r.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){_.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:r.path,clientIp:n,method:r.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}t()}function Zh(r,e,t){if(!t||Object.keys(t).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=t.tool_name||"?",i=t.tool_input;return`tool=${_.formatTool(n,i)}`}return e.includes("/summarize")?"requesting summary":""}var Qh,gk,vk,xk=L(()=>{"use strict";Qh=Et($h(),1),gk=Et(bk(),1),vk=Et(require("path"),1);dn();ve()});var Ek=L(()=>{"use strict";xk()});function Sk(r,e,t,n){let i={error:r,message:e};return t&&(i.code=t),n&&(i.details=n),i}function Ik(r,e){e.status(404).json(Sk("NotFound",`Cannot ${r.method} ${r.path}`))}var Os,wk,_k=L(()=>{"use strict";ve();Os=class extends Error{constructor(t,n=500,i,s){super(t);this.statusCode=n;this.code=i;this.details=s;this.name="AppError"}statusCode;code;details};wk=(r,e,t,n)=>{let i=r instanceof Os?r.statusCode:500;_.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:r.message,code:r instanceof Os?r.code:void 0},r);let s=Sk(r.name||"Error",r.message,r instanceof Os?r.code:void 0,r instanceof Os?r.details:void 0);t.status(i).json(s)}});var kk=L(()=>{"use strict"});var Tk,Ak,ey=L(()=>{"use strict";Tk=["CLAUDECODE_","CLAUDE_CODE_"],Ak=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"])});function ar(r){if(!Number.isInteger(r)||r<0||r===0)return!1;try{return process.kill(r,0),!0}catch(e){if(e instanceof Error){let t=e.code;return t==="EPERM"?!0:(_.debug("SYSTEM","PID check failed",{pid:r,code:t}),!1)}return _.warn("SYSTEM","PID check threw non-Error",{pid:r,error:String(e)}),!1}}function sy(r){if(!Number.isInteger(r)||r<=0)return null;if(process.platform==="linux")try{let e=(0,Ur.readFileSync)(`/proc/${r}/stat`,"utf-8"),t=e.lastIndexOf(") ");if(t<0)return null;let i=e.slice(t+2).split(" ")[19];return i&&/^\d+$/.test(i)?i:null}catch(e){return _.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:r,error:e instanceof Error?e.message:String(e)}),null}if(process.platform==="win32")return null;try{let e=(0,Kk.spawnSync)("ps",["-p",String(r),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...process.env,LC_ALL:"C",LANG:"C"}});if(e.status!==0)return null;let t=e.stdout.trim();return t.length>0?t:null}catch(e){return _.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:r,error:e instanceof Error?e.message:String(e)}),null}}function Nn(r){if(!r||!ar(r.pid))return!1;if(!r.startToken)return!0;let e=sy(r.pid);if(e===null)return!0;let t=e===r.startToken;return t||_.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:r.pid,stored:r.startToken,current:e}),t}function Rl(){return ty||(ty=new iy),ty}function ry(){let r=a9.shift();r&&r()}var Kk,Ur,ny,n9,i9,s9,iy,ty,a9,Rs=L(()=>{"use strict";Kk=require("child_process");kk();Ur=require("fs"),ny=Et(require("path"),1);ve();ey();dn();n9=5e3,i9=1e3,s9=Be.supervisorRegistry();iy=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=s9){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,Ur.mkdirSync)(ny.default.dirname(this.registryPath),{recursive:!0}),!(0,Ur.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,Ur.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[i,s]of Object.entries(n))this.entries.set(i,s)}catch(t){t instanceof Error?_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},t):_.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(t)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&_.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}register(e,t,n){this.initialize(),this.entries.set(e,t),n&&this.runtimeProcesses.set(e,n),this.persist()}unregister(e){this.initialize();let t=this.entries.get(e);this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist(),t?.type==="sdk"&&ry()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([e,t])=>({id:e,...t})).sort((e,t)=>{let n=Date.parse(e.startedAt),i=Date.parse(t.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(i)?0:i)})}getBySession(e){let t=String(e);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===t)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}getByPid(e){return this.getAll().filter(t=>t.pid===e)}pruneDeadEntries(){this.initialize();let e=0,t=0;for(let[n,i]of this.entries)ar(i.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),e+=1,i.type==="sdk"&&(t+=1));e>0&&this.persist();for(let n=0;n<t;n+=1)ry();return e}async reapSession(e){this.initialize();let t=this.getBySession(e);if(t.length===0)return 0;let n=typeof e=="number"?e:Number(e)||void 0;_.info("SYSTEM",`Reaping ${t.length} process(es) for session ${e}`,{sessionId:n,pids:t.map(o=>o.pid)});let i=t.filter(o=>ar(o.pid));for(let o of i)try{typeof o.pgid=="number"&&process.platform!=="win32"?process.kill(-o.pgid,"SIGTERM"):process.kill(o.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGTERM session process PID ${o.pid}`,{pid:o.pid,pgid:o.pgid},c):_.warn("SYSTEM",`Failed to SIGTERM session process PID ${o.pid} (non-Error)`,{pid:o.pid,pgid:o.pgid,error:String(c)})}let s=Date.now()+n9;for(;Date.now()<s&&i.filter(c=>ar(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100));let a=i.filter(o=>ar(o.pid));for(let o of a){_.warn("SYSTEM",`Session process PID ${o.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:o.pid,pgid:o.pgid,sessionId:n});try{typeof o.pgid=="number"&&process.platform!=="win32"?process.kill(-o.pgid,"SIGKILL"):process.kill(o.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&_.debug("SYSTEM",`Failed to SIGKILL session process PID ${o.pid}`,{pid:o.pid,pgid:o.pgid},c):_.warn("SYSTEM",`Failed to SIGKILL session process PID ${o.pid} (non-Error)`,{pid:o.pid,pgid:o.pgid,error:String(c)})}}if(a.length>0){let o=Date.now()+i9;for(;Date.now()<o&&a.filter(l=>ar(l.pid)).length!==0;)await new Promise(l=>setTimeout(l,100))}for(let o of t)this.entries.delete(o.id),this.runtimeProcesses.delete(o.id);this.persist();for(let o of t)o.type==="sdk"&&ry();return _.info("SYSTEM",`Reaped ${t.length} process(es) for session ${e}`,{sessionId:n,reaped:t.length}),t.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};(0,Ur.mkdirSync)(ny.default.dirname(this.registryPath),{recursive:!0}),(0,Ur.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},ty=null;a9=[]});var jk,Ok=L(()=>{"use strict";jk={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,WORKER_STARTUP_WAIT:1e3,PRE_RESTART_SETTLE_DELAY:2e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});async function Lk(r){let e=r.currentPid??process.pid,t=r.pidFilePath??c9,n=r.registry.getAll(),i=[...n].filter(a=>a.pid!==e).sort((a,o)=>Date.parse(o.startedAt)-Date.parse(a.startedAt));for(let a of i){if(!ar(a.pid)){r.registry.unregister(a.id);continue}try{await Ck(a,"SIGTERM")}catch(o){o instanceof Error?_.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:a.pid,pgid:a.pgid,type:a.type},o):_.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:a.pid,pgid:a.pgid,type:a.type,error:String(o)})}}await Rk(i,5e3);let s=i.filter(a=>ar(a.pid));for(let a of s)try{await Ck(a,"SIGKILL")}catch(o){o instanceof Error?_.debug("SYSTEM","Failed to force kill child process",{pid:a.pid,pgid:a.pgid,type:a.type},o):_.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:a.pid,pgid:a.pgid,type:a.type,error:String(o)})}await Rk(s,1e3);for(let a of i)r.registry.unregister(a.id);for(let a of n.filter(o=>o.pid===e))r.registry.unregister(a.id);try{(0,Pk.rmSync)(t,{force:!0})}catch(a){a instanceof Error?_.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:t},a):_.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:t,error:String(a)})}r.registry.pruneDeadEntries()}async function Rk(r,e){let t=Date.now()+e;for(;Date.now()<t;){if(r.filter(i=>ar(i.pid)).length===0)return;await new Promise(i=>setTimeout(i,100))}}async function Ck(r,e){let{pid:t,pgid:n}=r;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,e);return}catch(a){if((a instanceof Error?a.code:void 0)!=="ESRCH")throw a}try{process.kill(t,e)}catch(a){if((a instanceof Error?a.code:void 0)!=="ESRCH")throw a}return}if(e==="SIGTERM"){try{process.kill(t,e)}catch(a){if(a instanceof Error&&a.code==="ESRCH")return;throw a}return}let i=await l9();if(i){await new Promise((a,o)=>{i(t,e,c=>{if(!c){a();return}if(c.code==="ESRCH"){a();return}o(c)})});return}let s=["/PID",String(t),"/T"];e==="SIGKILL"&&s.push("/F"),await o9("taskkill",s,{timeout:jk.POWERSHELL_COMMAND,windowsHide:!0})}async function l9(){let r="tree-kill";try{let e=await import(r);return e.default??e}catch(e){return _.debug("SYSTEM","tree-kill module not available, using fallback",{},e instanceof Error?e:void 0),null}}var Dk,Pk,Mk,o9,c9,Nk=L(()=>{"use strict";Dk=require("child_process"),Pk=require("fs"),Mk=require("util");ve();Ok();Rs();dn();o9=(0,Mk.promisify)(Dk.execFile),c9=Be.workerPid()});function u9(){let e=Rl().pruneDeadEntries();e>0&&_.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function Fk(){Cs===null&&(Cs=setInterval(u9,qk),Cs.unref(),_.debug("SYSTEM","Health checker started",{intervalMs:qk}))}function Jk(){Cs!==null&&(clearInterval(Cs),Cs=null,_.debug("SYSTEM","Health checker stopped"))}var qk,Cs,Uk=L(()=>{"use strict";ve();Rs();qk=3e4,Cs=null});function Gk(){return p9}function f9(r={}){let e=r.pidFilePath??d9;if(!(0,ji.existsSync)(e))return"missing";let t=null;try{t=JSON.parse((0,ji.readFileSync)(e,"utf-8"))}catch(i){return i instanceof Error?_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},i):_.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(i)}),(0,ji.rmSync)(e,{force:!0}),"invalid"}return Nn(t)&&t?((r.logAlive??!0)&&_.info("SYSTEM","Worker already running (PID alive)",{existingPid:t.pid,existingPort:t.port,startedAt:t.startedAt}),"alive"):(_.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:t?.pid,port:t?.port,startedAt:t?.startedAt}),(0,ji.rmSync)(e,{force:!0}),"stale")}var ji,d9,ay,p9,Bk=L(()=>{"use strict";ji=require("fs");ve();Rs();Nk();Uk();dn();d9=Be.workerPid(),ay=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),f9({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,Fk()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let t=async n=>{if(this.shutdownInitiated){_.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,_.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(i){i instanceof Error?_.error("SYSTEM","Error during shutdown",{},i):_.error("SYSTEM","Error during shutdown (non-Error)",{error:String(i)});try{await this.stop()}catch(s){s instanceof Error?_.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):_.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{t("SIGTERM")}),process.on("SIGINT",()=>{t("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{_.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{t("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}Jk(),this.stopPromise=Lk({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,t,n){this.registry.register(e,t,n)}unregisterProcess(e){this.registry.unregister(e)}getRegistry(){return this.registry}},p9=new ay(Rl())});function oy(r,e,t){r.on("finish",async()=>{try{await t()}finally{process.exit(0)}}),r.json(e)}var $k=L(()=>{"use strict"});function cy(r,e=Date.now){return Math.max(0,Math.floor((e()-r)/1e3))}var Vk=L(()=>{"use strict"});var ly,Hk,pue,zk=L(()=>{"use strict";ly=class{entries=new Map;set(e){if(!e||typeof e!="object")return;let t=e.rateLimitType??"default";this.entries.set(t,{...e,observedAt:Date.now()})}get(e){return e?this.entries.get(e):this.entries.get("default")}getAll(){return Array.from(this.entries.values()).sort((e,t)=>t.observedAt-e.observedAt)}getMostRecentByWindow(){return{five_hour:this.entries.get("five_hour"),seven_day:this.entries.get("seven_day"),seven_day_opus:this.entries.get("seven_day_opus"),seven_day_sonnet:this.entries.get("seven_day_sonnet"),overage:this.entries.get("overage")}}get size(){return this.entries.size}clear(){this.entries.clear()}},Hk=new ly,pue=900*1e3});var Qk,Xk,dy,lo,Zk,m9,uy,Yk,h9,Wk,Cl,eT=L(()=>{"use strict";Qk=Et($h(),1),Xk=Et(require("http"),1),dy=Et(require("fs"),1),lo=Et(require("path"),1);lk();ve();Ek();_k();Bk();Rs();ey();$k();Vk();zk();Zk=lo.default.resolve(__dirname,"../skills/mem-search"),m9=lo.default.join(Zk,"operations"),uy=lo.default.join(Zk,"SKILL.md"),Yk=(()=>{try{let r=dy.readFileSync(uy,"utf-8");return _.info("SYSTEM","Cached SKILL.md at boot",{path:uy,bytes:Buffer.byteLength(r,"utf-8")}),r}catch(r){return _.debug("SYSTEM","SKILL.md not present at boot, /api/instructions will 404 for topic queries",{path:uy,message:r instanceof Error?r.message:String(r)}),null}})(),h9=(()=>{let r=new Map;for(let e of Vh){let t=lo.default.join(m9,`${e}.md`);try{r.set(e,dy.readFileSync(t,"utf-8"))}catch(n){_.debug("SYSTEM","Operation instruction file not present at boot",{path:t,message:n instanceof Error?n.message:String(n)})}}return r.size>0&&_.info("SYSTEM","Cached operation instruction files at boot",{count:r.size,operations:Array.from(r.keys())}),r})(),Wk="13.3.0",Cl=class{app;server=null;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,Qk.default)(),this.setupCors(),this.setupPreBodyParserRoutes(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}async listen(e,t){return new Promise((n,i)=>{let s=Xk.default.createServer(this.app);this.server=s;let a=c=>{s.off("listening",o),i(c)},o=()=>{s.off("error",a),_.info("SYSTEM","HTTP server started",{host:t,port:e,pid:process.pid}),n()};s.once("error",a),s.once("listening",o),s.listen(e,t)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,t)=>{this.server.close(n=>n?t(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,_.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(Ik),this.app.use(wk)}setupMiddleware(){Xh(Zh,{includeCors:!1}).forEach(t=>this.app.use(t))}setupCors(){this.app.use(Ol())}setupPreBodyParserRoutes(){this.options.preBodyParserRoutes?.forEach(e=>e.setupRoutes(this.app))}setupCoreRoutes(){this.app.get("/api/health",async(e,t)=>{let n=this.options.getQueueHealth?await this.options.getQueueHealth():null,i=n?.engine==="bullmq"&&n.redis.status==="error";t.status(i?503:200).json({status:i?"degraded":"ok",...this.options.runtime?{runtime:this.options.runtime}:{},version:Wk,workerPath:this.options.workerPath,uptime:cy(this.startTime),managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.options.getInitializationComplete(),mcpReady:this.options.getMcpReady(),ai:this.options.getAiStatus(),rateLimits:Hk.getMostRecentByWindow(),...n?{queue:n}:{}})}),this.app.get("/api/readiness",(e,t)=>{this.options.getInitializationComplete()?t.status(200).json({status:"ready",mcpReady:this.options.getMcpReady()}):t.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(e,t)=>{t.status(200).json({version:Wk})}),this.app.get("/api/instructions",(e,t)=>{let n=e.query.topic||"all",i=e.query.operation;if(n&&!ck.includes(n))return t.status(400).json({error:"Invalid topic"});if(i&&!Vh.includes(i))return t.status(400).json({error:"Invalid operation"});if(i){let a=h9.get(i);return a===void 0?(_.debug("HTTP","Instruction file not cached at boot",{operation:i}),t.status(404).json({error:"Instruction not found"})):t.json({content:[{type:"text",text:a}]})}if(Yk===null)return _.debug("HTTP","SKILL.md not cached at boot",{topic:n}),t.status(404).json({error:"Instruction not found"});let s=this.extractInstructionSection(Yk,n);t.json({content:[{type:"text",text:s}]})}),this.app.post("/api/admin/restart",co,async(e,t)=>{process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(t.json({status:"restarting"}),_.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):oy(t,{status:"restarting"},()=>this.options.onRestart())}),this.app.post("/api/admin/shutdown",co,async(e,t)=>{process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(t.json({status:"shutting_down"}),_.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown"})):oy(t,{status:"shutting_down"},()=>this.options.onShutdown())}),this.app.get("/api/admin/doctor",co,(e,t)=>{let a=Gk().getRegistry().getAll().map(f=>({id:f.id,pid:f.pid,type:f.type,status:ar(f.pid)?"alive":"dead",startedAt:f.startedAt})),o=a.filter(f=>f.status==="dead").map(f=>f.pid),c=!Object.keys(process.env).some(f=>Ak.has(f)||Tk.some(m=>f.startsWith(m))),l=cy(this.startTime),u=Math.floor(l/3600),d=Math.floor(l%3600/60),p=u>0?`${u}h ${d}m`:`${d}m`;t.json({supervisor:{running:!0,pid:process.pid,uptime:p},processes:a,health:{deadProcessPids:o,envClean:c}})})}extractInstructionSection(e,t){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[t]||n.all}extractBetween(e,t,n){let i=e.indexOf(t),s=e.indexOf(n);return i===-1?e:s===-1?e.substring(i):e.substring(i,s).trim()}}});var or,y9,b9,py,tT=L(()=>{"use strict";or=require("zod"),y9=or.z.enum(["hook","worker","provider","server","api"]),b9=or.z.object({id:or.z.string().min(1),projectId:or.z.string().min(1),serverSessionId:or.z.string().min(1).nullable().default(null),sourceType:y9,eventType:or.z.string().min(1),payload:or.z.unknown().default({}),contentSessionId:or.z.string().min(1).nullable().default(null),memorySessionId:or.z.string().min(1).nullable().default(null),occurredAtEpoch:or.z.number().int().nonnegative(),createdAtEpoch:or.z.number().int().nonnegative()}),py=b9.omit({id:!0,createdAtEpoch:!0}).partial({serverSessionId:!0,payload:!0,contentSessionId:!0,memorySessionId:!0})});function Ne(){return(0,Dl.randomUUID)()}function ze(r){return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}function rT(r){return Array.isArray(r)?r:[]}function ge(r){return typeof r=="number"?r:new Date(r).getTime()}function cr(r){return r==null?null:r instanceof Date?r:new Date(r)}async function W(r,e,t=[]){return(await r.query(e,t)).rows[0]??null}async function _r(r,e,t){if(!await W(r,"SELECT id FROM projects WHERE id = $1 AND team_id = $2",[e,t]))throw new Error("project_id must belong to team_id")}async function fn(r,e,t,n){if(!await W(r,"SELECT id FROM server_sessions WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,t,n]))throw new Error("server_session_id must belong to project_id and team_id")}function uo(r){return JSON.stringify(fy(r))}function kr(r){return(0,Dl.createHash)("sha256").update(uo(r)).digest("hex")}function fy(r){if(Array.isArray(r))return r.map(fy);if(r&&typeof r=="object"){let e=r;return Object.keys(e).sort().reduce((t,n)=>(t[n]=fy(e[n]),t),{})}return r}var Dl,Gr=L(()=>{"use strict";Dl=require("crypto")});function nT(r){return r.sourceEventId?`agent_event:v1:${kr([r.teamId,r.projectId,r.sourceAdapter,r.sourceEventId])}`:`agent_event:v1:${kr([r.teamId,r.projectId,r.sourceAdapter,r.serverSessionId??null,r.eventType,new Date(r.occurredAt).toISOString(),uo(r.payload??{})])}`}function my(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,serverSessionId:r.server_session_id,sourceAdapter:r.source_adapter,sourceEventId:r.source_event_id,idempotencyKey:r.idempotency_key,eventType:r.event_type,payload:r.payload,metadata:ze(r.metadata),occurredAtEpoch:ge(r.occurred_at),receivedAtEpoch:ge(r.received_at),createdAtEpoch:ge(r.created_at)}}var lr,Ds=L(()=>{"use strict";Gr();lr=class{constructor(e){this.client=e}client;async create(e){await _r(this.client,e.projectId,e.teamId),e.serverSessionId&&await fn(this.client,e.serverSessionId,e.projectId,e.teamId);let t=nT(e),n=await W(this.client,`
INSERT INTO agent_events (
id, project_id, team_id, server_session_id, source_adapter,
source_event_id, idempotency_key, event_type, payload, metadata, occurred_at
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10::jsonb, $11)
ON CONFLICT (idempotency_key) DO UPDATE SET
metadata = agent_events.metadata || excluded.metadata
RETURNING *
`,[e.id??Ne(),e.projectId,e.teamId,e.serverSessionId??null,e.sourceAdapter,e.sourceEventId??null,t,e.eventType,JSON.stringify(e.payload??{}),JSON.stringify(e.metadata??{}),new Date(e.occurredAt)]);return my(n)}async createMany(e){let t=[];for(let n of e)t.push(await this.create(n));return t}async getByIdForScope(e){let t=await W(this.client,"SELECT * FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return t?my(t):null}async listByProject(e){return(await this.client.query(`
SELECT * FROM agent_events
WHERE project_id = $1
AND team_id = $2
AND ($3::text IS NULL OR server_session_id = $3)
ORDER BY occurred_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.serverSessionId??null,e.limit??100])).rows.map(my)}}});function sT(r){return`observation_generation_job:v1:${kr([r.teamId,r.projectId,r.sourceType,r.sourceId,r.jobType])}`}function g9(r){return r.sourceType==="agent_event"?{agentEventId:r.agentEventId??r.sourceId,serverSessionId:r.serverSessionId??null}:r.sourceType==="session_summary"?{agentEventId:null,serverSessionId:r.serverSessionId??r.sourceId}:{agentEventId:null,serverSessionId:r.serverSessionId??null}}function E9(r,e){if(v9.has(r.status))throw new Error(`cannot transition observation generation job from terminal status ${r.status}`);if(!x9[r.status].includes(e))throw new Error(`illegal observation generation job transition from ${r.status} to ${e}`);if(e==="processing"&&r.attempts>=r.maxAttempts)throw new Error("cannot process observation generation job after max_attempts is reached");if(e==="queued"&&r.attempts>=r.maxAttempts)throw new Error("cannot retry observation generation job after max_attempts is reached")}function po(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,agentEventId:r.agent_event_id,sourceType:r.source_type,sourceId:r.source_id,serverSessionId:r.server_session_id,jobType:r.job_type,status:r.status,idempotencyKey:r.idempotency_key,bullmqJobId:r.bullmq_job_id,attempts:r.attempts,maxAttempts:r.max_attempts,nextAttemptAtEpoch:cr(r.next_attempt_at)?.getTime()??null,lockedAtEpoch:cr(r.locked_at)?.getTime()??null,lockedBy:r.locked_by,completedAtEpoch:cr(r.completed_at)?.getTime()??null,failedAtEpoch:cr(r.failed_at)?.getTime()??null,cancelledAtEpoch:cr(r.cancelled_at)?.getTime()??null,lastError:r.last_error==null?null:ze(r.last_error),payload:ze(r.payload),createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}function iT(r){return{id:r.id,generationJobId:r.generation_job_id,eventType:r.event_type,statusAfter:r.status_after,attempt:r.attempt,details:ze(r.details),createdAtEpoch:ge(r.created_at)}}var qe,dt,v9,x9,qn=L(()=>{"use strict";Gr();qe=class{constructor(e){this.client=e}client;async create(e){await this.validateSource(e);let t=g9(e),n=sT(e),i=await W(this.client,`
INSERT INTO observation_generation_jobs (
id, project_id, team_id, agent_event_id, source_type, source_id,
server_session_id, job_type, status, idempotency_key, bullmq_job_id,
max_attempts, payload
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13::jsonb)
ON CONFLICT (idempotency_key) DO UPDATE SET
payload = observation_generation_jobs.payload || excluded.payload,
updated_at = now()
RETURNING *
`,[e.id??Ne(),e.projectId,e.teamId,t.agentEventId,e.sourceType,e.sourceId,t.serverSessionId,e.jobType,e.status??"queued",n,e.bullmqJobId??null,e.maxAttempts??3,JSON.stringify(e.payload??{})]);return po(i)}async getByIdForScope(e){let t=await W(this.client,"SELECT * FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return t?po(t):null}async transitionStatus(e){let t=await W(this.client,`
UPDATE observation_generation_jobs
SET
status = $2,
attempts = CASE WHEN $2 = 'processing' THEN attempts + 1 ELSE attempts END,
locked_at = CASE WHEN $2 = 'processing' THEN now() ELSE NULL END,
locked_by = CASE WHEN $2 = 'processing' THEN $3 ELSE NULL END,
next_attempt_at = CASE WHEN $2 = 'queued' THEN $4::timestamptz ELSE NULL::timestamptz END,
completed_at = CASE WHEN $2 = 'completed' THEN now() ELSE NULL END,
failed_at = CASE WHEN $2 = 'failed' THEN now() ELSE NULL END,
cancelled_at = CASE WHEN $2 = 'cancelled' THEN now() ELSE NULL END,
last_error = $5::jsonb,
updated_at = now()
WHERE id = $1
AND project_id = $6
AND team_id = $7
AND (
(status = 'queued' AND $2 IN ('processing', 'failed', 'cancelled'))
OR
(status = 'processing' AND $2 IN ('queued', 'completed', 'failed', 'cancelled'))
)
AND ($2 <> 'processing' OR attempts < max_attempts)
AND ($2 <> 'queued' OR attempts < max_attempts)
RETURNING *
`,[e.id,e.status,e.lockedBy??null,e.nextAttemptAt??null,e.lastError==null?null:JSON.stringify(e.lastError),e.projectId,e.teamId]);if(t)return po(t);let n=await W(this.client,"SELECT * FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);if(!n)return null;throw E9(po(n),e.status),new Error("observation generation job status transition was not applied")}async listByStatusForScope(e){return(await this.client.query(`
SELECT * FROM observation_generation_jobs
WHERE status = $1 AND project_id = $2 AND team_id = $3
ORDER BY created_at ASC
LIMIT $4
`,[e.status,e.projectId,e.teamId,e.limit??100])).rows.map(po)}async validateSource(e){if(await _r(this.client,e.projectId,e.teamId),e.sourceType==="agent_event"){let n=e.agentEventId??e.sourceId,i=await W(this.client,"SELECT id, server_session_id FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[n,e.projectId,e.teamId]);if(!i||e.sourceId!==n)throw new Error("agent_event source_id must belong to project_id and team_id");if(e.serverSessionId&&(await fn(this.client,e.serverSessionId,e.projectId,e.teamId),i.server_session_id&&i.server_session_id!==e.serverSessionId))throw new Error("server_session_id must match the agent_event server_session_id");return}if(e.sourceType==="session_summary"){let n=e.serverSessionId??e.sourceId;if(await fn(this.client,n,e.projectId,e.teamId),e.sourceId!==n)throw new Error("session_summary source_id must equal server_session_id");return}if(!await W(this.client,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.sourceId,e.projectId,e.teamId]))throw new Error("observation_reindex source_id must belong to project_id and team_id");e.serverSessionId&&await fn(this.client,e.serverSessionId,e.projectId,e.teamId)}},dt=class{constructor(e){this.client=e}client;async append(e){let t=await W(this.client,`
INSERT INTO observation_generation_job_events (
id, generation_job_id, event_type, status_after, attempt, details
)
SELECT $1, jobs.id, $4, $5, $6, $7::jsonb
FROM observation_generation_jobs jobs
WHERE jobs.id = $2
AND jobs.project_id = $3
AND jobs.team_id = $8
RETURNING observation_generation_job_events.*
`,[e.id??Ne(),e.generationJobId,e.projectId,e.eventType,e.statusAfter,e.attempt??0,JSON.stringify(e.details??{}),e.teamId]);if(!t)throw new Error("generation_job_id must belong to project_id and team_id");return iT(t)}async listByJobForScope(e){return(await this.client.query(`
SELECT events.*
FROM observation_generation_job_events events
INNER JOIN observation_generation_jobs jobs ON jobs.id = events.generation_job_id
WHERE events.generation_job_id = $1 AND jobs.project_id = $2 AND jobs.team_id = $3
ORDER BY events.created_at ASC
`,[e.generationJobId,e.projectId,e.teamId])).rows.map(iT)}};v9=new Set(["completed","failed","cancelled"]),x9={queued:["processing","failed","cancelled"],processing:["queued","completed","failed","cancelled"],completed:[],failed:[],cancelled:[]}});var oT={};vi(oT,{PostgresAuthRepository:()=>pt});function aT(r){return{id:r.id,keyHash:r.key_hash,teamId:r.team_id,projectId:r.project_id,actorId:r.actor_id,scopes:rT(r.scopes),revokedAtEpoch:cr(r.revoked_at)?.getTime()??null,expiresAtEpoch:cr(r.expires_at)?.getTime()??null,createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}function S9(r){return{id:r.id,teamId:r.team_id,projectId:r.project_id,actorId:r.actor_id,apiKeyId:r.api_key_id,action:r.action,resourceType:r.resource_type,resourceId:r.resource_id,details:ze(r.details),createdAtEpoch:ge(r.created_at)}}var pt,mn=L(()=>{"use strict";Gr();pt=class{constructor(e){this.client=e}client;async createApiKey(e){e.projectId&&e.teamId&&await _r(this.client,e.projectId,e.teamId);let t=e.id??Ne(),n=await W(this.client,`
INSERT INTO api_keys (id, key_hash, team_id, project_id, actor_id, scopes, expires_at)
VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7)
RETURNING *
`,[t,e.keyHash,e.teamId??null,e.projectId??null,e.actorId,JSON.stringify(e.scopes??[]),e.expiresAt??null]);return aT(n)}async createAuditLog(e){e.projectId&&e.teamId&&await _r(this.client,e.projectId,e.teamId);let t=e.id??Ne(),n=await W(this.client,`
INSERT INTO audit_log (
id, team_id, project_id, actor_id, api_key_id, action,
resource_type, resource_id, details
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb)
RETURNING *
`,[t,e.teamId??null,e.projectId??null,e.actorId??null,e.apiKeyId??null,e.action,e.resourceType,e.resourceId??null,JSON.stringify(e.details??{})]);return S9(n)}async getApiKeyByHash(e){let t=await W(this.client,"SELECT * FROM api_keys WHERE key_hash = $1",[e]);return t?aT(t):null}}});function Ml(r){return`generation:v1:${r.generationJobId}:${r.parsedObservationIndex}:${kr([uo(r.content.trim())])}`}async function w9(r,e,t,n){if(!await W(r,"SELECT id FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,t,n]))throw new Error("generation_job_id must belong to project_id and team_id")}async function I9(r,e){if(e.sourceType==="manual")throw new Error("manual observation sources cannot be linked to a generation_job_id");let t=await W(r,`
SELECT id, source_type, source_id, agent_event_id
FROM observation_generation_jobs
WHERE id = $1 AND project_id = $2 AND team_id = $3
`,[e.generationJobId,e.projectId,e.teamId]);if(!t)throw new Error("generation_job_id must belong to project_id and team_id");if(t.source_type!==e.sourceType||t.source_id!==e.sourceId)throw new Error("generation_job_id source model must match observation source");if(e.sourceType==="agent_event"&&t.agent_event_id!==e.agentEventId)throw new Error("generation_job_id agent_event_id must match observation source")}async function _9(r,e,t,n){if(!await W(r,"SELECT id FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,t,n]))throw new Error("agent_event_id must belong to project_id and team_id")}async function k9(r,e,t,n){if(!await W(r,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,t,n]))throw new Error("observation_reindex source_id must belong to project_id and team_id")}function Pl(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,serverSessionId:r.server_session_id,kind:r.kind,content:r.content,generationKey:r.generation_key,metadata:ze(r.metadata),embedding:r.embedding,createdByJobId:r.created_by_job_id,createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}function cT(r){return{id:r.id,observationId:r.observation_id,agentEventId:r.agent_event_id,generationJobId:r.generation_job_id,sourceType:r.source_type,sourceId:r.source_id,metadata:ze(r.metadata),createdAtEpoch:ge(r.created_at)}}var ur,Fn,fo=L(()=>{"use strict";Gr();ur=class{constructor(e){this.client=e}client;async create(e){await _r(this.client,e.projectId,e.teamId),e.serverSessionId&&await fn(this.client,e.serverSessionId,e.projectId,e.teamId),e.createdByJobId&&await w9(this.client,e.createdByJobId,e.projectId,e.teamId);let t=await W(this.client,`
INSERT INTO observations (
id, project_id, team_id, server_session_id, kind, content,
generation_key, metadata, embedding, created_by_job_id
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8::jsonb, $9::jsonb, $10)
ON CONFLICT (team_id, project_id, generation_key) WHERE generation_key IS NOT NULL DO UPDATE SET
updated_at = observations.updated_at
RETURNING *
`,[e.id??Ne(),e.projectId,e.teamId,e.serverSessionId??null,e.kind??"observation",e.content,e.generationKey??null,JSON.stringify(e.metadata??{}),e.embedding==null?null:JSON.stringify(e.embedding),e.createdByJobId??null]);return Pl(t)}async getByIdForScope(e){let t=await W(this.client,"SELECT * FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return t?Pl(t):null}async listByProject(e){return(await this.client.query(`
SELECT * FROM observations
WHERE project_id = $1
AND team_id = $2
AND ($3::text IS NULL OR server_session_id = $3)
ORDER BY created_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.serverSessionId??null,e.limit??100])).rows.map(Pl)}async search(e){return(await this.client.query(`
SELECT * FROM observations
WHERE project_id = $1
AND team_id = $2
AND content_search @@ websearch_to_tsquery('english', $3)
ORDER BY ts_rank(content_search, websearch_to_tsquery('english', $3)) DESC, updated_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.query,e.limit??20])).rows.map(Pl)}},Fn=class{constructor(e){this.client=e}client;async addSource(e){if(!await W(this.client,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.observationId,e.projectId,e.teamId]))throw new Error("observation_id does not exist");let n=e.sourceType==="agent_event"?e.agentEventId??e.sourceId:null;if(e.sourceType==="agent_event"){if(n!==e.sourceId)throw new Error("agent_event source_id must equal agent_event_id");await _9(this.client,e.sourceId,e.projectId,e.teamId)}else e.sourceType==="session_summary"&&!e.generationJobId?await fn(this.client,e.sourceId,e.projectId,e.teamId):e.sourceType==="observation_reindex"&&!e.generationJobId&&await k9(this.client,e.sourceId,e.projectId,e.teamId);e.generationJobId&&await I9(this.client,{generationJobId:e.generationJobId,projectId:e.projectId,teamId:e.teamId,sourceType:e.sourceType,sourceId:e.sourceId,agentEventId:n});let i=await W(this.client,`
INSERT INTO observation_sources (
id, observation_id, agent_event_id, generation_job_id,
source_type, source_id, metadata
)
VALUES ($1, $2, $3, $4, $5, $6, $7::jsonb)
ON CONFLICT (observation_id, source_type, source_id) DO UPDATE SET
metadata = observation_sources.metadata || excluded.metadata
RETURNING *
`,[e.id??Ne(),e.observationId,n,e.generationJobId??null,e.sourceType,e.sourceId,JSON.stringify(e.metadata??{})]);return cT(i)}async listByObservationForScope(e){return(await this.client.query(`
SELECT observation_sources.*
FROM observation_sources
INNER JOIN observations
ON observations.id = observation_sources.observation_id
WHERE observation_sources.observation_id = $1
AND observations.project_id = $2
AND observations.team_id = $3
ORDER BY observation_sources.created_at ASC
`,[e.observationId,e.projectId,e.teamId])).rows.map(cT)}}});function Oi(r,e={}){return async(t,n,i)=>{try{let s=e.authMode??process.env.CLAUDE_MEM_AUTH_MODE??"api-key",a=t.header("authorization")??"",o=j9(a),c=e.allowLocalDevBypass??process.env.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="1";if(!o&&s==="local-dev"&&c&&O9(t)&&R9(t)&&!D9(t)){let d={userId:null,organizationId:null,teamId:e.localDevTeamId??null,projectId:null,scopes:["local-dev"],apiKeyId:null,mode:"local-dev"};t.authContext=d,i();return}if(!o){n.status(401).json({error:"Unauthorized",message:"Missing bearer API key"});return}let l=await T9(r,o,e.requiredScopes??[]);if(!l){n.status(403).json({error:"Forbidden",message:"Invalid API key or insufficient scope"});return}let u={userId:null,organizationId:null,teamId:l.teamId,projectId:l.projectId,scopes:l.scopes,apiKeyId:l.apiKeyId,mode:"api-key"};t.authContext=u,i()}catch(s){i(s)}}}async function T9(r,e,t){let n=(0,lT.createHash)("sha256").update(e).digest("hex"),s=(await r.query(`
SELECT id, team_id, project_id, scopes, revoked_at, expires_at
FROM api_keys
WHERE key_hash = $1
`,[n])).rows[0];if(!s||s.revoked_at||s.expires_at&&s.expires_at.getTime()<=Date.now())return null;let a=A9(s.scopes);return K9(a,t)?{apiKeyId:s.id,teamId:s.team_id,projectId:s.project_id,scopes:a}:null}function A9(r){return Array.isArray(r)?r.filter(e=>typeof e=="string"):[]}function K9(r,e){return e.length===0||r.includes("*")?!0:e.every(t=>r.includes(t))}function j9(r){return/^Bearer\s+(.+)$/i.exec(r.trim())?.[1]?.trim()||null}function O9(r){let e=r.ip||r.socket.remoteAddress||"";return e==="127.0.0.1"||e==="::1"||e==="::ffff:127.0.0.1"||e==="localhost"}function R9(r){let e=C9(r.header("host")??"");return e==="127.0.0.1"||e==="localhost"||e==="::1"}function C9(r){let e=r.trim().toLowerCase();if(e.startsWith("[")){let n=e.indexOf("]");return n===-1?e:e.slice(1,n)}let t=e.lastIndexOf(":");return t>-1&&/^\d+$/.test(e.slice(t+1))?e.slice(0,t):e}function D9(r){return!!(r.header("forwarded")||r.header("x-forwarded-for")||r.header("x-forwarded-host")||r.header("x-real-ip"))}var lT,Ll=L(()=>{"use strict";lT=require("crypto")});function dT(){return(r,e,t)=>{let n=r.header(P9),i=n&&N9(n)?n:(0,uT.randomUUID)();r.requestId=i,e.setHeader("X-Request-Id",i),t()}}function N9(r){return typeof r!="string"||r.length===0||r.length>M9?!1:L9.test(r)}var uT,P9,M9,L9,pT=L(()=>{"use strict";uT=require("crypto"),P9="x-request-id",M9=64,L9=/^[A-Za-z0-9][A-Za-z0-9\-_]{0,63}$/});function q9(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,serverSessionId:r.server_session_id,sourceAdapter:r.source_adapter,sourceEventId:r.source_event_id,idempotencyKey:r.idempotency_key,eventType:r.event_type,payload:ze(r.payload),metadata:ze(r.metadata),occurredAtEpoch:r.occurred_at.getTime(),receivedAtEpoch:r.received_at.getTime(),createdAtEpoch:r.created_at.getTime()}}function fT(r){return r.externalSessionId?`server_session:v1:${kr([r.teamId,r.projectId,"external",r.externalSessionId])}`:r.contentSessionId?`server_session:v1:${kr([r.teamId,r.projectId,"content",r.platformSource??null,r.agentId??null,r.contentSessionId])}`:r.agentId&&r.platformSource?`server_session:v1:${kr([r.teamId,r.projectId,"agent",r.platformSource,r.agentId,r.agentType??null])}`:null}function Jn(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,externalSessionId:r.external_session_id,idempotencyKey:r.idempotency_key,contentSessionId:r.content_session_id,agentId:r.agent_id,agentType:r.agent_type,platformSource:r.platform_source,generationStatus:r.generation_status,metadata:ze(r.metadata),startedAtEpoch:ge(r.started_at),endedAtEpoch:cr(r.ended_at)?.getTime()??null,lastGeneratedAtEpoch:cr(r.last_generated_at)?.getTime()??null,createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}var wt,Un=L(()=>{"use strict";Gr();wt=class{constructor(e){this.client=e}client;async create(e){await _r(this.client,e.projectId,e.teamId);let t=e.id??Ne(),n=fT(e),i=await W(this.client,`
INSERT INTO server_sessions (
id, project_id, team_id, external_session_id, idempotency_key, content_session_id,
agent_id, agent_type, platform_source, generation_status, metadata
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11::jsonb)
ON CONFLICT (project_id, idempotency_key) WHERE idempotency_key IS NOT NULL DO UPDATE SET
external_session_id = excluded.external_session_id,
content_session_id = excluded.content_session_id,
agent_id = excluded.agent_id,
agent_type = excluded.agent_type,
platform_source = excluded.platform_source,
generation_status = excluded.generation_status,
metadata = excluded.metadata,
updated_at = now()
RETURNING *
`,[t,e.projectId,e.teamId,e.externalSessionId??null,n,e.contentSessionId??null,e.agentId??null,e.agentType??null,e.platformSource??null,e.generationStatus??"idle",JSON.stringify(e.metadata??{})]);return Jn(i)}async getByIdForScope(e){let t=await W(this.client,"SELECT * FROM server_sessions WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return t?Jn(t):null}async listByProject(e,t){return(await this.client.query(`
SELECT * FROM server_sessions
WHERE project_id = $1 AND team_id = $2
ORDER BY started_at DESC
`,[e,t])).rows.map(Jn)}async findByExternalIdForScope(e){let t=await W(this.client,`
SELECT * FROM server_sessions
WHERE external_session_id = $1 AND project_id = $2 AND team_id = $3
`,[e.externalSessionId,e.projectId,e.teamId]);return t?Jn(t):null}async endSession(e){let t=await W(this.client,`
UPDATE server_sessions
SET ended_at = COALESCE(ended_at, now()),
updated_at = CASE WHEN ended_at IS NULL THEN now() ELSE updated_at END
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return t?Jn(t):null}async markGenerationStarted(e){let t=await W(this.client,`
UPDATE server_sessions
SET generation_status = 'processing', updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return t?Jn(t):null}async markGenerationCompleted(e){let t=await W(this.client,`
UPDATE server_sessions
SET generation_status = 'completed',
last_generated_at = now(),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return t?Jn(t):null}async markGenerationFailed(e){let t=await W(this.client,`
UPDATE server_sessions
SET generation_status = 'failed',
metadata = jsonb_set(
COALESCE(metadata, '{}'::jsonb),
'{lastGenerationError}',
COALESCE(to_jsonb($4::text), 'null'::jsonb),
true
),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId,e.error??null]);return t?Jn(t):null}async listUnprocessedEvents(e){let t=e.limit??500;return(await this.client.query(`
SELECT e.*
FROM agent_events e
WHERE e.server_session_id = $1
AND e.project_id = $2
AND e.team_id = $3
AND NOT EXISTS (
SELECT 1 FROM observation_generation_jobs j
WHERE j.agent_event_id = e.id
AND j.project_id = e.project_id
AND j.team_id = e.team_id
AND j.source_type = 'agent_event'
AND j.status = 'completed'
)
ORDER BY e.occurred_at ASC
LIMIT $4
`,[e.serverSessionId,e.projectId,e.teamId,t])).rows.map(q9)}}});var yy=h(mT=>{"use strict";mT.parse=function(r,e){return new hy(r,e).parse()};var hy=class r{constructor(e,t){this.source=e,this.transform=t||F9,this.position=0,this.entries=[],this.recorded=[],this.dimension=0}isEof(){return this.position>=this.source.length}nextCharacter(){var e=this.source[this.position++];return e==="\\"?{value:this.source[this.position++],escaped:!0}:{value:e,escaped:!1}}record(e){this.recorded.push(e)}newEntry(e){var t;(this.recorded.length>0||e)&&(t=this.recorded.join(""),t==="NULL"&&!e&&(t=null),t!==null&&(t=this.transform(t)),this.entries.push(t),this.recorded=[])}consumeDimensions(){if(this.source[0]==="[")for(;!this.isEof();){var e=this.nextCharacter();if(e.value==="=")break}}parse(e){var t,n,i;for(this.consumeDimensions();!this.isEof();)if(t=this.nextCharacter(),t.value==="{"&&!i)this.dimension++,this.dimension>1&&(n=new r(this.source.substr(this.position-1),this.transform),this.entries.push(n.parse(!0)),this.position+=n.position-2);else if(t.value==="}"&&!i){if(this.dimension--,!this.dimension&&(this.newEntry(),e))return this.entries}else t.value==='"'&&!t.escaped?(i&&this.newEntry(!0),i=!i):t.value===","&&!i?this.newEntry():this.record(t.value);if(this.dimension!==0)throw new Error("array dimension not balanced");return this.entries}};function F9(r){return r}});var by=h((Uue,hT)=>{var J9=yy();hT.exports={create:function(r,e){return{parse:function(){return J9.parse(r,e)}}}}});var gT=h((Gue,bT)=>{"use strict";var U9=/(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/,G9=/^(\d{1,})-(\d{2})-(\d{2})( BC)?$/,B9=/([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/,$9=/^-?infinity$/;bT.exports=function(e){if($9.test(e))return Number(e.replace("i","I"));var t=U9.exec(e);if(!t)return V9(e)||null;var n=!!t[8],i=parseInt(t[1],10);n&&(i=yT(i));var s=parseInt(t[2],10)-1,a=t[3],o=parseInt(t[4],10),c=parseInt(t[5],10),l=parseInt(t[6],10),u=t[7];u=u?1e3*parseFloat(u):0;var d,p=H9(e);return p!=null?(d=new Date(Date.UTC(i,s,a,o,c,l,u)),gy(i)&&d.setUTCFullYear(i),p!==0&&d.setTime(d.getTime()-p)):(d=new Date(i,s,a,o,c,l,u),gy(i)&&d.setFullYear(i)),d};function V9(r){var e=G9.exec(r);if(e){var t=parseInt(e[1],10),n=!!e[4];n&&(t=yT(t));var i=parseInt(e[2],10)-1,s=e[3],a=new Date(t,i,s);return gy(t)&&a.setFullYear(t),a}}function H9(r){if(r.endsWith("+00"))return 0;var e=B9.exec(r.split(" ")[1]);if(e){var t=e[1];if(t==="Z")return 0;var n=t==="-"?-1:1,i=parseInt(e[2],10)*3600+parseInt(e[3]||0,10)*60+parseInt(e[4]||0,10);return i*n*1e3}}function yT(r){return-(r-1)}function gy(r){return r>=0&&r<100}});var xT=h((Bue,vT)=>{vT.exports=Y9;var z9=Object.prototype.hasOwnProperty;function Y9(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)z9.call(t,n)&&(r[n]=t[n])}return r}});var wT=h(($ue,ST)=>{"use strict";var W9=xT();ST.exports=Ps;function Ps(r){if(!(this instanceof Ps))return new Ps(r);W9(this,c$(r))}var Q9=["seconds","minutes","hours","days","months","years"];Ps.prototype.toPostgres=function(){var r=Q9.filter(this.hasOwnProperty,this);return this.milliseconds&&r.indexOf("seconds")<0&&r.push("seconds"),r.length===0?"0":r.map(function(e){var t=this[e]||0;return e==="seconds"&&this.milliseconds&&(t=(t+this.milliseconds/1e3).toFixed(6).replace(/\.?0+$/,"")),t+" "+e},this).join(" ")};var X9={years:"Y",months:"M",days:"D",hours:"H",minutes:"M",seconds:"S"},Z9=["years","months","days"],e$=["hours","minutes","seconds"];Ps.prototype.toISOString=Ps.prototype.toISO=function(){var r=Z9.map(t,this).join(""),e=e$.map(t,this).join("");return"P"+r+"T"+e;function t(n){var i=this[n]||0;return n==="seconds"&&this.milliseconds&&(i=(i+this.milliseconds/1e3).toFixed(6).replace(/0+$/,"")),i+X9[n]}};var vy="([+-]?\\d+)",t$=vy+"\\s+years?",r$=vy+"\\s+mons?",n$=vy+"\\s+days?",i$="([+-])?([\\d]*):(\\d\\d):(\\d\\d)\\.?(\\d{1,6})?",s$=new RegExp([t$,r$,n$,i$].map(function(r){return"("+r+")?"}).join("\\s*")),ET={years:2,months:4,days:6,hours:9,minutes:10,seconds:11,milliseconds:12},a$=["hours","minutes","seconds","milliseconds"];function o$(r){var e=r+"000000".slice(r.length);return parseInt(e,10)/1e3}function c$(r){if(!r)return{};var e=s$.exec(r),t=e[8]==="-";return Object.keys(ET).reduce(function(n,i){var s=ET[i],a=e[s];return!a||(a=i==="milliseconds"?o$(a):parseInt(a,10),!a)||(t&&~a$.indexOf(i)&&(a*=-1),n[i]=a),n},{})}});var kT=h((Vue,_T)=>{"use strict";var IT=Buffer.from||Buffer;_T.exports=function(e){if(/^\\x/.test(e))return IT(e.substr(2),"hex");for(var t="",n=0;n<e.length;)if(e[n]!=="\\")t+=e[n],++n;else if(/[0-7]{3}/.test(e.substr(n+1,3)))t+=String.fromCharCode(parseInt(e.substr(n+1,3),8)),n+=4;else{for(var i=1;n+i<e.length&&e[n+i]==="\\";)i++;for(var s=0;s<Math.floor(i/2);++s)t+="\\";n+=Math.floor(i/2)*2}return IT(t,"binary")}});var CT=h((Hue,RT)=>{var mo=yy(),ho=by(),Nl=gT(),AT=wT(),KT=kT();function ql(r){return function(t){return t===null?t:r(t)}}function jT(r){return r===null?r:r==="TRUE"||r==="t"||r==="true"||r==="y"||r==="yes"||r==="on"||r==="1"}function l$(r){return r?mo.parse(r,jT):null}function u$(r){return parseInt(r,10)}function xy(r){return r?mo.parse(r,ql(u$)):null}function d$(r){return r?mo.parse(r,ql(function(e){return OT(e).trim()})):null}var p$=function(r){if(!r)return null;var e=ho.create(r,function(t){return t!==null&&(t=Iy(t)),t});return e.parse()},Ey=function(r){if(!r)return null;var e=ho.create(r,function(t){return t!==null&&(t=parseFloat(t)),t});return e.parse()},dr=function(r){if(!r)return null;var e=ho.create(r);return e.parse()},Sy=function(r){if(!r)return null;var e=ho.create(r,function(t){return t!==null&&(t=Nl(t)),t});return e.parse()},f$=function(r){if(!r)return null;var e=ho.create(r,function(t){return t!==null&&(t=AT(t)),t});return e.parse()},m$=function(r){return r?mo.parse(r,ql(KT)):null},wy=function(r){return parseInt(r,10)},OT=function(r){var e=String(r);return/^\d+$/.test(e)?e:r},TT=function(r){return r?mo.parse(r,ql(JSON.parse)):null},Iy=function(r){return r[0]!=="("?null:(r=r.substring(1,r.length-1).split(","),{x:parseFloat(r[0]),y:parseFloat(r[1])})},h$=function(r){if(r[0]!=="<"&&r[1]!=="(")return null;for(var e="(",t="",n=!1,i=2;i<r.length-1;i++){if(n||(e+=r[i]),r[i]===")"){n=!0;continue}else if(!n)continue;r[i]!==","&&(t+=r[i])}var s=Iy(e);return s.radius=parseFloat(t),s},y$=function(r){r(20,OT),r(21,wy),r(23,wy),r(26,wy),r(700,parseFloat),r(701,parseFloat),r(16,jT),r(1082,Nl),r(1114,Nl),r(1184,Nl),r(600,Iy),r(651,dr),r(718,h$),r(1e3,l$),r(1001,m$),r(1005,xy),r(1007,xy),r(1028,xy),r(1016,d$),r(1017,p$),r(1021,Ey),r(1022,Ey),r(1231,Ey),r(1014,dr),r(1015,dr),r(1008,dr),r(1009,dr),r(1040,dr),r(1041,dr),r(1115,Sy),r(1182,Sy),r(1185,Sy),r(1186,AT),r(1187,f$),r(17,KT),r(114,JSON.parse.bind(JSON)),r(3802,JSON.parse.bind(JSON)),r(199,TT),r(3807,TT),r(3907,dr),r(2951,dr),r(791,dr),r(1183,dr),r(1270,dr)};RT.exports={init:y$}});var PT=h((zue,DT)=>{"use strict";var Pt=1e6;function b$(r){var e=r.readInt32BE(0),t=r.readUInt32BE(4),n="";e<0&&(e=~e+(t===0),t=~t+1>>>0,n="-");var i="",s,a,o,c,l,u;{if(s=e%Pt,e=e/Pt>>>0,a=4294967296*s+t,t=a/Pt>>>0,o=""+(a-Pt*t),t===0&&e===0)return n+o+i;for(c="",l=6-o.length,u=0;u<l;u++)c+="0";i=c+o+i}{if(s=e%Pt,e=e/Pt>>>0,a=4294967296*s+t,t=a/Pt>>>0,o=""+(a-Pt*t),t===0&&e===0)return n+o+i;for(c="",l=6-o.length,u=0;u<l;u++)c+="0";i=c+o+i}{if(s=e%Pt,e=e/Pt>>>0,a=4294967296*s+t,t=a/Pt>>>0,o=""+(a-Pt*t),t===0&&e===0)return n+o+i;for(c="",l=6-o.length,u=0;u<l;u++)c+="0";i=c+o+i}return s=e%Pt,a=4294967296*s+t,o=""+a%Pt,n+o+i}DT.exports=b$});var FT=h((Yue,qT)=>{var g$=PT(),Ce=function(r,e,t,n,i){t=t||0,n=n||!1,i=i||function(f,m,y){return f*Math.pow(2,y)+m};var s=t>>3,a=function(f){return n?~f&255:f},o=255,c=8-t%8;e<c&&(o=255<<8-e&255,c=e),t&&(o=o>>t%8);var l=0;t%8+e>=8&&(l=i(0,a(r[s])&o,c));for(var u=e+t>>3,d=s+1;d<u;d++)l=i(l,a(r[d]),8);var p=(e+t)%8;return p>0&&(l=i(l,a(r[u])>>8-p,p)),l},NT=function(r,e,t){var n=Math.pow(2,t-1)-1,i=Ce(r,1),s=Ce(r,t,1);if(s===0)return 0;var a=1,o=function(l,u,d){l===0&&(l=1);for(var p=1;p<=d;p++)a/=2,(u&1<<d-p)>0&&(l+=a);return l},c=Ce(r,e,t+1,!1,o);return s==Math.pow(2,t+1)-1?c===0?i===0?1/0:-1/0:NaN:(i===0?1:-1)*Math.pow(2,s-n)*c},v$=function(r){return Ce(r,1)==1?-1*(Ce(r,15,1,!0)+1):Ce(r,15,1)},MT=function(r){return Ce(r,1)==1?-1*(Ce(r,31,1,!0)+1):Ce(r,31,1)},x$=function(r){return NT(r,23,8)},E$=function(r){return NT(r,52,11)},S$=function(r){var e=Ce(r,16,32);if(e==49152)return NaN;for(var t=Math.pow(1e4,Ce(r,16,16)),n=0,i=[],s=Ce(r,16),a=0;a<s;a++)n+=Ce(r,16,64+16*a)*t,t/=1e4;var o=Math.pow(10,Ce(r,16,48));return(e===0?1:-1)*Math.round(n*o)/o},LT=function(r,e){var t=Ce(e,1),n=Ce(e,63,1),i=new Date((t===0?1:-1)*n/1e3+9466848e5);return r||i.setTime(i.getTime()+i.getTimezoneOffset()*6e4),i.usec=n%1e3,i.getMicroSeconds=function(){return this.usec},i.setMicroSeconds=function(s){this.usec=s},i.getUTCMicroSeconds=function(){return this.usec},i},yo=function(r){for(var e=Ce(r,32),t=Ce(r,32,32),n=Ce(r,32,64),i=96,s=[],a=0;a<e;a++)s[a]=Ce(r,32,i),i+=32,i+=32;var o=function(l){var u=Ce(r,32,i);if(i+=32,u==4294967295)return null;var d;if(l==23||l==20)return d=Ce(r,u*8,i),i+=u*8,d;if(l==25)return d=r.toString(this.encoding,i>>3,(i+=u<<3)>>3),d;console.log("ERROR: ElementType not implemented: "+l)},c=function(l,u){var d=[],p;if(l.length>1){var f=l.shift();for(p=0;p<f;p++)d[p]=c(l,u);l.unshift(f)}else for(p=0;p<l[0];p++)d[p]=o(u);return d};return c(s,n)},w$=function(r){return r.toString("utf8")},I$=function(r){return r===null?null:Ce(r,8)>0},_$=function(r){r(20,g$),r(21,v$),r(23,MT),r(26,MT),r(1700,S$),r(700,x$),r(701,E$),r(16,I$),r(1114,LT.bind(null,!1)),r(1184,LT.bind(null,!0)),r(1e3,yo),r(1007,yo),r(1016,yo),r(1008,yo),r(1009,yo),r(25,w$)};qT.exports={init:_$}});var UT=h((Wue,JT)=>{JT.exports={BOOL:16,BYTEA:17,CHAR:18,INT8:20,INT2:21,INT4:23,REGPROC:24,TEXT:25,OID:26,TID:27,XID:28,CID:29,JSON:114,XML:142,PG_NODE_TREE:194,SMGR:210,PATH:602,POLYGON:604,CIDR:650,FLOAT4:700,FLOAT8:701,ABSTIME:702,RELTIME:703,TINTERVAL:704,CIRCLE:718,MACADDR8:774,MONEY:790,MACADDR:829,INET:869,ACLITEM:1033,BPCHAR:1042,VARCHAR:1043,DATE:1082,TIME:1083,TIMESTAMP:1114,TIMESTAMPTZ:1184,INTERVAL:1186,TIMETZ:1266,BIT:1560,VARBIT:1562,NUMERIC:1700,REFCURSOR:1790,REGPROCEDURE:2202,REGOPER:2203,REGOPERATOR:2204,REGCLASS:2205,REGTYPE:2206,UUID:2950,TXID_SNAPSHOT:2970,PG_LSN:3220,PG_NDISTINCT:3361,PG_DEPENDENCIES:3402,TSVECTOR:3614,TSQUERY:3615,GTSVECTOR:3642,REGCONFIG:3734,REGDICTIONARY:3769,JSONB:3802,REGNAMESPACE:4089,REGROLE:4096}});var vo=h(go=>{var k$=CT(),T$=FT(),A$=by(),K$=UT();go.getTypeParser=j$;go.setTypeParser=O$;go.arrayParser=A$;go.builtins=K$;var bo={text:{},binary:{}};function GT(r){return String(r)}function j$(r,e){return e=e||"text",bo[e]&&bo[e][r]||GT}function O$(r,e,t){typeof e=="function"&&(t=e,e="text"),bo[e][r]=t}k$.init(function(r,e){bo.text[r]=e});T$.init(function(r,e){bo.binary[r]=e})});var xo=h((Xue,_y)=>{"use strict";var BT;try{BT=process.platform==="win32"?process.env.USERNAME:process.env.USER}catch{}_y.exports={host:"localhost",user:BT,database:void 0,password:null,connectionString:void 0,port:5432,rows:0,binary:!1,max:10,idleTimeoutMillis:3e4,client_encoding:"",ssl:!1,application_name:void 0,fallback_application_name:void 0,options:void 0,parseInputDatesAsUTC:!1,statement_timeout:!1,lock_timeout:!1,idle_in_transaction_session_timeout:!1,query_timeout:!1,connect_timeout:0,keepalives:1,keepalives_idle:0};var Ms=vo(),R$=Ms.getTypeParser(20,"text"),C$=Ms.getTypeParser(1016,"text");_y.exports.__defineSetter__("parseInt8",function(r){Ms.setTypeParser(20,"text",r?Ms.getTypeParser(23,"text"):R$),Ms.setTypeParser(1016,"text",r?Ms.getTypeParser(1007,"text"):C$)})});var Ls=h((Zue,HT)=>{"use strict";var D$=xo(),$T=require("util"),{isDate:P$}=$T.types||$T;function M$(r){return'"'+r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}function VT(r){let e="{";for(let t=0;t<r.length;t++)if(t>0&&(e=e+","),r[t]===null||typeof r[t]>"u")e=e+"NULL";else if(Array.isArray(r[t]))e=e+VT(r[t]);else if(ArrayBuffer.isView(r[t])){let n=r[t];if(!(n instanceof Buffer)){let i=Buffer.from(n.buffer,n.byteOffset,n.byteLength);i.length===n.byteLength?n=i:n=i.slice(n.byteOffset,n.byteOffset+n.byteLength)}e+="\\\\x"+n.toString("hex")}else e+=M$(Fl(r[t]));return e=e+"}",e}var Fl=function(r,e){if(r==null)return null;if(typeof r=="object"){if(r instanceof Buffer)return r;if(ArrayBuffer.isView(r)){let t=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return t.length===r.byteLength?t:t.slice(r.byteOffset,r.byteOffset+r.byteLength)}return P$(r)?D$.parseInputDatesAsUTC?q$(r):N$(r):Array.isArray(r)?VT(r):L$(r,e)}return r.toString()};function L$(r,e){if(r&&typeof r.toPostgres=="function"){if(e=e||[],e.indexOf(r)!==-1)throw new Error('circular reference detected while preparing "'+r+'" for query');return e.push(r),Fl(r.toPostgres(Fl),e)}return JSON.stringify(r)}function N$(r){let e=-r.getTimezoneOffset(),t=r.getFullYear(),n=t<1;n&&(t=Math.abs(t)+1);let i=String(t).padStart(4,"0")+"-"+String(r.getMonth()+1).padStart(2,"0")+"-"+String(r.getDate()).padStart(2,"0")+"T"+String(r.getHours()).padStart(2,"0")+":"+String(r.getMinutes()).padStart(2,"0")+":"+String(r.getSeconds()).padStart(2,"0")+"."+String(r.getMilliseconds()).padStart(3,"0");return e<0?(i+="-",e*=-1):i+="+",i+=String(Math.floor(e/60)).padStart(2,"0")+":"+String(e%60).padStart(2,"0"),n&&(i+=" BC"),i}function q$(r){let e=r.getUTCFullYear(),t=e<1;t&&(e=Math.abs(e)+1);let n=String(e).padStart(4,"0")+"-"+String(r.getUTCMonth()+1).padStart(2,"0")+"-"+String(r.getUTCDate()).padStart(2,"0")+"T"+String(r.getUTCHours()).padStart(2,"0")+":"+String(r.getUTCMinutes()).padStart(2,"0")+":"+String(r.getUTCSeconds()).padStart(2,"0")+"."+String(r.getUTCMilliseconds()).padStart(3,"0");return n+="+00:00",t&&(n+=" BC"),n}function F$(r,e,t){return r=typeof r=="string"?{text:r}:r,e&&(typeof e=="function"?r.callback=e:r.values=e),t&&(r.callback=t),r}var J$=function(r){return'"'+r.replace(/"/g,'""')+'"'},U$=function(r){let e=!1,t="'";if(r==null||typeof r!="string")return"''";for(let n=0;n<r.length;n++){let i=r[n];i==="'"?t+=i+i:i==="\\"?(t+=i+i,e=!0):t+=i}return t+="'",e===!0&&(t=" E"+t),t};HT.exports={prepareValue:function(e){return Fl(e)},normalizeQueryConfig:F$,escapeIdentifier:J$,escapeLiteral:U$}});var YT=h((ede,zT)=>{"use strict";var Ns=require("crypto");function ky(r){return Ns.createHash("md5").update(r,"utf-8").digest("hex")}function G$(r,e,t){let n=ky(e+r);return"md5"+ky(Buffer.concat([Buffer.from(n),t]))}function B$(r){return Ns.createHash("sha256").update(r).digest()}function $$(r,e){return r=r.replace(/(\D)-/,"$1"),Ns.createHash(r).update(e).digest()}function V$(r,e){return Ns.createHmac("sha256",r).update(e).digest()}async function H$(r,e,t){return Ns.pbkdf2Sync(r,e,t,32,"sha256")}zT.exports={postgresMd5PasswordHash:G$,randomBytes:Ns.randomBytes,deriveKey:H$,sha256:B$,hashByName:$$,hmacSha256:V$,md5:ky}});var ZT=h((tde,XT)=>{var WT=require("crypto");XT.exports={postgresMd5PasswordHash:Y$,randomBytes:z$,deriveKey:Z$,sha256:W$,hashByName:Q$,hmacSha256:X$,md5:Ty};var QT=WT.webcrypto||globalThis.crypto,Ri=QT.subtle,Ay=new TextEncoder;function z$(r){return QT.getRandomValues(Buffer.alloc(r))}async function Ty(r){try{return WT.createHash("md5").update(r,"utf-8").digest("hex")}catch{let t=typeof r=="string"?Ay.encode(r):r,n=await Ri.digest("MD5",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}}async function Y$(r,e,t){let n=await Ty(e+r);return"md5"+await Ty(Buffer.concat([Buffer.from(n),t]))}async function W$(r){return await Ri.digest("SHA-256",r)}async function Q$(r,e){return await Ri.digest(r,e)}async function X$(r,e){let t=await Ri.importKey("raw",r,{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return await Ri.sign("HMAC",t,Ay.encode(e))}async function Z$(r,e,t){let n=await Ri.importKey("raw",Ay.encode(r),"PBKDF2",!1,["deriveBits"]),i={name:"PBKDF2",hash:"SHA-256",salt:e,iterations:t};return await Ri.deriveBits(i,n,256,["deriveBits"])}});var jy=h((rde,Ky)=>{"use strict";var eV=parseInt(process.versions&&process.versions.node&&process.versions.node.split(".")[0])<15;eV?Ky.exports=YT():Ky.exports=ZT()});var rA=h((nde,tA)=>{function Ci(r,e){return new Error("SASL channel binding: "+r+" when parsing public certificate "+e.toString("base64"))}function Oy(r,e){let t=r[e++];if(t<128)return{length:t,index:e};let n=t&127;if(n>4)throw Ci("bad length",r);t=0;for(let i=0;i<n;i++)t=t<<8|r[e++];return{length:t,index:e}}function eA(r,e){if(r[e++]!==6)throw Ci("non-OID data",r);let{length:t,index:n}=Oy(r,e);e=n;let i=e+t,s=r[e++],a=(s/40>>0)+"."+s%40;for(;e<i;){let o=0;for(;e<i;){let c=r[e++];if(o=o<<7|c&127,c<128)break}a+="."+o}return{oid:a,index:e}}function Eo(r,e){if(r[e++]!==48)throw Ci("non-sequence data",r);return Oy(r,e)}function tV(r,e){e===void 0&&(e=0),e=Eo(r,e).index;let{length:t,index:n}=Eo(r,e);e=n+t,e=Eo(r,e).index;let{oid:i,index:s}=eA(r,e);switch(i){case"1.2.840.113549.1.1.4":return"MD5";case"1.2.840.113549.1.1.5":return"SHA-1";case"1.2.840.113549.1.1.11":return"SHA-256";case"1.2.840.113549.1.1.12":return"SHA-384";case"1.2.840.113549.1.1.13":return"SHA-512";case"1.2.840.113549.1.1.14":return"SHA-224";case"1.2.840.113549.1.1.15":return"SHA512-224";case"1.2.840.113549.1.1.16":return"SHA512-256";case"1.2.840.10045.4.1":return"SHA-1";case"1.2.840.10045.4.3.1":return"SHA-224";case"1.2.840.10045.4.3.2":return"SHA-256";case"1.2.840.10045.4.3.3":return"SHA-384";case"1.2.840.10045.4.3.4":return"SHA-512";case"1.2.840.113549.1.1.10":{if(e=s,e=Eo(r,e).index,r[e++]!==160)throw Ci("non-tag data",r);e=Oy(r,e).index,e=Eo(r,e).index;let{oid:a}=eA(r,e);switch(a){case"1.2.840.113549.2.5":return"MD5";case"1.3.14.3.2.26":return"SHA-1";case"2.16.840.1.101.3.4.2.1":return"SHA-256";case"2.16.840.1.101.3.4.2.2":return"SHA-384";case"2.16.840.1.101.3.4.2.3":return"SHA-512"}throw Ci("unknown hash OID "+a,r)}case"1.3.101.110":case"1.3.101.112":return"SHA-512";case"1.3.101.111":case"1.3.101.113":throw Ci("Ed448 certificate channel binding is not currently supported by Postgres")}throw Ci("unknown OID "+i,r)}tA.exports={signatureAlgorithmHashFromCertificate:tV}});var aA=h((ide,sA)=>{"use strict";var Gn=jy(),{signatureAlgorithmHashFromCertificate:rV}=rA();function nV(r,e){let t=["SCRAM-SHA-256"];e&&t.unshift("SCRAM-SHA-256-PLUS");let n=t.find(a=>r.includes(a));if(!n)throw new Error("SASL: Only mechanism(s) "+t.join(" and ")+" are supported");if(n==="SCRAM-SHA-256-PLUS"&&typeof e.getPeerCertificate!="function")throw new Error("SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate");let i=Gn.randomBytes(18).toString("base64");return{mechanism:n,clientNonce:i,response:(n==="SCRAM-SHA-256-PLUS"?"p=tls-server-end-point":e?"y":"n")+",,n=*,r="+i,message:"SASLInitialResponse"}}async function iV(r,e,t,n){if(r.message!=="SASLInitialResponse")throw new Error("SASL: Last message was not SASLInitialResponse");if(typeof e!="string")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string");if(e==="")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string");if(typeof t!="string")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string");let i=oV(t);if(i.nonce.startsWith(r.clientNonce)){if(i.nonce.length===r.clientNonce.length)throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce");let s="n=*,r="+r.clientNonce,a="r="+i.nonce+",s="+i.salt+",i="+i.iteration,o=n?"eSws":"biws";if(r.mechanism==="SCRAM-SHA-256-PLUS"){let x=n.getPeerCertificate().raw,I=rV(x);(I==="MD5"||I==="SHA-1")&&(I="SHA-256");let k=await Gn.hashByName(I,x);o=Buffer.concat([Buffer.from("p=tls-server-end-point,,"),Buffer.from(k)]).toString("base64")}let c="c="+o+",r="+i.nonce,l=s+","+a+","+c,u=Buffer.from(i.salt,"base64"),d=await Gn.deriveKey(e,u,i.iteration),p=await Gn.hmacSha256(d,"Client Key"),f=await Gn.sha256(p),m=await Gn.hmacSha256(f,l),y=lV(Buffer.from(p),Buffer.from(m)).toString("base64"),b=await Gn.hmacSha256(d,"Server Key"),g=await Gn.hmacSha256(b,l);r.message="SASLResponse",r.serverSignature=Buffer.from(g).toString("base64"),r.response=c+",p="+y}function sV(r,e){if(r.message!=="SASLResponse")throw new Error("SASL: Last message was not SASLResponse");if(typeof e!="string")throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string");let{serverSignature:t}=cV(e);if(t!==r.serverSignature)throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match")}function aV(r){if(typeof r!="string")throw new TypeError("SASL: text must be a string");return r.split("").map((e,t)=>r.charCodeAt(t)).every(e=>e>=33&&e<=43||e>=45&&e<=126)}function nA(r){return/^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(r)}function iA(r){if(typeof r!="string")throw new TypeError("SASL: attribute pairs text must be a string");return new Map(r.split(",").map(e=>{if(!/^.=/.test(e))throw new Error("SASL: Invalid attribute pair entry");let t=e[0],n=e.substring(2);return[t,n]}))}function oV(r){let e=iA(r),t=e.get("r");if(t){if(!aV(t))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing");let n=e.get("s");if(n){if(!nA(n))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing");let i=e.get("i");if(i){if(!/^[1-9][0-9]*$/.test(i))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing");let s=parseInt(i,10);return{nonce:t,salt:n,iteration:s}}function cV(r){let t=iA(r).get("v");if(t){if(!nA(t))throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64")}else throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing");return{serverSignature:t}}function lV(r,e){if(!Buffer.isBuffer(r))throw new TypeError("first argument must be a Buffer");if(!Buffer.isBuffer(e))throw new TypeError("second argument must be a Buffer");if(r.length!==e.length)throw new Error("Buffer lengths must match");if(r.length===0)throw new Error("Buffers cannot be empty");return Buffer.from(r.map((t,n)=>r[n]^e[n]))}sA.exports={startSession:nV,continueSession:iV,finalizeSession:sV}});var Ul=h((sde,oA)=>{"use strict";var uV=vo();function Jl(r){this._types=r||uV,this.text={},this.binary={}}Jl.prototype.getOverrides=function(r){switch(r){case"text":return this.text;case"binary":return this.binary;default:return{}}};Jl.prototype.setTypeParser=function(r,e,t){typeof e=="function"&&(t=e,e="text"),this.getOverrides(e)[r]=t};Jl.prototype.getTypeParser=function(r,e){return e=e||"text",this.getOverrides(e)[r]||this._types.getTypeParser(r,e)};oA.exports=Jl});var uA=h((ade,lA)=>{"use strict";function qs(r,e={}){if(r.charAt(0)==="/"){let c=r.split(" ");return{host:c[0],database:c[1]}}let t={},n,i=!1;/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(r)&&(r=encodeURI(r).replace(/%25(\d\d)/g,"%$1"));try{try{n=new URL(r,"postgres://base")}catch{n=new URL(r.replace("@/","@___DUMMY___/"),"postgres://base"),i=!0}}catch(c){throw c.input&&(c.input="*****REDACTED*****"),c}for(let c of n.searchParams.entries())t[c[0]]=c[1];if(t.user=t.user||decodeURIComponent(n.username),t.password=t.password||decodeURIComponent(n.password),n.protocol=="socket:")return t.host=decodeURI(n.pathname),t.database=n.searchParams.get("db"),t.client_encoding=n.searchParams.get("encoding"),t;let s=i?"":n.hostname;t.host?s&&/^%2f/i.test(s)&&(n.pathname=s+n.pathname):t.host=decodeURIComponent(s),t.port||(t.port=n.port);let a=n.pathname.slice(1)||null;t.database=a?decodeURI(a):null,(t.ssl==="true"||t.ssl==="1")&&(t.ssl=!0),t.ssl==="0"&&(t.ssl=!1),(t.sslcert||t.sslkey||t.sslrootcert||t.sslmode)&&(t.ssl={});let o=t.sslcert||t.sslkey||t.sslrootcert?require("fs"):null;if(t.sslcert&&(t.ssl.cert=o.readFileSync(t.sslcert).toString()),t.sslkey&&(t.ssl.key=o.readFileSync(t.sslkey).toString()),t.sslrootcert&&(t.ssl.ca=o.readFileSync(t.sslrootcert).toString()),e.useLibpqCompat&&t.uselibpqcompat)throw new Error("Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.");if(t.uselibpqcompat==="true"||e.useLibpqCompat)switch(t.sslmode){case"disable":{t.ssl=!1;break}case"prefer":{t.ssl.rejectUnauthorized=!1;break}case"require":{t.sslrootcert?t.ssl.checkServerIdentity=function(){}:t.ssl.rejectUnauthorized=!1;break}case"verify-ca":{if(!t.ssl.ca)throw new Error("SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.");t.ssl.checkServerIdentity=function(){};break}case"verify-full":break}else switch(t.sslmode){case"disable":{t.ssl=!1;break}case"prefer":case"require":case"verify-ca":case"verify-full":{t.sslmode!=="verify-full"&&Ry(t.sslmode);break}case"no-verify":{t.ssl.rejectUnauthorized=!1;break}}return t}function dV(r){return Object.entries(r).reduce((t,[n,i])=>(i!=null&&(t[n]=i),t),{})}function cA(r){return Object.entries(r).reduce((t,[n,i])=>{if(n==="ssl"){let s=i;typeof s=="boolean"&&(t[n]=s),typeof s=="object"&&(t[n]=dV(s))}else if(i!=null)if(n==="port"){if(i!==""){let s=parseInt(i,10);if(isNaN(s))throw new Error(`Invalid ${n}: ${i}`);t[n]=s}}else t[n]=i;return t},{})}function pV(r){return cA(qs(r))}function Ry(r){!Ry.warned&&typeof process<"u"&&process.emitWarning&&(Ry.warned=!0,process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'.
In the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees.
To prepare for this change:
- If you want the current behavior, explicitly use 'sslmode=verify-full'
- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${r}'
See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`))}lA.exports=qs;qs.parse=qs;qs.toClientConfig=cA;qs.parseIntoClientConfig=pV});var Dy=h((ode,fA)=>{"use strict";var fV=require("dns"),pA=xo(),dA=uA().parse,It=function(r,e,t){return e[r]?e[r]:(t===void 0?t=process.env["PG"+r.toUpperCase()]:t===!1||(t=process.env[t]),t||pA[r])},mV=function(){switch(process.env.PGSSLMODE){case"disable":return!1;case"prefer":case"require":case"verify-ca":case"verify-full":return!0;case"no-verify":return{rejectUnauthorized:!1}}return pA.ssl},Fs=function(r){return"'"+(""+r).replace(/\\/g,"\\\\").replace(/'/g,"\\'")+"'"},pr=function(r,e,t){let n=e[t];n!=null&&r.push(t+"="+Fs(n))},Cy=class{constructor(e){e=typeof e=="string"?dA(e):e||{},e.connectionString&&(e=Object.assign({},e,dA(e.connectionString))),this.user=It("user",e),this.database=It("database",e),this.database===void 0&&(this.database=this.user),this.port=parseInt(It("port",e),10),this.host=It("host",e),Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:It("password",e)}),this.binary=It("binary",e),this.options=It("options",e),this.ssl=typeof e.ssl>"u"?mV():e.ssl,typeof this.ssl=="string"&&this.ssl==="true"&&(this.ssl=!0),this.ssl==="no-verify"&&(this.ssl={rejectUnauthorized:!1}),this.ssl&&this.ssl.key&&Object.defineProperty(this.ssl,"key",{enumerable:!1}),this.client_encoding=It("client_encoding",e),this.replication=It("replication",e),this.isDomainSocket=!(this.host||"").indexOf("/"),this.application_name=It("application_name",e,"PGAPPNAME"),this.fallback_application_name=It("fallback_application_name",e,!1),this.statement_timeout=It("statement_timeout",e,!1),this.lock_timeout=It("lock_timeout",e,!1),this.idle_in_transaction_session_timeout=It("idle_in_transaction_session_timeout",e,!1),this.query_timeout=It("query_timeout",e,!1),e.connectionTimeoutMillis===void 0?this.connect_timeout=process.env.PGCONNECT_TIMEOUT||0:this.connect_timeout=Math.floor(e.connectionTimeoutMillis/1e3),e.keepAlive===!1?this.keepalives=0:e.keepAlive===!0&&(this.keepalives=1),typeof e.keepAliveInitialDelayMillis=="number"&&(this.keepalives_idle=Math.floor(e.keepAliveInitialDelayMillis/1e3))}getLibpqConnectionString(e){let t=[];pr(t,this,"user"),pr(t,this,"password"),pr(t,this,"port"),pr(t,this,"application_name"),pr(t,this,"fallback_application_name"),pr(t,this,"connect_timeout"),pr(t,this,"options");let n=typeof this.ssl=="object"?this.ssl:this.ssl?{sslmode:this.ssl}:{};if(pr(t,n,"sslmode"),pr(t,n,"sslca"),pr(t,n,"sslkey"),pr(t,n,"sslcert"),pr(t,n,"sslrootcert"),this.database&&t.push("dbname="+Fs(this.database)),this.replication&&t.push("replication="+Fs(this.replication)),this.host&&t.push("host="+Fs(this.host)),this.isDomainSocket)return e(null,t.join(" "));this.client_encoding&&t.push("client_encoding="+Fs(this.client_encoding)),fV.lookup(this.host,function(i,s){return i?e(i,null):(t.push("hostaddr="+Fs(s)),e(null,t.join(" ")))})}};fA.exports=Cy});var My=h((cde,hA)=>{"use strict";var hV=vo(),mA=/^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/,Py=class{constructor(e,t){this.command=null,this.rowCount=null,this.oid=null,this.rows=[],this.fields=[],this._parsers=void 0,this._types=t,this.RowCtor=null,this.rowAsArray=e==="array",this.rowAsArray&&(this.parseRow=this._parseRowAsArray),this._prebuiltEmptyResultObject=null}addCommandComplete(e){let t;e.text?t=mA.exec(e.text):t=mA.exec(e.command),t&&(this.command=t[1],t[3]?(this.oid=parseInt(t[2],10),this.rowCount=parseInt(t[3],10)):t[2]&&(this.rowCount=parseInt(t[2],10)))}_parseRowAsArray(e){let t=new Array(e.length);for(let n=0,i=e.length;n<i;n++){let s=e[n];s!==null?t[n]=this._parsers[n](s):t[n]=null}return t}parseRow(e){let t={...this._prebuiltEmptyResultObject};for(let n=0,i=e.length;n<i;n++){let s=e[n],a=this.fields[n].name;if(s!==null){let o=this.fields[n].format==="binary"?Buffer.from(s):s;t[a]=this._parsers[n](o)}else t[a]=null}return t}addRow(e){this.rows.push(e)}addFields(e){this.fields=e,this.fields.length&&(this._parsers=new Array(e.length));let t={};for(let n=0;n<e.length;n++){let i=e[n];t[i.name]=null,this._types?this._parsers[n]=this._types.getTypeParser(i.dataTypeID,i.format||"text"):this._parsers[n]=hV.getTypeParser(i.dataTypeID,i.format||"text")}this._prebuiltEmptyResultObject={...t}}};hA.exports=Py});var vA=h((lde,gA)=>{"use strict";var{EventEmitter:yV}=require("events"),yA=My(),bA=Ls(),Ly=class extends yV{constructor(e,t,n){super(),e=bA.normalizeQueryConfig(e,t,n),this.text=e.text,this.values=e.values,this.rows=e.rows,this.types=e.types,this.name=e.name,this.queryMode=e.queryMode,this.binary=e.binary,this.portal=e.portal||"",this.callback=e.callback,this._rowMode=e.rowMode,process.domain&&e.callback&&(this.callback=process.domain.bind(e.callback)),this._result=new yA(this._rowMode,this.types),this._results=this._result,this._canceledDueToError=!1}requiresPreparation(){return this.queryMode==="extended"||this.name||this.rows?!0:!this.text||!this.values?!1:this.values.length>0}_checkForMultirow(){this._result.command&&(Array.isArray(this._results)||(this._results=[this._result]),this._result=new yA(this._rowMode,this._result._types),this._results.push(this._result))}handleRowDescription(e){this._checkForMultirow(),this._result.addFields(e.fields),this._accumulateRows=this.callback||!this.listeners("row").length}handleDataRow(e){let t;if(!this._canceledDueToError){try{t=this._result.parseRow(e.fields)}catch(n){this._canceledDueToError=n;return}this.emit("row",t,this._result),this._accumulateRows&&this._result.addRow(t)}}handleCommandComplete(e,t){this._checkForMultirow(),this._result.addCommandComplete(e),this.rows&&t.sync()}handleEmptyQuery(e){this.rows&&e.sync()}handleError(e,t){if(this._canceledDueToError&&(e=this._canceledDueToError,this._canceledDueToError=!1),this.callback)return this.callback(e);this.emit("error",e)}handleReadyForQuery(e){if(this._canceledDueToError)return this.handleError(this._canceledDueToError,e);if(this.callback)try{this.callback(null,this._results)}catch(t){process.nextTick(()=>{throw t})}this.emit("end",this._results)}submit(e){if(typeof this.text!="string"&&typeof this.name!="string")return new Error("A query must have either text or a name. Supplying neither is unsupported.");let t=e.parsedStatements[this.name];if(this.text&&t&&this.text!==t)return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);if(this.values&&!Array.isArray(this.values))return new Error("Query values must be an array");if(this.requiresPreparation()){e.stream.cork&&e.stream.cork();try{this.prepare(e)}finally{e.stream.uncork&&e.stream.uncork()}}else e.query(this.text);return null}hasBeenParsed(e){return this.name&&e.parsedStatements[this.name]}handlePortalSuspended(e){this._getRows(e,this.rows)}_getRows(e,t){e.execute({portal:this.portal,rows:t}),t?e.flush():e.sync()}prepare(e){this.hasBeenParsed(e)||e.parse({text:this.text,name:this.name,types:this.types});try{e.bind({portal:this.portal,statement:this.name,values:this.values,binary:this.binary,valueMapper:bA.prepareValue})}catch(t){this.handleError(t,e);return}e.describe({type:"P",name:this.portal||""}),this._getRows(e,this.rows)}handleCopyInResponse(e){e.sendCopyFail("No source stream defined")}handleCopyData(e,t){}};gA.exports=Ly});var Xy=h(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.NoticeMessage=V.DataRowMessage=V.CommandCompleteMessage=V.ReadyForQueryMessage=V.NotificationResponseMessage=V.BackendKeyDataMessage=V.AuthenticationMD5Password=V.ParameterStatusMessage=V.ParameterDescriptionMessage=V.RowDescriptionMessage=V.Field=V.CopyResponse=V.CopyDataMessage=V.DatabaseError=V.copyDone=V.emptyQuery=V.replicationStart=V.portalSuspended=V.noData=V.closeComplete=V.bindComplete=V.parseComplete=void 0;V.parseComplete={name:"parseComplete",length:5};V.bindComplete={name:"bindComplete",length:5};V.closeComplete={name:"closeComplete",length:5};V.noData={name:"noData",length:5};V.portalSuspended={name:"portalSuspended",length:5};V.replicationStart={name:"replicationStart",length:4};V.emptyQuery={name:"emptyQuery",length:4};V.copyDone={name:"copyDone",length:4};var Ny=class extends Error{constructor(e,t,n){super(e),this.length=t,this.name=n}};V.DatabaseError=Ny;var qy=class{constructor(e,t){this.length=e,this.chunk=t,this.name="copyData"}};V.CopyDataMessage=qy;var Fy=class{constructor(e,t,n,i){this.length=e,this.name=t,this.binary=n,this.columnTypes=new Array(i)}};V.CopyResponse=Fy;var Jy=class{constructor(e,t,n,i,s,a,o){this.name=e,this.tableID=t,this.columnID=n,this.dataTypeID=i,this.dataTypeSize=s,this.dataTypeModifier=a,this.format=o}};V.Field=Jy;var Uy=class{constructor(e,t){this.length=e,this.fieldCount=t,this.name="rowDescription",this.fields=new Array(this.fieldCount)}};V.RowDescriptionMessage=Uy;var Gy=class{constructor(e,t){this.length=e,this.parameterCount=t,this.name="parameterDescription",this.dataTypeIDs=new Array(this.parameterCount)}};V.ParameterDescriptionMessage=Gy;var By=class{constructor(e,t,n){this.length=e,this.parameterName=t,this.parameterValue=n,this.name="parameterStatus"}};V.ParameterStatusMessage=By;var $y=class{constructor(e,t){this.length=e,this.salt=t,this.name="authenticationMD5Password"}};V.AuthenticationMD5Password=$y;var Vy=class{constructor(e,t,n){this.length=e,this.processID=t,this.secretKey=n,this.name="backendKeyData"}};V.BackendKeyDataMessage=Vy;var Hy=class{constructor(e,t,n,i){this.length=e,this.processId=t,this.channel=n,this.payload=i,this.name="notification"}};V.NotificationResponseMessage=Hy;var zy=class{constructor(e,t){this.length=e,this.status=t,this.name="readyForQuery"}};V.ReadyForQueryMessage=zy;var Yy=class{constructor(e,t){this.length=e,this.text=t,this.name="commandComplete"}};V.CommandCompleteMessage=Yy;var Wy=class{constructor(e,t){this.length=e,this.fields=t,this.name="dataRow",this.fieldCount=t.length}};V.DataRowMessage=Wy;var Qy=class{constructor(e,t){this.length=e,this.message=t,this.name="notice"}};V.NoticeMessage=Qy});var xA=h(Gl=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.Writer=void 0;var Zy=class{constructor(e=256){this.size=e,this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(e)}ensure(e){if(this.buffer.length-this.offset<e){let n=this.buffer,i=n.length+(n.length>>1)+e;this.buffer=Buffer.allocUnsafe(i),n.copy(this.buffer)}}addInt32(e){return this.ensure(4),this.buffer[this.offset++]=e>>>24&255,this.buffer[this.offset++]=e>>>16&255,this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addInt16(e){return this.ensure(2),this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addCString(e){if(!e)this.ensure(1);else{let t=Buffer.byteLength(e);this.ensure(t+1),this.buffer.write(e,this.offset,"utf-8"),this.offset+=t}return this.buffer[this.offset++]=0,this}addString(e=""){let t=Buffer.byteLength(e);return this.ensure(t),this.buffer.write(e,this.offset),this.offset+=t,this}add(e){return this.ensure(e.length),e.copy(this.buffer,this.offset),this.offset+=e.length,this}join(e){if(e){this.buffer[this.headerPosition]=e;let t=this.offset-(this.headerPosition+1);this.buffer.writeInt32BE(t,this.headerPosition+1)}return this.buffer.slice(e?0:5,this.offset)}flush(e){let t=this.join(e);return this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(this.size),t}};Gl.Writer=Zy});var SA=h($l=>{"use strict";Object.defineProperty($l,"__esModule",{value:!0});$l.serialize=void 0;var eb=xA(),Te=new eb.Writer,bV=r=>{Te.addInt16(3).addInt16(0);for(let n of Object.keys(r))Te.addCString(n).addCString(r[n]);Te.addCString("client_encoding").addCString("UTF8");let e=Te.addCString("").flush(),t=e.length+4;return new eb.Writer().addInt32(t).add(e).flush()},gV=()=>{let r=Buffer.allocUnsafe(8);return r.writeInt32BE(8,0),r.writeInt32BE(80877103,4),r},vV=r=>Te.addCString(r).flush(112),xV=function(r,e){return Te.addCString(r).addInt32(Buffer.byteLength(e)).addString(e),Te.flush(112)},EV=function(r){return Te.addString(r).flush(112)},SV=r=>Te.addCString(r).flush(81),EA=[],wV=r=>{let e=r.name||"";e.length>63&&(console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",e,e.length),console.error("This can cause conflicts and silent errors executing queries"));let t=r.types||EA,n=t.length,i=Te.addCString(e).addCString(r.text).addInt16(n);for(let s=0;s<n;s++)i.addInt32(t[s]);return Te.flush(80)},Js=new eb.Writer,IV=function(r,e){for(let t=0;t<r.length;t++){let n=e?e(r[t],t):r[t];n==null?(Te.addInt16(0),Js.addInt32(-1)):n instanceof Buffer?(Te.addInt16(1),Js.addInt32(n.length),Js.add(n)):(Te.addInt16(0),Js.addInt32(Buffer.byteLength(n)),Js.addString(n))}},_V=(r={})=>{let e=r.portal||"",t=r.statement||"",n=r.binary||!1,i=r.values||EA,s=i.length;return Te.addCString(e).addCString(t),Te.addInt16(s),IV(i,r.valueMapper),Te.addInt16(s),Te.add(Js.flush()),Te.addInt16(1),Te.addInt16(n?1:0),Te.flush(66)},kV=Buffer.from([69,0,0,0,9,0,0,0,0,0]),TV=r=>{if(!r||!r.portal&&!r.rows)return kV;let e=r.portal||"",t=r.rows||0,n=Buffer.byteLength(e),i=4+n+1+4,s=Buffer.allocUnsafe(1+i);return s[0]=69,s.writeInt32BE(i,1),s.write(e,5,"utf-8"),s[n+5]=0,s.writeUInt32BE(t,s.length-4),s},AV=(r,e)=>{let t=Buffer.allocUnsafe(16);return t.writeInt32BE(16,0),t.writeInt16BE(1234,4),t.writeInt16BE(5678,6),t.writeInt32BE(r,8),t.writeInt32BE(e,12),t},tb=(r,e)=>{let n=4+Buffer.byteLength(e)+1,i=Buffer.allocUnsafe(1+n);return i[0]=r,i.writeInt32BE(n,1),i.write(e,5,"utf-8"),i[n]=0,i},KV=Te.addCString("P").flush(68),jV=Te.addCString("S").flush(68),OV=r=>r.name?tb(68,`${r.type}${r.name||""}`):r.type==="P"?KV:jV,RV=r=>{let e=`${r.type}${r.name||""}`;return tb(67,e)},CV=r=>Te.add(r).flush(100),DV=r=>tb(102,r),Bl=r=>Buffer.from([r,0,0,0,4]),PV=Bl(72),MV=Bl(83),LV=Bl(88),NV=Bl(99),qV={startup:bV,password:vV,requestSsl:gV,sendSASLInitialResponseMessage:xV,sendSCRAMClientFinalMessage:EV,query:SV,parse:wV,bind:_V,execute:TV,describe:OV,close:RV,flush:()=>PV,sync:()=>MV,end:()=>LV,copyData:CV,copyDone:()=>NV,copyFail:DV,cancel:AV};$l.serialize=qV});var wA=h(Vl=>{"use strict";Object.defineProperty(Vl,"__esModule",{value:!0});Vl.BufferReader=void 0;var rb=class{constructor(e=0){this.offset=e,this.buffer=Buffer.allocUnsafe(0),this.encoding="utf-8"}setBuffer(e,t){this.offset=e,this.buffer=t}int16(){let e=this.buffer.readInt16BE(this.offset);return this.offset+=2,e}byte(){let e=this.buffer[this.offset];return this.offset++,e}int32(){let e=this.buffer.readInt32BE(this.offset);return this.offset+=4,e}uint32(){let e=this.buffer.readUInt32BE(this.offset);return this.offset+=4,e}string(e){let t=this.buffer.toString(this.encoding,this.offset,this.offset+e);return this.offset+=e,t}cstring(){let e=this.offset,t=e;for(;this.buffer[t++]!==0;);return this.offset=t,this.buffer.toString(this.encoding,e,t-1)}bytes(e){let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}};Vl.BufferReader=rb});var TA=h(Hl=>{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});Hl.Parser=void 0;var De=Xy(),FV=wA(),ib=1,JV=4,IA=ib+JV,Jt=-1,nb=Buffer.allocUnsafe(0),sb=class{constructor(e){if(this.buffer=nb,this.bufferLength=0,this.bufferOffset=0,this.reader=new FV.BufferReader,e?.mode==="binary")throw new Error("Binary mode not supported yet");this.mode=e?.mode||"text"}parse(e,t){this.mergeBuffer(e);let n=this.bufferOffset+this.bufferLength,i=this.bufferOffset;for(;i+IA<=n;){let s=this.buffer[i],a=this.buffer.readUInt32BE(i+ib),o=ib+a;if(o+i<=n){let c=this.handlePacket(i+IA,s,a,this.buffer);t(c),i+=o}else break}i===n?(this.buffer=nb,this.bufferLength=0,this.bufferOffset=0):(this.bufferLength=n-i,this.bufferOffset=i)}mergeBuffer(e){if(this.bufferLength>0){let t=this.bufferLength+e.byteLength;if(t+this.bufferOffset>this.buffer.byteLength){let i;if(t<=this.buffer.byteLength&&this.bufferOffset>=this.bufferLength)i=this.buffer;else{let s=this.buffer.byteLength*2;for(;t>=s;)s*=2;i=Buffer.allocUnsafe(s)}this.buffer.copy(i,0,this.bufferOffset,this.bufferOffset+this.bufferLength),this.buffer=i,this.bufferOffset=0}e.copy(this.buffer,this.bufferOffset+this.bufferLength),this.bufferLength=t}else this.buffer=e,this.bufferOffset=0,this.bufferLength=e.byteLength}handlePacket(e,t,n,i){let{reader:s}=this;s.setBuffer(e,i);let a;switch(t){case 50:a=De.bindComplete;break;case 49:a=De.parseComplete;break;case 51:a=De.closeComplete;break;case 110:a=De.noData;break;case 115:a=De.portalSuspended;break;case 99:a=De.copyDone;break;case 87:a=De.replicationStart;break;case 73:a=De.emptyQuery;break;case 68:a=QV(s);break;case 67:a=GV(s);break;case 90:a=UV(s);break;case 65:a=HV(s);break;case 82:a=eH(s,n);break;case 83:a=XV(s);break;case 75:a=ZV(s);break;case 69:a=_A(s,"error");break;case 78:a=_A(s,"notice");break;case 84:a=zV(s);break;case 116:a=WV(s);break;case 71:a=$V(s);break;case 72:a=VV(s);break;case 100:a=BV(s,n);break;default:return new De.DatabaseError("received invalid response: "+t.toString(16),n,"error")}return s.setBuffer(0,nb),a.length=n,a}};Hl.Parser=sb;var UV=r=>{let e=r.string(1);return new De.ReadyForQueryMessage(Jt,e)},GV=r=>{let e=r.cstring();return new De.CommandCompleteMessage(Jt,e)},BV=(r,e)=>{let t=r.bytes(e-4);return new De.CopyDataMessage(Jt,t)},$V=r=>kA(r,"copyInResponse"),VV=r=>kA(r,"copyOutResponse"),kA=(r,e)=>{let t=r.byte()!==0,n=r.int16(),i=new De.CopyResponse(Jt,e,t,n);for(let s=0;s<n;s++)i.columnTypes[s]=r.int16();return i},HV=r=>{let e=r.int32(),t=r.cstring(),n=r.cstring();return new De.NotificationResponseMessage(Jt,e,t,n)},zV=r=>{let e=r.int16(),t=new De.RowDescriptionMessage(Jt,e);for(let n=0;n<e;n++)t.fields[n]=YV(r);return t},YV=r=>{let e=r.cstring(),t=r.uint32(),n=r.int16(),i=r.uint32(),s=r.int16(),a=r.int32(),o=r.int16()===0?"text":"binary";return new De.Field(e,t,n,i,s,a,o)},WV=r=>{let e=r.int16(),t=new De.ParameterDescriptionMessage(Jt,e);for(let n=0;n<e;n++)t.dataTypeIDs[n]=r.int32();return t},QV=r=>{let e=r.int16(),t=new Array(e);for(let n=0;n<e;n++){let i=r.int32();t[n]=i===-1?null:r.string(i)}return new De.DataRowMessage(Jt,t)},XV=r=>{let e=r.cstring(),t=r.cstring();return new De.ParameterStatusMessage(Jt,e,t)},ZV=r=>{let e=r.int32(),t=r.int32();return new De.BackendKeyDataMessage(Jt,e,t)},eH=(r,e)=>{let t=r.int32(),n={name:"authenticationOk",length:e};switch(t){case 0:break;case 3:n.length===8&&(n.name="authenticationCleartextPassword");break;case 5:if(n.length===12){n.name="authenticationMD5Password";let i=r.bytes(4);return new De.AuthenticationMD5Password(Jt,i)}break;case 10:{n.name="authenticationSASL",n.mechanisms=[];let i;do i=r.cstring(),i&&n.mechanisms.push(i);while(i)}break;case 11:n.name="authenticationSASLContinue",n.data=r.string(e-8);break;case 12:n.name="authenticationSASLFinal",n.data=r.string(e-8);break;default:throw new Error("Unknown authenticationOk message type "+t)}return n},_A=(r,e)=>{let t={},n=r.string(1);for(;n!=="\0";)t[n]=r.cstring(),n=r.string(1);let i=t.M,s=e==="notice"?new De.NoticeMessage(Jt,i):new De.DatabaseError(i,Jt,e);return s.severity=t.S,s.code=t.C,s.detail=t.D,s.hint=t.H,s.position=t.P,s.internalPosition=t.p,s.internalQuery=t.q,s.where=t.W,s.schema=t.s,s.table=t.t,s.column=t.c,s.dataType=t.d,s.constraint=t.n,s.file=t.F,s.line=t.L,s.routine=t.R,s}});var ab=h(Bn=>{"use strict";Object.defineProperty(Bn,"__esModule",{value:!0});Bn.DatabaseError=Bn.serialize=Bn.parse=void 0;var tH=Xy();Object.defineProperty(Bn,"DatabaseError",{enumerable:!0,get:function(){return tH.DatabaseError}});var rH=SA();Object.defineProperty(Bn,"serialize",{enumerable:!0,get:function(){return rH.serialize}});var nH=TA();function iH(r,e){let t=new nH.Parser;return r.on("data",n=>t.parse(n,e)),new Promise(n=>r.on("end",()=>n()))}Bn.parse=iH});var AA=h(ob=>{"use strict";Object.defineProperty(ob,"__esModule",{value:!0});ob.default={}});var jA=h((bde,KA)=>{var{getStream:sH,getSecureStream:aH}=uH();KA.exports={getStream:sH,getSecureStream:aH};function oH(){function r(t){let n=require("net");return new n.Socket}function e(t){return require("tls").connect(t)}return{getStream:r,getSecureStream:e}}function cH(){function r(t){let{CloudflareSocket:n}=AA();return new n(t)}function e(t){return t.socket.startTls(t),t.socket}return{getStream:r,getSecureStream:e}}function lH(){if(typeof navigator=="object"&&navigator!==null&&typeof navigator.userAgent=="string")return navigator.userAgent==="Cloudflare-Workers";if(typeof Response=="function"){let r=new Response(null,{cf:{thing:!0}});if(typeof r.cf=="object"&&r.cf!==null&&r.cf.thing)return!0}return!1}function uH(){return lH()?cH():oH()}});var lb=h((gde,OA)=>{"use strict";var dH=require("events").EventEmitter,{parse:pH,serialize:st}=ab(),{getStream:fH,getSecureStream:mH}=jA(),hH=st.flush(),yH=st.sync(),bH=st.end(),cb=class extends dH{constructor(e){super(),e=e||{},this.stream=e.stream||fH(e.ssl),typeof this.stream=="function"&&(this.stream=this.stream(e)),this._keepAlive=e.keepAlive,this._keepAliveInitialDelayMillis=e.keepAliveInitialDelayMillis,this.parsedStatements={},this.ssl=e.ssl||!1,this._ending=!1,this._emitMessage=!1;let t=this;this.on("newListener",function(n){n==="message"&&(t._emitMessage=!0)})}connect(e,t){let n=this;this._connecting=!0,this.stream.setNoDelay(!0),this.stream.connect(e,t),this.stream.once("connect",function(){n._keepAlive&&n.stream.setKeepAlive(!0,n._keepAliveInitialDelayMillis),n.emit("connect")});let i=function(s){n._ending&&(s.code==="ECONNRESET"||s.code==="EPIPE")||n.emit("error",s)};if(this.stream.on("error",i),this.stream.on("close",function(){n.emit("end")}),!this.ssl)return this.attachListeners(this.stream);this.stream.once("data",function(s){switch(s.toString("utf8")){case"S":break;case"N":return n.stream.end(),n.emit("error",new Error("The server does not support SSL connections"));default:return n.stream.end(),n.emit("error",new Error("There was an error establishing an SSL connection"))}let o={socket:n.stream};n.ssl!==!0&&(Object.assign(o,n.ssl),"key"in n.ssl&&(o.key=n.ssl.key));let c=require("net");c.isIP&&c.isIP(t)===0&&(o.servername=t);try{n.stream=mH(o)}catch(l){return n.emit("error",l)}n.attachListeners(n.stream),n.stream.on("error",i),n.emit("sslconnect")})}attachListeners(e){pH(e,t=>{let n=t.name==="error"?"errorMessage":t.name;this._emitMessage&&this.emit("message",t),this.emit(n,t)})}requestSsl(){this.stream.write(st.requestSsl())}startup(e){this.stream.write(st.startup(e))}cancel(e,t){this._send(st.cancel(e,t))}password(e){this._send(st.password(e))}sendSASLInitialResponseMessage(e,t){this._send(st.sendSASLInitialResponseMessage(e,t))}sendSCRAMClientFinalMessage(e){this._send(st.sendSCRAMClientFinalMessage(e))}_send(e){return this.stream.writable?this.stream.write(e):!1}query(e){this._send(st.query(e))}parse(e){this._send(st.parse(e))}bind(e){this._send(st.bind(e))}execute(e){this._send(st.execute(e))}flush(){this.stream.writable&&this.stream.write(hH)}sync(){this._ending=!0,this._send(yH)}ref(){this.stream.ref()}unref(){this.stream.unref()}end(){if(this._ending=!0,!this._connecting||!this.stream.writable){this.stream.end();return}return this.stream.write(bH,()=>{this.stream.end()})}close(e){this._send(st.close(e))}describe(e){this._send(st.describe(e))}sendCopyFromChunk(e){this._send(st.copyData(e))}endCopyFrom(){this._send(st.copyDone())}sendCopyFail(e){this._send(st.copyFail(e))}};OA.exports=cb});var PA=h((vde,DA)=>{"use strict";var{Transform:gH}=require("stream"),{StringDecoder:vH}=require("string_decoder"),$n=Symbol("last"),zl=Symbol("decoder");function xH(r,e,t){let n;if(this.overflow){if(n=this[zl].write(r).split(this.matcher),n.length===1)return t();n.shift(),this.overflow=!1}else this[$n]+=this[zl].write(r),n=this[$n].split(this.matcher);this[$n]=n.pop();for(let i=0;i<n.length;i++)try{CA(this,this.mapper(n[i]))}catch(s){return t(s)}if(this.overflow=this[$n].length>this.maxLength,this.overflow&&!this.skipOverflow){t(new Error("maximum buffer reached"));return}t()}function EH(r){if(this[$n]+=this[zl].end(),this[$n])try{CA(this,this.mapper(this[$n]))}catch(e){return r(e)}r()}function CA(r,e){e!==void 0&&r.push(e)}function RA(r){return r}function SH(r,e,t){switch(r=r||/\r?\n/,e=e||RA,t=t||{},arguments.length){case 1:typeof r=="function"?(e=r,r=/\r?\n/):typeof r=="object"&&!(r instanceof RegExp)&&!r[Symbol.split]&&(t=r,r=/\r?\n/);break;case 2:typeof r=="function"?(t=e,e=r,r=/\r?\n/):typeof e=="object"&&(t=e,e=RA)}t=Object.assign({},t),t.autoDestroy=!0,t.transform=xH,t.flush=EH,t.readableObjectMode=!0;let n=new gH(t);return n[$n]="",n[zl]=new vH("utf8"),n.matcher=r,n.mapper=e,n.maxLength=t.maxLength,n.skipOverflow=t.skipOverflow||!1,n.overflow=!1,n._destroy=function(i,s){this._writableState.errorEmitted=!1,s(i)},n}DA.exports=SH});var NA=h((xde,hn)=>{"use strict";var MA=require("path"),wH=require("stream").Stream,IH=PA(),LA=require("util"),_H=5432,Yl=process.platform==="win32",So=process.stderr,kH=56,TH=7,AH=61440,KH=32768;function jH(r){return(r&AH)==KH}var Us=["host","port","database","user","password"],ub=Us.length,OH=Us[ub-1];function db(){var r=So instanceof wH&&So.writable===!0;if(r){var e=Array.prototype.slice.call(arguments).concat(`
`);So.write(LA.format.apply(LA,e))}}Object.defineProperty(hn.exports,"isWin",{get:function(){return Yl},set:function(r){Yl=r}});hn.exports.warnTo=function(r){var e=So;return So=r,e};hn.exports.getFileName=function(r){var e=r||process.env,t=e.PGPASSFILE||(Yl?MA.join(e.APPDATA||"./","postgresql","pgpass.conf"):MA.join(e.HOME||"./",".pgpass"));return t};hn.exports.usePgPass=function(r,e){return Object.prototype.hasOwnProperty.call(process.env,"PGPASSWORD")?!1:Yl?!0:(e=e||"<unkn>",jH(r.mode)?r.mode&(kH|TH)?(db('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less',e),!1):!0:(db('WARNING: password file "%s" is not a plain file',e),!1))};var RH=hn.exports.match=function(r,e){return Us.slice(0,-1).reduce(function(t,n,i){return i==1&&Number(r[n]||_H)===Number(e[n])?t&&!0:t&&(e[n]==="*"||e[n]===r[n])},!0)};hn.exports.getPassword=function(r,e,t){var n,i=e.pipe(IH());function s(c){var l=CH(c);l&&DH(l)&&RH(r,l)&&(n=l[OH],i.end())}var a=function(){e.destroy(),t(n)},o=function(c){e.destroy(),db("WARNING: error on reading file: %s",c),t(void 0)};e.on("error",o),i.on("data",s).on("end",a).on("error",o)};var CH=hn.exports.parseLine=function(r){if(r.length<11||r.match(/^\s+#/))return null;for(var e="",t="",n=0,i=0,s=0,a={},o=!1,c=function(u,d,p){var f=r.substring(d,p);Object.hasOwnProperty.call(process.env,"PGPASS_NO_DEESCAPE")||(f=f.replace(/\\([:\\])/g,"$1")),a[Us[u]]=f},l=0;l<r.length-1;l+=1){if(e=r.charAt(l+1),t=r.charAt(l),o=n==ub-1,o){c(n,i);break}l>=0&&e==":"&&t!=="\\"&&(c(n,i,l+1),i=l+2,n+=1)}return a=Object.keys(a).length===ub?a:null,a},DH=hn.exports.isValidEntry=function(r){for(var e={0:function(a){return a.length>0},1:function(a){return a==="*"?!0:(a=Number(a),isFinite(a)&&a>0&&a<9007199254740992&&Math.floor(a)===a)},2:function(a){return a.length>0},3:function(a){return a.length>0},4:function(a){return a.length>0}},t=0;t<Us.length;t+=1){var n=e[t],i=r[Us[t]]||"",s=n(i);if(!s)return!1}return!0}});var FA=h((Sde,pb)=>{"use strict";var Ede=require("path"),qA=require("fs"),Wl=NA();pb.exports=function(r,e){var t=Wl.getFileName();qA.stat(t,function(n,i){if(n||!Wl.usePgPass(i,t))return e(void 0);var s=qA.createReadStream(t);Wl.getPassword(r,s,e)})};pb.exports.warnTo=Wl.warnTo});var $A=h((wde,BA)=>{var PH=require("events").EventEmitter,JA=Ls(),wo=require("util"),fb=aA(),MH=Ul(),LH=Dy(),GA=vA(),NH=xo(),qH=lb(),FH=jy(),UA=wo.deprecate(()=>{},"Client.activeQuery is deprecated and will be removed in pg@9.0"),JH=wo.deprecate(()=>{},"Client.queryQueue is deprecated and will be removed in pg@9.0."),UH=wo.deprecate(()=>{},"pgpass support is deprecated and will be removed in pg@9.0. You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code."),GH=wo.deprecate(()=>{},"Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0."),BH=wo.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead."),Ql=class extends PH{constructor(e){super(),this.connectionParameters=new LH(e),this.user=this.connectionParameters.user,this.database=this.connectionParameters.database,this.port=this.connectionParameters.port,this.host=this.connectionParameters.host,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:this.connectionParameters.password}),this.replication=this.connectionParameters.replication;let t=e||{};t.Promise&&GH(),this._Promise=t.Promise||global.Promise,this._types=new MH(t.types),this._ending=!1,this._ended=!1,this._connecting=!1,this._connected=!1,this._connectionError=!1,this._queryable=!0,this._activeQuery=null,this.enableChannelBinding=!!t.enableChannelBinding,this.connection=t.connection||new qH({stream:t.stream,ssl:this.connectionParameters.ssl,keepAlive:t.keepAlive||!1,keepAliveInitialDelayMillis:t.keepAliveInitialDelayMillis||0,encoding:this.connectionParameters.client_encoding||"utf8"}),this._queryQueue=[],this.binary=t.binary||NH.binary,this.processID=null,this.secretKey=null,this.ssl=this.connectionParameters.ssl||!1,this.ssl&&this.ssl.key&&Object.defineProperty(this.ssl,"key",{enumerable:!1}),this._connectionTimeoutMillis=t.connectionTimeoutMillis||0}get activeQuery(){return UA(),this._activeQuery}set activeQuery(e){UA(),this._activeQuery=e}_getActiveQuery(){return this._activeQuery}_errorAllQueries(e){let t=i=>{process.nextTick(()=>{i.handleError(e,this.connection)})},n=this._getActiveQuery();n&&(t(n),this._activeQuery=null),this._queryQueue.forEach(t),this._queryQueue.length=0}_connect(e){let t=this,n=this.connection;if(this._connectionCallback=e,this._connecting||this._connected){let i=new Error("Client has already been connected. You cannot reuse a client.");process.nextTick(()=>{e(i)});return}this._connecting=!0,this._connectionTimeoutMillis>0&&(this.connectionTimeoutHandle=setTimeout(()=>{n._ending=!0,n.stream.destroy(new Error("timeout expired"))},this._connectionTimeoutMillis),this.connectionTimeoutHandle.unref&&this.connectionTimeoutHandle.unref()),this.host&&this.host.indexOf("/")===0?n.connect(this.host+"/.s.PGSQL."+this.port):n.connect(this.port,this.host),n.on("connect",function(){t.ssl?n.requestSsl():n.startup(t.getStartupConf())}),n.on("sslconnect",function(){n.startup(t.getStartupConf())}),this._attachListeners(n),n.once("end",()=>{let i=this._ending?new Error("Connection terminated"):new Error("Connection terminated unexpectedly");clearTimeout(this.connectionTimeoutHandle),this._errorAllQueries(i),this._ended=!0,this._ending||(this._connecting&&!this._connectionError?this._connectionCallback?this._connectionCallback(i):this._handleErrorEvent(i):this._connectionError||this._handleErrorEvent(i)),process.nextTick(()=>{this.emit("end")})})}connect(e){if(e){this._connect(e);return}return new this._Promise((t,n)=>{this._connect(i=>{i?n(i):t(this)})})}_attachListeners(e){e.on("authenticationCleartextPassword",this._handleAuthCleartextPassword.bind(this)),e.on("authenticationMD5Password",this._handleAuthMD5Password.bind(this)),e.on("authenticationSASL",this._handleAuthSASL.bind(this)),e.on("authenticationSASLContinue",this._handleAuthSASLContinue.bind(this)),e.on("authenticationSASLFinal",this._handleAuthSASLFinal.bind(this)),e.on("backendKeyData",this._handleBackendKeyData.bind(this)),e.on("error",this._handleErrorEvent.bind(this)),e.on("errorMessage",this._handleErrorMessage.bind(this)),e.on("readyForQuery",this._handleReadyForQuery.bind(this)),e.on("notice",this._handleNotice.bind(this)),e.on("rowDescription",this._handleRowDescription.bind(this)),e.on("dataRow",this._handleDataRow.bind(this)),e.on("portalSuspended",this._handlePortalSuspended.bind(this)),e.on("emptyQuery",this._handleEmptyQuery.bind(this)),e.on("commandComplete",this._handleCommandComplete.bind(this)),e.on("parseComplete",this._handleParseComplete.bind(this)),e.on("copyInResponse",this._handleCopyInResponse.bind(this)),e.on("copyData",this._handleCopyData.bind(this)),e.on("notification",this._handleNotification.bind(this))}_getPassword(e){let t=this.connection;if(typeof this.password=="function")this._Promise.resolve().then(()=>this.password(this.connectionParameters)).then(n=>{if(n!==void 0){if(typeof n!="string"){t.emit("error",new TypeError("Password must be a string"));return}this.connectionParameters.password=this.password=n}else this.connectionParameters.password=this.password=null;e()}).catch(n=>{t.emit("error",n)});else if(this.password!==null)e();else try{FA()(this.connectionParameters,i=>{i!==void 0&&(UH(),this.connectionParameters.password=this.password=i),e()})}catch(n){this.emit("error",n)}}_handleAuthCleartextPassword(e){this._getPassword(()=>{this.connection.password(this.password)})}_handleAuthMD5Password(e){this._getPassword(async()=>{try{let t=await FH.postgresMd5PasswordHash(this.user,this.password,e.salt);this.connection.password(t)}catch(t){this.emit("error",t)}})}_handleAuthSASL(e){this._getPassword(()=>{try{this.saslSession=fb.startSession(e.mechanisms,this.enableChannelBinding&&this.connection.stream),this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism,this.saslSession.response)}catch(t){this.connection.emit("error",t)}})}async _handleAuthSASLContinue(e){try{await fb.continueSession(this.saslSession,this.password,e.data,this.enableChannelBinding&&this.connection.stream),this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)}catch(t){this.connection.emit("error",t)}}_handleAuthSASLFinal(e){try{fb.finalizeSession(this.saslSession,e.data),this.saslSession=null}catch(t){this.connection.emit("error",t)}}_handleBackendKeyData(e){this.processID=e.processID,this.secretKey=e.secretKey}_handleReadyForQuery(e){this._connecting&&(this._connecting=!1,this._connected=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback&&(this._connectionCallback(null,this),this._connectionCallback=null),this.emit("connect"));let t=this._getActiveQuery();this._activeQuery=null,this.readyForQuery=!0,t&&t.handleReadyForQuery(this.connection),this._pulseQueryQueue()}_handleErrorWhileConnecting(e){if(!this._connectionError){if(this._connectionError=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)return this._connectionCallback(e);this.emit("error",e)}}_handleErrorEvent(e){if(this._connecting)return this._handleErrorWhileConnecting(e);this._queryable=!1,this._errorAllQueries(e),this.emit("error",e)}_handleErrorMessage(e){if(this._connecting)return this._handleErrorWhileConnecting(e);let t=this._getActiveQuery();if(!t){this._handleErrorEvent(e);return}this._activeQuery=null,t.handleError(e,this.connection)}_handleRowDescription(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected rowDescription message from backend.");this._handleErrorEvent(n);return}t.handleRowDescription(e)}_handleDataRow(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected dataRow message from backend.");this._handleErrorEvent(n);return}t.handleDataRow(e)}_handlePortalSuspended(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected portalSuspended message from backend.");this._handleErrorEvent(n);return}t.handlePortalSuspended(this.connection)}_handleEmptyQuery(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected emptyQuery message from backend.");this._handleErrorEvent(n);return}t.handleEmptyQuery(this.connection)}_handleCommandComplete(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected commandComplete message from backend.");this._handleErrorEvent(n);return}t.handleCommandComplete(e,this.connection)}_handleParseComplete(){let e=this._getActiveQuery();if(e==null){let t=new Error("Received unexpected parseComplete message from backend.");this._handleErrorEvent(t);return}e.name&&(this.connection.parsedStatements[e.name]=e.text)}_handleCopyInResponse(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected copyInResponse message from backend.");this._handleErrorEvent(n);return}t.handleCopyInResponse(this.connection)}_handleCopyData(e){let t=this._getActiveQuery();if(t==null){let n=new Error("Received unexpected copyData message from backend.");this._handleErrorEvent(n);return}t.handleCopyData(e,this.connection)}_handleNotification(e){this.emit("notification",e)}_handleNotice(e){this.emit("notice",e)}getStartupConf(){let e=this.connectionParameters,t={user:e.user,database:e.database},n=e.application_name||e.fallback_application_name;return n&&(t.application_name=n),e.replication&&(t.replication=""+e.replication),e.statement_timeout&&(t.statement_timeout=String(parseInt(e.statement_timeout,10))),e.lock_timeout&&(t.lock_timeout=String(parseInt(e.lock_timeout,10))),e.idle_in_transaction_session_timeout&&(t.idle_in_transaction_session_timeout=String(parseInt(e.idle_in_transaction_session_timeout,10))),e.options&&(t.options=e.options),t}cancel(e,t){if(e.activeQuery===t){let n=this.connection;this.host&&this.host.indexOf("/")===0?n.connect(this.host+"/.s.PGSQL."+this.port):n.connect(this.port,this.host),n.on("connect",function(){n.cancel(e.processID,e.secretKey)})}else e._queryQueue.indexOf(t)!==-1&&e._queryQueue.splice(e._queryQueue.indexOf(t),1)}setTypeParser(e,t,n){return this._types.setTypeParser(e,t,n)}getTypeParser(e,t){return this._types.getTypeParser(e,t)}escapeIdentifier(e){return JA.escapeIdentifier(e)}escapeLiteral(e){return JA.escapeLiteral(e)}_pulseQueryQueue(){if(this.readyForQuery===!0){this._activeQuery=this._queryQueue.shift();let e=this._getActiveQuery();if(e){this.readyForQuery=!1,this.hasExecuted=!0;let t=e.submit(this.connection);t&&process.nextTick(()=>{e.handleError(t,this.connection),this.readyForQuery=!0,this._pulseQueryQueue()})}else this.hasExecuted&&(this._activeQuery=null,this.emit("drain"))}}query(e,t,n){let i,s,a,o,c;if(e==null)throw new TypeError("Client was passed a null or undefined query");return typeof e.submit=="function"?(a=e.query_timeout||this.connectionParameters.query_timeout,s=i=e,i.callback||(typeof t=="function"?i.callback=t:n&&(i.callback=n))):(a=e.query_timeout||this.connectionParameters.query_timeout,i=new GA(e,t,n),i.callback||(s=new this._Promise((l,u)=>{i.callback=(d,p)=>d?u(d):l(p)}).catch(l=>{throw Error.captureStackTrace(l),l}))),a&&(c=i.callback||(()=>{}),o=setTimeout(()=>{let l=new Error("Query read timeout");process.nextTick(()=>{i.handleError(l,this.connection)}),c(l),i.callback=()=>{};let u=this._queryQueue.indexOf(i);u>-1&&this._queryQueue.splice(u,1),this._pulseQueryQueue()},a),i.callback=(l,u)=>{clearTimeout(o),c(l,u)}),this.binary&&!i.binary&&(i.binary=!0),i._result&&!i._result._types&&(i._result._types=this._types),this._queryable?this._ending?(process.nextTick(()=>{i.handleError(new Error("Client was closed and is not queryable"),this.connection)}),s):(this._queryQueue.length>0&&BH(),this._queryQueue.push(i),this._pulseQueryQueue(),s):(process.nextTick(()=>{i.handleError(new Error("Client has encountered a connection error and is not queryable"),this.connection)}),s)}ref(){this.connection.ref()}unref(){this.connection.unref()}end(e){if(this._ending=!0,!this.connection._connecting||this._ended)if(e)e();else return this._Promise.resolve();if(this._getActiveQuery()||!this._queryable?this.connection.stream.destroy():this.connection.end(),e)this.connection.once("end",e);else return new this._Promise(t=>{this.connection.once("end",t)})}get queryQueue(){return JH(),this._queryQueue}};Ql.Query=GA;BA.exports=Ql});var zA=h((Ide,HA)=>{"use strict";var $H=require("events").EventEmitter,mb=function(){},VA=(r,e)=>{let t=r.findIndex(e);return t===-1?void 0:r.splice(t,1)[0]},hb=class{constructor(e,t,n){this.client=e,this.idleListener=t,this.timeoutId=n}},Gs=class{constructor(e){this.callback=e}};function VH(){throw new Error("Release called on client which has already been released to the pool.")}function Xl(r,e){if(e)return{callback:e,result:void 0};let t,n,i=function(a,o){a?t(a):n(o)},s=new r(function(a,o){n=a,t=o}).catch(a=>{throw Error.captureStackTrace(a),a});return{callback:i,result:s}}function HH(r,e){return function t(n){n.client=e,e.removeListener("error",t),e.on("error",()=>{r.log("additional client error after disconnection due to error",n)}),r._remove(e),r.emit("error",n,e)}}var yb=class extends $H{constructor(e,t){super(),this.options=Object.assign({},e),e!=null&&"password"in e&&Object.defineProperty(this.options,"password",{configurable:!0,enumerable:!1,writable:!0,value:e.password}),e!=null&&e.ssl&&e.ssl.key&&Object.defineProperty(this.options.ssl,"key",{enumerable:!1}),this.options.max=this.options.max||this.options.poolSize||10,this.options.min=this.options.min||0,this.options.maxUses=this.options.maxUses||1/0,this.options.allowExitOnIdle=this.options.allowExitOnIdle||!1,this.options.maxLifetimeSeconds=this.options.maxLifetimeSeconds||0,this.log=this.options.log||function(){},this.Client=this.options.Client||t||bb().Client,this.Promise=this.options.Promise||global.Promise,typeof this.options.idleTimeoutMillis>"u"&&(this.options.idleTimeoutMillis=1e4),this._clients=[],this._idle=[],this._expired=new WeakSet,this._pendingQueue=[],this._endCallback=void 0,this.ending=!1,this.ended=!1}_promiseTry(e){let t=this.Promise;return typeof t.try=="function"?t.try(e):new t(n=>n(e()))}_isFull(){return this._clients.length>=this.options.max}_isAboveMin(){return this._clients.length>this.options.min}_pulseQueue(){if(this.log("pulse queue"),this.ended){this.log("pulse queue ended");return}if(this.ending){this.log("pulse queue on ending"),this._idle.length&&this._idle.slice().map(t=>{this._remove(t.client)}),this._clients.length||(this.ended=!0,this._endCallback());return}if(!this._pendingQueue.length){this.log("no queued requests");return}if(!this._idle.length&&this._isFull())return;let e=this._pendingQueue.shift();if(this._idle.length){let t=this._idle.pop();clearTimeout(t.timeoutId);let n=t.client;n.ref&&n.ref();let i=t.idleListener;return this._acquireClient(n,e,i,!1)}if(!this._isFull())return this.newClient(e);throw new Error("unexpected condition")}_remove(e,t){let n=VA(this._idle,s=>s.client===e);n!==void 0&&clearTimeout(n.timeoutId),this._clients=this._clients.filter(s=>s!==e);let i=this;e.end(()=>{i.emit("remove",e),typeof t=="function"&&t()})}connect(e){if(this.ending){let i=new Error("Cannot use a pool after calling end on the pool");return e?e(i):this.Promise.reject(i)}let t=Xl(this.Promise,e),n=t.result;if(this._isFull()||this._idle.length){if(this._idle.length&&process.nextTick(()=>this._pulseQueue()),!this.options.connectionTimeoutMillis)return this._pendingQueue.push(new Gs(t.callback)),n;let i=(o,c,l)=>{clearTimeout(a),t.callback(o,c,l)},s=new Gs(i),a=setTimeout(()=>{VA(this._pendingQueue,o=>o.callback===i),s.timedOut=!0,t.callback(new Error("timeout exceeded when trying to connect"))},this.options.connectionTimeoutMillis);return a.unref&&a.unref(),this._pendingQueue.push(s),n}return this.newClient(new Gs(t.callback)),n}newClient(e){let t=new this.Client(this.options);this._clients.push(t);let n=HH(this,t);this.log("checking client timeout");let i,s=!1;this.options.connectionTimeoutMillis&&(i=setTimeout(()=>{t.connection?(this.log("ending client due to timeout"),s=!0,t.connection.stream.destroy()):t.isConnected()||(this.log("ending client due to timeout"),s=!0,t.end())},this.options.connectionTimeoutMillis)),this.log("connecting new client"),t.connect(a=>{if(i&&clearTimeout(i),t.on("error",n),a)this.log("client failed to connect",a),this._clients=this._clients.filter(o=>o!==t),s&&(a=new Error("Connection terminated due to connection timeout",{cause:a})),this._pulseQueue(),e.timedOut||e.callback(a,void 0,mb);else{if(this.log("new client connected"),this.options.onConnect){this._promiseTry(()=>this.options.onConnect(t)).then(()=>{this._afterConnect(t,e,n)},o=>{this._clients=this._clients.filter(c=>c!==t),t.end(()=>{this._pulseQueue(),e.timedOut||e.callback(o,void 0,mb)})});return}return this._afterConnect(t,e,n)}})}_afterConnect(e,t,n){if(this.options.maxLifetimeSeconds!==0){let i=setTimeout(()=>{this.log("ending client due to expired lifetime"),this._expired.add(e),this._idle.findIndex(a=>a.client===e)!==-1&&this._acquireClient(e,new Gs((a,o,c)=>c()),n,!1)},this.options.maxLifetimeSeconds*1e3);i.unref(),e.once("end",()=>clearTimeout(i))}return this._acquireClient(e,t,n,!0)}_acquireClient(e,t,n,i){i&&this.emit("connect",e),this.emit("acquire",e),e.release=this._releaseOnce(e,n),e.removeListener("error",n),t.timedOut?i&&this.options.verify?this.options.verify(e,e.release):e.release():i&&this.options.verify?this.options.verify(e,s=>{if(s)return e.release(s),t.callback(s,void 0,mb);t.callback(void 0,e,e.release)}):t.callback(void 0,e,e.release)}_releaseOnce(e,t){let n=!1;return i=>{n&&VH(),n=!0,this._release(e,t,i)}}_release(e,t,n){if(e.on("error",t),e._poolUseCount=(e._poolUseCount||0)+1,this.emit("release",n,e),n||this.ending||!e._queryable||e._ending||e._poolUseCount>=this.options.maxUses)return e._poolUseCount>=this.options.maxUses&&this.log("remove expended client"),this._remove(e,this._pulseQueue.bind(this));if(this._expired.has(e))return this.log("remove expired client"),this._expired.delete(e),this._remove(e,this._pulseQueue.bind(this));let s;this.options.idleTimeoutMillis&&this._isAboveMin()&&(s=setTimeout(()=>{this._isAboveMin()&&(this.log("remove idle client"),this._remove(e,this._pulseQueue.bind(this)))},this.options.idleTimeoutMillis),this.options.allowExitOnIdle&&s.unref()),this.options.allowExitOnIdle&&e.unref(),this._idle.push(new hb(e,t,s)),this._pulseQueue()}query(e,t,n){if(typeof e=="function"){let s=Xl(this.Promise,e);return setImmediate(function(){return s.callback(new Error("Passing a function as the first parameter to pool.query is not supported"))}),s.result}typeof t=="function"&&(n=t,t=void 0);let i=Xl(this.Promise,n);return n=i.callback,this.connect((s,a)=>{if(s)return n(s);let o=!1,c=l=>{o||(o=!0,a.release(l),n(l))};a.once("error",c),this.log("dispatching query");try{a.query(e,t,(l,u)=>{if(this.log("query dispatched"),a.removeListener("error",c),!o)return o=!0,a.release(l),l?n(l):n(void 0,u)})}catch(l){return a.release(l),n(l)}}),i.result}end(e){if(this.log("ending"),this.ending){let n=new Error("Called end on pool more than once");return e?e(n):this.Promise.reject(n)}this.ending=!0;let t=Xl(this.Promise,e);return this._endCallback=t.callback,this._pulseQueue(),t.result}get waitingCount(){return this._pendingQueue.length}get idleCount(){return this._idle.length}get expiredCount(){return this._clients.reduce((e,t)=>e+(this._expired.has(t)?1:0),0)}get totalCount(){return this._clients.length}};HA.exports=yb});var QA=h((_de,WA)=>{"use strict";var YA=require("events").EventEmitter,zH=require("util"),gb=Ls(),Bs=WA.exports=function(r,e,t){YA.call(this),r=gb.normalizeQueryConfig(r,e,t),this.text=r.text,this.values=r.values,this.name=r.name,this.queryMode=r.queryMode,this.callback=r.callback,this.state="new",this._arrayMode=r.rowMode==="array",this._emitRowEvents=!1,this.on("newListener",function(n){n==="row"&&(this._emitRowEvents=!0)}.bind(this))};zH.inherits(Bs,YA);var YH={sqlState:"code",statementPosition:"position",messagePrimary:"message",context:"where",schemaName:"schema",tableName:"table",columnName:"column",dataTypeName:"dataType",constraintName:"constraint",sourceFile:"file",sourceLine:"line",sourceFunction:"routine"};Bs.prototype.handleError=function(r){let e=this.native.pq.resultErrorFields();if(e)for(let t in e){let n=YH[t]||t;r[n]=e[t]}this.callback?this.callback(r):this.emit("error",r),this.state="error"};Bs.prototype.then=function(r,e){return this._getPromise().then(r,e)};Bs.prototype.catch=function(r){return this._getPromise().catch(r)};Bs.prototype._getPromise=function(){return this._promise?this._promise:(this._promise=new Promise(function(r,e){this._once("end",r),this._once("error",e)}.bind(this)),this._promise)};Bs.prototype.submit=function(r){this.state="running";let e=this;this.native=r.native,r.native.arrayMode=this._arrayMode;let t=function(n,i,s){if(r.native.arrayMode=!1,setImmediate(function(){e.emit("_done")}),n)return e.handleError(n);e._emitRowEvents&&(s.length>1?i.forEach((a,o)=>{a.forEach(c=>{e.emit("row",c,s[o])})}):i.forEach(function(a){e.emit("row",a,s)})),e.state="end",e.emit("end",s),e.callback&&e.callback(null,s)};if(process.domain&&(t=process.domain.bind(t)),this.name){this.name.length>63&&(console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",this.name,this.name.length),console.error("This can cause conflicts and silent errors executing queries"));let n=(this.values||[]).map(gb.prepareValue);if(r.namedQueries[this.name]){if(this.text&&r.namedQueries[this.name]!==this.text){let i=new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);return t(i)}return r.native.execute(this.name,n,t)}return r.native.prepare(this.name,this.text,n.length,function(i){return i?t(i):(r.namedQueries[e.name]=e.text,e.native.execute(e.name,n,t))})}else if(this.values){if(!Array.isArray(this.values)){let i=new Error("Query values must be an array");return t(i)}let n=this.values.map(gb.prepareValue);r.native.query(this.text,n,t)}else this.queryMode==="extended"?r.native.query(this.text,[],t):r.native.query(this.text,t)}});var rK=h((kde,tK)=>{var WH=require("util"),XA;try{XA=require("pg-native")}catch(r){throw r}var QH=Ul(),ZA=require("events").EventEmitter,XH=require("util"),ZH=Dy(),eK=QA(),ez=WH.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead."),_t=tK.exports=function(r){ZA.call(this),r=r||{},this._Promise=r.Promise||global.Promise,this._types=new QH(r.types),this.native=new XA({types:this._types}),this._queryQueue=[],this._ending=!1,this._connecting=!1,this._connected=!1,this._queryable=!0;let e=this.connectionParameters=new ZH(r);r.nativeConnectionString&&(e.nativeConnectionString=r.nativeConnectionString),this.user=e.user,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:e.password}),this.database=e.database,this.host=e.host,this.port=e.port,this.namedQueries={}};_t.Query=eK;XH.inherits(_t,ZA);_t.prototype._errorAllQueries=function(r){let e=t=>{process.nextTick(()=>{t.native=this.native,t.handleError(r)})};this._hasActiveQuery()&&(e(this._activeQuery),this._activeQuery=null),this._queryQueue.forEach(e),this._queryQueue.length=0};_t.prototype._connect=function(r){let e=this;if(this._connecting){process.nextTick(()=>r(new Error("Client has already been connected. You cannot reuse a client.")));return}this._connecting=!0,this.connectionParameters.getLibpqConnectionString(function(t,n){if(e.connectionParameters.nativeConnectionString&&(n=e.connectionParameters.nativeConnectionString),t)return r(t);e.native.connect(n,function(i){if(i)return e.native.end(),r(i);e._connected=!0,e.native.on("error",function(s){e._queryable=!1,e._errorAllQueries(s),e.emit("error",s)}),e.native.on("notification",function(s){e.emit("notification",{channel:s.relname,payload:s.extra})}),e.emit("connect"),e._pulseQueryQueue(!0),r(null,this)})})};_t.prototype.connect=function(r){if(r){this._connect(r);return}return new this._Promise((e,t)=>{this._connect(n=>{n?t(n):e(this)})})};_t.prototype.query=function(r,e,t){let n,i,s,a,o;if(r==null)throw new TypeError("Client was passed a null or undefined query");if(typeof r.submit=="function")s=r.query_timeout||this.connectionParameters.query_timeout,i=n=r,typeof e=="function"&&(r.callback=e);else if(s=r.query_timeout||this.connectionParameters.query_timeout,n=new eK(r,e,t),!n.callback){let c,l;i=new this._Promise((u,d)=>{c=u,l=d}).catch(u=>{throw Error.captureStackTrace(u),u}),n.callback=(u,d)=>u?l(u):c(d)}return s&&(o=n.callback||(()=>{}),a=setTimeout(()=>{let c=new Error("Query read timeout");process.nextTick(()=>{n.handleError(c,this.connection)}),o(c),n.callback=()=>{};let l=this._queryQueue.indexOf(n);l>-1&&this._queryQueue.splice(l,1),this._pulseQueryQueue()},s),n.callback=(c,l)=>{clearTimeout(a),o(c,l)}),this._queryable?this._ending?(n.native=this.native,process.nextTick(()=>{n.handleError(new Error("Client was closed and is not queryable"))}),i):(this._queryQueue.length>0&&ez(),this._queryQueue.push(n),this._pulseQueryQueue(),i):(n.native=this.native,process.nextTick(()=>{n.handleError(new Error("Client has encountered a connection error and is not queryable"))}),i)};_t.prototype.end=function(r){let e=this;this._ending=!0,this._connected||this.once("connect",this.end.bind(this,r));let t;return r||(t=new this._Promise(function(n,i){r=s=>s?i(s):n()})),this.native.end(function(){e._connected=!1,e._errorAllQueries(new Error("Connection terminated")),process.nextTick(()=>{e.emit("end"),r&&r()})}),t};_t.prototype._hasActiveQuery=function(){return this._activeQuery&&this._activeQuery.state!=="error"&&this._activeQuery.state!=="end"};_t.prototype._pulseQueryQueue=function(r){if(!this._connected||this._hasActiveQuery())return;let e=this._queryQueue.shift();if(!e){r||this.emit("drain");return}this._activeQuery=e,e.submit(this);let t=this;e.once("_done",function(){t._pulseQueryQueue()})};_t.prototype.cancel=function(r){this._activeQuery===r?this.native.cancel(function(){}):this._queryQueue.indexOf(r)!==-1&&this._queryQueue.splice(this._queryQueue.indexOf(r),1)};_t.prototype.ref=function(){};_t.prototype.unref=function(){};_t.prototype.setTypeParser=function(r,e,t){return this._types.setTypeParser(r,e,t)};_t.prototype.getTypeParser=function(r,e){return this._types.getTypeParser(r,e)};_t.prototype.isConnected=function(){return this._connected}});var vb=h((Tde,nK)=>{"use strict";nK.exports=rK()});var bb=h((Kde,Zl)=>{"use strict";var tz=$A(),rz=xo(),nz=lb(),iz=My(),sz=Ls(),az=zA(),oz=Ul(),{DatabaseError:cz}=ab(),{escapeIdentifier:lz,escapeLiteral:uz}=Ls(),dz=r=>class extends az{constructor(t){super(t,r)}},iK=function(r){this.defaults=rz,this.Client=r,this.Query=this.Client.Query,this.Pool=dz(this.Client),this._pools=[],this.Connection=nz,this.types=vo(),this.DatabaseError=cz,this.TypeOverrides=oz,this.escapeIdentifier=lz,this.escapeLiteral=uz,this.Result=iz,this.utils=sz},sK=tz,aK=!1;try{aK=!!process.env.NODE_PG_FORCE_NATIVE}catch{}aK&&(sK=vb());Zl.exports=new iK(sK);Object.defineProperty(Zl.exports,"native",{configurable:!0,enumerable:!1,get(){let r=null;try{r=new iK(vb())}catch(e){if(e.code!=="MODULE_NOT_FOUND")throw e}return Object.defineProperty(Zl.exports,"native",{value:r}),r}})});var Ut,jde,Ode,Rde,Cde,Dde,Pde,Mde,Lde,Nde,qde,Fde,oK,cK=L(()=>{Ut=Et(bb(),1),jde=Ut.default.Client,Ode=Ut.default.Pool,Rde=Ut.default.Connection,Cde=Ut.default.types,Dde=Ut.default.Query,Pde=Ut.default.DatabaseError,Mde=Ut.default.escapeIdentifier,Lde=Ut.default.escapeLiteral,Nde=Ut.default.Result,qde=Ut.default.TypeOverrides,Fde=Ut.default.defaults,oK=Ut.default});function lK(r=process.env){return r.CLAUDE_MEM_SERVER_DATABASE_URL||null}function Io(r={}){let e=r.env??process.env,t=lK(e);if(!t){if(r.requireDatabaseUrl)throw new Error("Postgres requires CLAUDE_MEM_SERVER_DATABASE_URL");return null}return{connectionString:t,max:eu(e.CLAUDE_MEM_POSTGRES_POOL_MAX,10),idleTimeoutMillis:eu(e.CLAUDE_MEM_POSTGRES_IDLE_TIMEOUT_MS,3e4),connectionTimeoutMillis:eu(e.CLAUDE_MEM_POSTGRES_CONNECTION_TIMEOUT_MS,5e3),statementTimeoutMillis:eu(e.CLAUDE_MEM_POSTGRES_STATEMENT_TIMEOUT_MS,3e4),ssl:pz(t,e)}}function eu(r,e){if(!r)return e;let t=Number.parseInt(r,10);return Number.isFinite(t)&&t>0?t:e}function pz(r,e){if(e.CLAUDE_MEM_POSTGRES_SSL==="disable"||e.PGSSLMODE==="disable")return!1;if(e.CLAUDE_MEM_POSTGRES_SSL==="require"||e.PGSSLMODE==="require")return{rejectUnauthorized:!1};try{if(new URL(r).searchParams.get("sslmode")==="require")return{rejectUnauthorized:!1}}catch{return!1}return!1}var tu=L(()=>{"use strict"});function ru(r){return new fz({connectionString:r.connectionString,max:r.max,idleTimeoutMillis:r.idleTimeoutMillis,connectionTimeoutMillis:r.connectionTimeoutMillis,statement_timeout:r.statementTimeoutMillis,ssl:r.ssl})}function xb(r={}){if($s)return $s;let e=Io({requireDatabaseUrl:r.requireDatabaseUrl??!0});if(!e)throw new Error("Postgres requires CLAUDE_MEM_SERVER_DATABASE_URL");return $s=ru(e),$s}async function mz(r){try{return await r.query("SELECT 1"),!0}catch{return!1}}async function Br(r,e){let t=await r.connect();try{await t.query("BEGIN");let n=await e(t);return await t.query("COMMIT"),n}catch(n){throw await t.query("ROLLBACK"),n}finally{t.release()}}async function hz(r){r===$s&&($s=null),await r.end()}var fz,$s,Vs=L(()=>{"use strict";cK();tu();({Pool:fz}=oK),$s=null});function dK(r){let e=xz.safeParse(r);if(!e.success)throw new _o(e.error.issues);return e.data}var $e,ko,uK,nu,yz,bz,gz,vz,xz,_o,iu=L(()=>{"use strict";$e=require("zod"),ko={event:"server_beta_generate_event","event-batch":"server_beta_generate_event_batch",summary:"server_beta_generate_summary",reindex:"server_beta_reindex"},uK={event:"evt","event-batch":"evtb",summary:"sum",reindex:"rdx"},nu=$e.z.object({team_id:$e.z.string().min(1,"team_id is required"),project_id:$e.z.string().min(1,"project_id is required"),source_type:$e.z.enum(["agent_event","session_summary","observation_reindex"]),source_id:$e.z.string().min(1,"source_id is required"),generation_job_id:$e.z.string().min(1,"generation_job_id is required"),api_key_id:$e.z.string().min(1).nullable(),actor_id:$e.z.string().min(1).nullable(),source_adapter:$e.z.string().min(1,"source_adapter is required"),request_id:$e.z.string().min(1).nullable().optional()}),yz=nu.extend({kind:$e.z.literal("event"),agent_event_id:$e.z.string().min(1)}),bz=nu.extend({kind:$e.z.literal("event-batch"),agent_event_ids:$e.z.array($e.z.string().min(1)).min(1)}),gz=nu.extend({kind:$e.z.literal("summary"),server_session_id:$e.z.string().min(1)}),vz=nu.extend({kind:$e.z.literal("reindex"),observation_id:$e.z.string().min(1)}),xz=$e.z.discriminatedUnion("kind",[yz,bz,gz,vz]),_o=class extends Error{issues;constructor(e){super(`invalid server generation job payload: ${e.map(t=>t.message).join("; ")}`),this.issues=e}}});function Hs(r){let e=uK[r.kind],t=JSON.stringify({kind:r.kind,team_id:r.team_id,project_id:r.project_id,source_type:r.source_type,source_id:r.source_id}),n=(0,pK.createHash)("sha256").update(t).digest("hex");return`${e}_${n}`}var pK,Eb=L(()=>{"use strict";pK=require("crypto");iu()});function Ez(r={}){let e=(process.env.CLAUDE_MEM_SERVER_SESSION_POLICY??"").trim().toLowerCase(),t=r.policy??(e==="debounce"||e==="end-of-session"||e==="per-event"?e:"per-event"),n=r.debounceWindowMs??(Number.parseInt(process.env.CLAUDE_MEM_SERVER_SESSION_DEBOUNCE_MS??"",10)||fK);return{policy:t,debounceWindowMs:Number.isFinite(n)&&n>0?n:fK}}function mK(r,e={}){let t=Ez(e),n=r.outbox.bullmqJobId??Hs({kind:"event",team_id:r.event.teamId,project_id:r.event.projectId,source_type:"agent_event",source_id:r.event.id}),i={kind:"event",team_id:r.outbox.teamId,project_id:r.outbox.projectId,source_type:"agent_event",source_id:r.event.id,generation_job_id:r.outbox.id,agent_event_id:r.event.id,api_key_id:r.apiKeyId??null,actor_id:r.actorId??null,source_adapter:r.sourceAdapter??r.event.sourceAdapter??"api",request_id:r.requestId??null};return t.policy==="end-of-session"?{shouldEnqueue:!1,jobId:n,payload:i,reason:"end-of-session-skip"}:t.policy==="debounce"?{shouldEnqueue:!0,jobId:n,payload:i,jobsOptions:{delay:t.debounceWindowMs},reason:"debounce"}:{shouldEnqueue:!0,jobId:n,payload:i,reason:"per-event"}}async function hK(r,e){if(e.shouldEnqueue){if(e.reason==="debounce")try{await r.getJob(e.jobId)&&await r.remove(e.jobId)}catch{}await r.add(e.jobId,e.payload,e.jobsOptions)}}function Sb(r){return Hs({kind:"summary",team_id:r.teamId,project_id:r.projectId,source_type:"session_summary",source_id:r.serverSessionId})}function wb(r){return{kind:"summary",team_id:r.teamId,project_id:r.projectId,source_type:"session_summary",source_id:r.serverSessionId,generation_job_id:r.generationJobId,server_session_id:r.serverSessionId,api_key_id:r.apiKeyId??null,actor_id:r.actorId??null,source_adapter:r.sourceAdapter??"api",request_id:r.requestId??null}}var fK,Ib=L(()=>{"use strict";Eb();fK=5e3});function yK(r){return{kind:"event",team_id:r.event.teamId,project_id:r.event.projectId,source_type:"agent_event",source_id:r.event.id,generation_job_id:r.outboxId,agent_event_id:r.event.id,api_key_id:r.apiKeyId,actor_id:r.actorId,source_adapter:r.sourceAdapter??r.event.sourceAdapter??"api",request_id:r.requestId}}var bK,su,gK=L(()=>{"use strict";Ds();qn();Vs();ve();Eb();Ib();Gr();bK="observation_generate_for_event",su=class{constructor(e){this.options=e}options;async ingestOne(e,t={}){let n=t.generate??!0,i=t.source??"http_post_v1_events",s=await Br(this.options.pool,async o=>{let l=await new lr(o).create(e);if(!n)return{event:l,outbox:null};let u=new qe(o),d=new dt(o),p=Ne(),f=yK({outboxId:p,event:l,apiKeyId:t.apiKeyId??null,actorId:t.actorId??null,sourceAdapter:t.sourceAdapter??null,requestId:t.requestId??null}),m=await u.create({id:p,projectId:l.projectId,teamId:l.teamId,sourceType:"agent_event",sourceId:l.id,agentEventId:l.id,serverSessionId:l.serverSessionId,jobType:bK,bullmqJobId:Hs({kind:"event",team_id:l.teamId,project_id:l.projectId,source_type:"agent_event",source_id:l.id}),payload:f});return await d.append({generationJobId:m.id,projectId:m.projectId,teamId:m.teamId,eventType:"queued",statusAfter:m.status,attempt:m.attempts,details:{source:i}}),{event:l,outbox:m}}),a="skipped";return s.outbox&&(a=await this.publishEventJob(s.event,s.outbox,t)),{event:s.event,outbox:s.outbox,enqueueState:a}}async ingestBatch(e,t={}){let n=t.generate??!0,i=t.source??"http_post_v1_events_batch",s=await Br(this.options.pool,async a=>{let o=new lr(a),c=new qe(a),l=new dt(a),u=[];for(let d of e){let p=await o.create(d);if(!n){u.push({event:p,outbox:null});continue}let f=Ne(),m=yK({outboxId:f,event:p,apiKeyId:t.apiKeyId??null,actorId:t.actorId??null,sourceAdapter:t.sourceAdapter??null,requestId:t.requestId??null}),y=await c.create({id:f,projectId:p.projectId,teamId:p.teamId,sourceType:"agent_event",sourceId:p.id,agentEventId:p.id,serverSessionId:p.serverSessionId,jobType:bK,bullmqJobId:Hs({kind:"event",team_id:p.teamId,project_id:p.projectId,source_type:"agent_event",source_id:p.id}),payload:m});await l.append({generationJobId:y.id,projectId:y.projectId,teamId:y.teamId,eventType:"queued",statusAfter:y.status,attempt:y.attempts,details:{source:i}}),u.push({event:p,outbox:y})}return u});return Promise.all(s.map(async({event:a,outbox:o})=>{let c=o?await this.publishEventJob(a,o,t):"skipped";return{event:a,outbox:o,enqueueState:c}}))}async publishEventJob(e,t,n={}){let i=this.options.resolveEventQueue();if(!i)return"queued_only";let s={};this.options.sessionPolicy!==void 0&&(s.policy=this.options.sessionPolicy),this.options.sessionDebounceWindowMs!==void 0&&(s.debounceWindowMs=this.options.sessionDebounceWindowMs);let a=mK({event:e,outbox:t,apiKeyId:n.apiKeyId??null,actorId:n.actorId??null,sourceAdapter:n.sourceAdapter??e.sourceAdapter??null,requestId:n.requestId??null},s);if(!a.shouldEnqueue)return"queued_only";try{return await hK(i,a),"enqueued"}catch(o){return _.warn("SYSTEM","failed to publish event generation job to BullMQ",{outboxId:t.id,error:o instanceof Error?o.message:String(o)}),"queued_only"}}}});var Sz,au,vK=L(()=>{"use strict";qn();Vs();Un();ve();Ib();Gr();Sz="observation_generate_session_summary",au=class{constructor(e){this.options=e}options;async end(e){let t=e.source??"http_post_v1_sessions_end",n=await Br(this.options.pool,async s=>{let o=await new wt(s).endSession({id:e.sessionId,projectId:e.projectId,teamId:e.teamId});if(!o)return{session:null,outbox:null};let c=new qe(s),l=new dt(s),u=Ne(),d=wb({serverSessionId:o.id,teamId:o.teamId,projectId:o.projectId,generationJobId:u,apiKeyId:e.apiKeyId??null,actorId:e.actorId??null,sourceAdapter:e.sourceAdapter??null}),p=await c.create({id:u,projectId:o.projectId,teamId:o.teamId,sourceType:"session_summary",sourceId:o.id,serverSessionId:o.id,jobType:Sz,bullmqJobId:Sb({serverSessionId:o.id,teamId:o.teamId,projectId:o.projectId}),payload:d});return await l.append({generationJobId:p.id,projectId:p.projectId,teamId:p.teamId,eventType:"queued",statusAfter:p.status,attempt:p.attempts,details:{source:t}}),{session:o,outbox:p}});if(!n.session||!n.outbox)return{session:n.session,outbox:null,enqueueState:"skipped"};let i=await this.publishSummaryJob(n.session.id,n.outbox,e);return{session:n.session,outbox:n.outbox,enqueueState:i}}async publishSummaryJob(e,t,n){let i=this.options.resolveSummaryQueue();if(!i)return"queued_only";let s=t.bullmqJobId??Sb({serverSessionId:e,teamId:t.teamId,projectId:t.projectId}),a=wb({serverSessionId:e,teamId:t.teamId,projectId:t.projectId,generationJobId:t.id,apiKeyId:n.apiKeyId??null,actorId:n.actorId??null,sourceAdapter:n.sourceAdapter??null});try{return await i.add(s,a),"enqueued"}catch(o){return _.warn("SYSTEM","failed to publish summary generation job to BullMQ",{outboxId:t.id,error:o instanceof Error?o.message:String(o)}),"queued_only"}}}});async function SK(r,e,t=kK,n=Iz){if(EK.includes(e.status))return{job:e,timedOut:!1};let i=Date.now()+t,s=e;for(;Date.now()<i;){await new Promise(o=>setTimeout(o,n));let a=await r.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!a)return{job:s,timedOut:!1};if(s=a,EK.includes(a.status))return{job:a,timedOut:!1}}return{job:s,timedOut:!0}}function kz(r){let e=typeof r.query.status=="string"?r.query.status.trim():"",t=e&&TK.has(e)?e:null,n=typeof r.query.source_type=="string"?r.query.source_type.trim():"",i=n&&_z.has(n)?n:null,s=cu(r.query.limit,AK,1,KK),a=cu(r.query.offset,0,0,Number.MAX_SAFE_INTEGER),o=typeof r.query.since=="string"?r.query.since.trim():"",c=null;if(o){let l=new Date(o);Number.isNaN(l.getTime())||(c=l)}return{status:t,sourceType:i,limit:s,offset:a,since:c}}function wK(r){if(!r||typeof r!="object")return 0;let e=r.retried_count;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):0}function IK(r){let e=typeof r.query.status=="string"?r.query.status.trim():"",t=e&&TK.has(e)?e:null,n=cu(r.query.limit,AK,1,KK),i=cu(r.query.offset,0,0,Number.MAX_SAFE_INTEGER);return{status:t,limit:n,offset:i}}function cu(r,e,t,n){if(typeof r!="string")return e;let i=Number.parseInt(r,10);return Number.isFinite(i)?Math.max(t,Math.min(n,i)):e}function _b(r,e={}){let t={id:r.id,projectId:r.project_id,teamId:r.team_id,sourceType:r.source_type,sourceId:r.source_id,status:r.status,attempts:r.attempts,maxAttempts:r.max_attempts,createdAtEpoch:new Date(r.created_at).getTime(),completedAtEpoch:r.completed_at?new Date(r.completed_at).getTime():null,failedAtEpoch:r.failed_at?new Date(r.failed_at).getTime():null,lastError:r.last_error&&typeof r.last_error=="object"?r.last_error:null};return e.includePayload&&r.payload&&typeof r.payload=="object"&&(t.payload=r.payload),t}function Tz(r){let e={"event.received":"agent_event","event.batch_received":"agent_event","event.write":"agent_event","event.batch_write":"agent_event","session.write":"server_session","session.end":"server_session","memory.write":"observation","observation.read":"observation","observation.search":"observation","observation.context":"observation","observation.generated":"observation","session_summary.generated":"observation","generation_job.queued":"observation_generation_job","generation_job.enqueued":"observation_generation_job","generation_job.processing":"observation_generation_job","generation_job.completed":"observation_generation_job","generation_job.failed":"observation_generation_job","generation_job.scope_violation":"observation_generation_job","generation_job.revoked_key":"observation_generation_job","generation_job.retried_by_operator":"observation_generation_job","generation_job.cancelled_by_operator":"observation_generation_job","generation_job.stalled":"observation_generation_job"};return e[r]?e[r]:r.split(".")[0]??"unknown"}function Az(r,e){let t=r.authContext?.projectId??null;if(!(r.authContext?.teamId??null))return{status:403,body:{error:"Forbidden",message:"API key is not bound to a team"}};if(!t)return null;for(let i of e)if(i.projectId!==t)return{status:403,body:{error:"Forbidden",message:"API key is scoped to a different project"}};return null}function To(r){return{id:r.id,projectId:r.projectId,teamId:r.teamId,externalSessionId:r.externalSessionId,contentSessionId:r.contentSessionId,agentId:r.agentId,agentType:r.agentType,platformSource:r.platformSource,generationStatus:r.generationStatus,metadata:r.metadata,startedAtEpoch:r.startedAtEpoch,endedAtEpoch:r.endedAtEpoch,lastGeneratedAtEpoch:r.lastGeneratedAtEpoch,createdAtEpoch:r.createdAtEpoch,updatedAtEpoch:r.updatedAtEpoch}}function Ao(r){return{id:r.id,projectId:r.projectId,teamId:r.teamId,serverSessionId:r.serverSessionId,sourceAdapter:r.sourceAdapter,sourceEventId:r.sourceEventId,eventType:r.eventType,payload:r.payload,metadata:r.metadata,occurredAtEpoch:r.occurredAtEpoch,receivedAtEpoch:r.receivedAtEpoch,createdAtEpoch:r.createdAtEpoch}}function kb(r){return{id:r.id,projectId:r.projectId,teamId:r.teamId,serverSessionId:r.serverSessionId,kind:r.kind,content:r.content,metadata:r.metadata,createdAtEpoch:r.createdAtEpoch,updatedAtEpoch:r.updatedAtEpoch}}function Kz(r){return{id:r.id,projectId:r.project_id,teamId:r.team_id,serverSessionId:r.server_session_id,kind:r.kind,content:r.content,metadata:r.metadata&&typeof r.metadata=="object"?r.metadata:{},generationKey:r.generation_key,createdByJobId:r.created_by_job_id,createdAtEpoch:new Date(r.created_at).getTime(),updatedAtEpoch:new Date(r.updated_at).getTime(),source:{id:r.source_id_pk,sourceType:r.source_type,sourceId:r.source_id,generationJobId:r.generation_job_id,createdAtEpoch:new Date(r.source_created_at).getTime()}}}function Tb(r,e){return{id:r.id,status:r.status,bullmqJobId:r.bullmqJobId,sourceType:r.sourceType,sourceId:r.sourceId,transport:e,createdAtEpoch:r.createdAtEpoch,updatedAtEpoch:r.updatedAtEpoch}}function _K(r,e){return{id:r.id,status:r.status,transport:e,bullmqJobId:r.bullmqJobId,sourceType:r.sourceType,sourceId:r.sourceId,attempts:r.attempts,maxAttempts:r.maxAttempts,createdAtEpoch:r.createdAtEpoch,updatedAtEpoch:r.updatedAtEpoch}}function Ab(r){return{id:r.id,projectId:r.projectId,teamId:r.teamId,sourceType:r.sourceType,sourceId:r.sourceId,agentEventId:r.agentEventId,serverSessionId:r.serverSessionId,jobType:r.jobType,status:r.status,bullmqJobId:r.bullmqJobId,attempts:r.attempts,maxAttempts:r.maxAttempts,nextAttemptAtEpoch:r.nextAttemptAtEpoch,completedAtEpoch:r.completedAtEpoch,failedAtEpoch:r.failedAtEpoch,cancelledAtEpoch:r.cancelledAtEpoch,lastError:r.lastError,createdAtEpoch:r.createdAtEpoch,updatedAtEpoch:r.updatedAtEpoch}}var ae,wz,xK,kK,Iz,EK,ou,_z,TK,AK,KK,jK=L(()=>{"use strict";ae=require("zod");tT();Ds();qn();mn();fo();ve();Ll();pT();Un();gK();vK();wz="api",xK=ae.z.object({generate:ae.z.union([ae.z.literal("true"),ae.z.literal("false")]).optional(),wait:ae.z.union([ae.z.literal("true"),ae.z.literal("false")]).optional()}),kK=3e4,Iz=100,EK=["completed","failed","cancelled"];ou=class{constructor(e){this.options=e;let t={pool:e.pool,resolveEventQueue:()=>this.resolveEventQueue()};e.sessionPolicy!==void 0&&(t.sessionPolicy=e.sessionPolicy),e.sessionDebounceWindowMs!==void 0&&(t.sessionDebounceWindowMs=e.sessionDebounceWindowMs),this.ingestEvents=new su(t),this.endSession=new au({pool:e.pool,resolveSummaryQueue:()=>this.resolveSummaryQueue()})}options;ingestEvents;endSession;getIngestEventsService(){return this.ingestEvents}getEndSessionService(){return this.endSession}setupRoutes(e){e.use("/v1",dT());let t=Oi(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]}),n=Oi(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:read"]});e.post("/v1/events",t,this.asyncHandler(async(i,s)=>{let a=xK.safeParse(i.query);if(!a.success){s.status(400).json({error:"ValidationError",issues:a.error.issues});return}let o=a.data.generate!=="false",c=a.data.wait==="true",l=py.safeParse(i.body);if(!l.success){s.status(400).json({error:"ValidationError",issues:l.error.issues});return}let u=l.data,d=this.requireTeamId(i,s);if(!d||!this.ensureProjectAllowed(i,s,u.projectId))return;let p=this.toAgentEventInput(u,d),f,m=null,y="skipped";try{let b=await this.ingestEvents.ingestOne(p,{generate:o,source:"http_post_v1_events",apiKeyId:i.authContext?.apiKeyId??null,actorId:await this.resolveActorId(i),sourceAdapter:p.sourceAdapter,requestId:i.requestId??null});f=b.event,m=b.outbox,y=b.enqueueState}catch(b){this.handleDbError(b,s,"event.write");return}if(await this.auditWrite(i,"event.received",f.id,f.projectId,{sourceAdapter:f.sourceAdapter,sourceEventId:f.sourceEventId,eventType:f.eventType,serverSessionId:f.serverSessionId,generationJobId:m?.id??null}),c){let b=m,g=!1;if(m){let x=new qe(this.options.pool),I=await SK(x,m);b=I.job,g=I.timedOut}s.status(201).json({event:Ao(f),generationJob:b?_K(b,y):null,...g?{waitTimedOut:!0}:{}});return}s.status(201).json({event:Ao(f),...m?{generationJob:Tb(m,y)}:{}})})),e.post("/v1/events/batch",t,this.asyncHandler(async(i,s)=>{let a=xK.safeParse(i.query);if(!a.success){s.status(400).json({error:"ValidationError",issues:a.error.issues});return}let o=a.data.generate!=="false",c=a.data.wait==="true",u=ae.z.array(py).min(1).max(500).safeParse(i.body);if(!u.success){s.status(400).json({error:"ValidationError",issues:u.error.issues});return}let d=this.requireTeamId(i,s);if(!d)return;let p=Az(i,u.data);if(p){s.status(p.status).json(p.body);return}let f=u.data.map(b=>this.toAgentEventInput(b,d)),m=[],y=[];try{let b=await this.ingestEvents.ingestBatch(f,{generate:o,source:"http_post_v1_events_batch",apiKeyId:i.authContext?.apiKeyId??null,actorId:await this.resolveActorId(i),sourceAdapter:null,requestId:i.requestId??null});m=b.map(({event:g,outbox:x})=>({event:g,outbox:x})),y=b.map(({enqueueState:g})=>g)}catch(b){this.handleDbError(b,s,"event.batch_write");return}if(await this.auditWrite(i,"event.batch_received",null,null,{eventCount:m.length,generationJobIds:m.map(({outbox:b})=>b?.id??null).filter(Boolean)}),c){let b=new qe(this.options.pool),g=Date.now()+kK,x=[];for(let k of m){if(!k.outbox){x.push({event:k.event,outbox:null,timedOut:!1});continue}let M=Math.max(0,g-Date.now()),U=await SK(b,k.outbox,M);x.push({event:k.event,outbox:U.job,timedOut:U.timedOut})}let I=x.some(k=>k.timedOut);s.status(201).json({events:x.map(({event:k,outbox:M,timedOut:U},re)=>({event:Ao(k),generationJob:M?_K(M,y[re]):null,...U?{waitTimedOut:!0}:{}})),...I?{waitTimedOut:!0}:{}});return}s.status(201).json({events:m.map(({event:b,outbox:g},x)=>({event:Ao(b),...g?{generationJob:Tb(g,y[x])}:{}}))})})),e.get("/v1/events/:id",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),c=new lr(this.options.pool),u=(await this.options.pool.query("SELECT * FROM agent_events WHERE id = $1 AND team_id = $2",[o,a])).rows[0];if(!u){s.status(404).json({error:"NotFound",message:"Event not found"});return}if(!this.ensureProjectAllowed(i,s,u.project_id))return;let d=await c.getByIdForScope({id:u.id,projectId:u.project_id,teamId:a});if(!d){s.status(404).json({error:"NotFound",message:"Event not found"});return}s.json({event:Ao(d)})})),e.get("/v1/events/:id/observations",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),l=(await this.options.pool.query("SELECT id, project_id FROM agent_events WHERE id = $1 AND team_id = $2",[o,a])).rows[0];if(!l){s.status(404).json({error:"NotFound",message:"Event not found"});return}if(!this.ensureProjectAllowed(i,s,l.project_id))return;let u=await this.options.pool.query(`
SELECT o.id, o.project_id, o.team_id, o.server_session_id, o.kind, o.content,
o.metadata, o.generation_key, o.created_by_job_id, o.created_at, o.updated_at,
os.id AS source_id_pk, os.source_type, os.source_id, os.generation_job_id, os.created_at AS source_created_at
FROM observation_sources os
INNER JOIN observations o ON o.id = os.observation_id
WHERE os.source_type = 'agent_event'
AND os.source_id = $1
AND o.team_id = $2
AND o.project_id = $3
ORDER BY o.created_at ASC
`,[l.id,a,l.project_id]);await this.auditRead(i,"observation.read",l.id,l.project_id,{mode:"event_observations",eventId:l.id,resultCount:u.rows.length,observationIds:u.rows.map(d=>d.id)}),s.json({eventId:l.id,observations:u.rows.map(Kz)})})),e.get("/v1/teams/:teamId/jobs",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.teamId);if(!o){s.status(400).json({error:"ValidationError",message:"teamId required"});return}if(o!==a){s.status(404).json({error:"NotFound",message:"Team not found"});return}let c=i.authContext?.projectId??null,{status:l,limit:u,offset:d}=IK(i);try{let{jobs:p,total:f}=await this.listJobsForScope({teamId:a,projectId:c,status:l,limit:u,offset:d});await this.auditRead(i,"observation.read",null,c,{mode:"team_jobs",teamId:a,projectId:c,status:l,limit:u,offset:d,resultCount:p.length}),s.status(200).json({jobs:p.map(m=>_b(m)),total:f,limit:u,offset:d})}catch(p){this.handleDbError(p,s,"team.jobs.list")}})),e.get("/v1/projects/:projectId/jobs",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.projectId);if(!o){s.status(400).json({error:"ValidationError",message:"projectId required"});return}if((await this.options.pool.query("SELECT id FROM projects WHERE id = $1 AND team_id = $2",[o,a])).rows.length===0){s.status(404).json({error:"NotFound",message:"Project not found"});return}let l=i.authContext?.projectId??null;if(l&&l!==o){s.status(404).json({error:"NotFound",message:"Project not found"});return}let{status:u,limit:d,offset:p}=IK(i);try{let{jobs:f,total:m}=await this.listJobsForScope({teamId:a,projectId:o,status:u,limit:d,offset:p});await this.auditRead(i,"observation.read",null,o,{mode:"project_jobs",teamId:a,projectId:o,status:u,limit:d,offset:p,resultCount:f.length}),s.status(200).json({jobs:f.map(y=>_b(y)),total:m,limit:d,offset:p})}catch(f){this.handleDbError(f,s,"project.jobs.list")}})),e.get("/v1/jobs",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=i.authContext?.projectId??null,l=(typeof i.query.include=="string"?i.query.include:"").split(",").map(g=>g.trim()).includes("payload"),u=i.authContext?.scopes??[],d=u.includes("*")||u.includes("admin")||u.includes("memories:admin");if(l&&!d){s.status(403).json({error:"Forbidden",message:"`include=payload` requires admin scope"});return}let{status:p,sourceType:f,limit:m,offset:y,since:b}=kz(i);try{let{jobs:g,total:x}=await this.listJobsForScope({teamId:a,projectId:o,status:p,sourceType:f,limit:m,offset:y,since:b});await this.auditRead(i,"observation.read",null,o,{mode:"jobs_list",teamId:a,projectId:o,status:p,sourceType:f,limit:m,offset:y,since:b?b.toISOString():null,resultCount:g.length,includePayload:l,requestId:i.requestId??null}),s.status(200).json({jobs:g.map(I=>_b(I,{includePayload:l})),total:x,limit:m,offset:y,requestId:i.requestId??null})}catch(g){this.handleDbError(g,s,"jobs.list")}})),e.get("/v1/jobs/:id",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),l=(await this.options.pool.query("SELECT * FROM observation_generation_jobs WHERE id = $1 AND team_id = $2",[o,a])).rows[0];if(!l){s.status(404).json({error:"NotFound",message:"Generation job not found"});return}if(i.authContext?.projectId&&i.authContext.projectId!==l.project_id){s.status(404).json({error:"NotFound",message:"Generation job not found"});return}let d=await new qe(this.options.pool).getByIdForScope({id:o,projectId:l.project_id,teamId:a});if(!d){s.status(404).json({error:"NotFound",message:"Generation job not found"});return}s.json({generationJob:Ab(d)})})),e.post("/v1/jobs/:id/retry",t,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),c=await this.retryGenerationJob(i,s,o,a);c&&s.status(200).json({generationJob:Ab(c.job),retriedCount:c.retriedCount,alreadyQueued:c.alreadyQueued,requestId:i.requestId??null})})),e.post("/v1/jobs/:id/cancel",t,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),c=await this.cancelGenerationJob(i,s,o,a);c&&s.status(200).json({generationJob:Ab(c.job),alreadyCancelled:c.alreadyCancelled,requestId:i.requestId??null})})),e.post("/v1/sessions/start",t,this.handleCreate(ae.z.object({projectId:ae.z.string().min(1),externalSessionId:ae.z.string().min(1).optional(),contentSessionId:ae.z.string().min(1).nullable().optional(),agentId:ae.z.string().min(1).nullable().optional(),agentType:ae.z.string().min(1).nullable().optional(),platformSource:ae.z.string().min(1).nullable().optional(),metadata:ae.z.record(ae.z.string(),ae.z.unknown()).optional()}),async(i,s,a)=>{let o=this.requireTeamId(i,s);if(!o||!this.ensureProjectAllowed(i,s,a.projectId))return;let c=new wt(this.options.pool);try{if(a.externalSessionId){let u=await c.findByExternalIdForScope({externalSessionId:a.externalSessionId,projectId:a.projectId,teamId:o});if(u){s.status(200).json({session:To(u)});return}}let l;try{l=await c.create({projectId:a.projectId,teamId:o,externalSessionId:a.externalSessionId??null,contentSessionId:a.contentSessionId??null,agentId:a.agentId??null,agentType:a.agentType??null,platformSource:a.platformSource??null,metadata:a.metadata??{}})}catch(u){if(a.externalSessionId&&u?.code==="23505"){let d=await c.findByExternalIdForScope({externalSessionId:a.externalSessionId,projectId:a.projectId,teamId:o});if(d){s.status(200).json({session:To(d)});return}}throw u}await this.auditWrite(i,"session.write",l.id,l.projectId),s.status(201).json({session:To(l)})}catch(l){this.handleDbError(l,s,"session.write")}})),e.get("/v1/sessions/:id",n,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),l=(await this.options.pool.query("SELECT id, project_id FROM server_sessions WHERE id = $1 AND team_id = $2",[o,a])).rows[0];if(!l){s.status(404).json({error:"NotFound",message:"Session not found"});return}if(!this.ensureProjectAllowed(i,s,l.project_id))return;let d=await new wt(this.options.pool).getByIdForScope({id:o,projectId:l.project_id,teamId:a});if(!d){s.status(404).json({error:"NotFound",message:"Session not found"});return}s.json({session:To(d)})})),e.post("/v1/sessions/:id/end",t,this.asyncHandler(async(i,s)=>{let a=this.requireTeamId(i,s);if(!a)return;let o=this.routeParam(i.params.id),l=(await this.options.pool.query("SELECT id, project_id FROM server_sessions WHERE id = $1 AND team_id = $2",[o,a])).rows[0];if(!l){s.status(404).json({error:"NotFound",message:"Session not found"});return}if(!this.ensureProjectAllowed(i,s,l.project_id))return;let u=null,d=null,p="skipped";try{let f=await this.endSession.end({sessionId:o,projectId:l.project_id,teamId:a,source:"http_post_v1_sessions_end",apiKeyId:i.authContext?.apiKeyId??null,actorId:await this.resolveActorId(i),sourceAdapter:"api"});u=f.session,d=f.outbox,p=f.enqueueState}catch(f){this.handleDbError(f,s,"session.end");return}if(!u){s.status(404).json({error:"NotFound",message:"Session not found"});return}await this.auditWrite(i,"session.end",u.id,u.projectId),s.status(200).json({session:To(u),...d?{generationJob:Tb(d,p)}:{}})})),e.post("/v1/memories",t,this.handleCreate(ae.z.object({projectId:ae.z.string().min(1),serverSessionId:ae.z.string().min(1).nullable().optional(),kind:ae.z.string().min(1).optional(),content:ae.z.string().min(1),metadata:ae.z.record(ae.z.string(),ae.z.unknown()).optional()}),async(i,s,a)=>{let o=this.requireTeamId(i,s);if(o&&this.ensureProjectAllowed(i,s,a.projectId))try{let l=await new ur(this.options.pool).create({projectId:a.projectId,teamId:o,serverSessionId:a.serverSessionId??null,kind:a.kind??"manual",content:a.content,metadata:a.metadata??{}});await this.auditWrite(i,"memory.write",l.id,l.projectId),s.status(201).json({memory:kb(l)})}catch(c){this.handleDbError(c,s,"memory.write")}})),e.post("/v1/search",n,this.handleCreate(ae.z.object({projectId:ae.z.string().min(1),query:ae.z.string().min(1),limit:ae.z.number().int().positive().max(100).optional()}),async(i,s,a)=>{let o=this.requireTeamId(i,s);if(o&&this.ensureProjectAllowed(i,s,a.projectId))try{let l=await new ur(this.options.pool).search({projectId:a.projectId,teamId:o,query:a.query,limit:a.limit??20});await this.auditRead(i,"observation.read",null,a.projectId,{mode:"search",query:a.query,limit:a.limit??20,resultCount:l.length,observationIds:l.map(u=>u.id)}),s.status(200).json({observations:l.map(kb)})}catch(c){this.handleDbError(c,s,"observation.search")}})),e.post("/v1/context",n,this.handleCreate(ae.z.object({projectId:ae.z.string().min(1),query:ae.z.string().min(1),limit:ae.z.number().int().positive().max(50).optional()}),async(i,s,a)=>{let o=this.requireTeamId(i,s);if(o&&this.ensureProjectAllowed(i,s,a.projectId))try{let l=await new ur(this.options.pool).search({projectId:a.projectId,teamId:o,query:a.query,limit:a.limit??10}),u=l.map(d=>d.content).filter(d=>typeof d=="string"&&d.length>0).join(`
`);await this.auditRead(i,"observation.read",null,a.projectId,{mode:"context",query:a.query,limit:a.limit??10,resultCount:l.length,observationIds:l.map(d=>d.id)}),s.status(200).json({observations:l.map(kb),context:u})}catch(c){this.handleDbError(c,s,"observation.context")}}))}async auditRead(e,t,n,i,s){return this.auditWrite(e,t,n,i,s)}async resolveActorId(e){let t=e.authContext?.apiKeyId??null;if(!t)return null;try{return(await this.options.pool.query("SELECT actor_id FROM api_keys WHERE id = $1",[t])).rows[0]?.actor_id??null}catch(n){return _.warn("SYSTEM","failed to resolve actor_id for audit",{apiKeyId:t,error:n instanceof Error?n.message:String(n)}),null}}resolveSummaryQueue(){if(this.options.getSummaryQueue)return this.options.getSummaryQueue();let e=this.options.queueManager;if(typeof e.getQueue=="function")try{return e.getQueue("summary")}catch{return null}return null}resolveEventQueue(){if(this.options.getEventQueue)return this.options.getEventQueue();let e=this.options.queueManager;if(typeof e.getQueue=="function")try{return e.getQueue("event")}catch{return null}return null}toAgentEventInput(e,t){let n=e.sourceType??wz,i=typeof e.occurredAtEpoch=="number"?e.occurredAtEpoch:Date.now();return{projectId:e.projectId,teamId:t,serverSessionId:e.serverSessionId??null,sourceAdapter:n,sourceEventId:typeof e.sourceEventId=="string"?e.sourceEventId:null,eventType:e.eventType,payload:e.payload??{},metadata:typeof e.metadata=="object"&&e.metadata!==null?e.metadata:{},occurredAt:new Date(i)}}requireTeamId(e,t){let n=e.authContext?.teamId??null;return n||(t.status(403).json({error:"Forbidden",message:"API key is not bound to a team"}),null)}ensureProjectAllowed(e,t,n){return e.authContext?.projectId&&e.authContext.projectId!==n?(t.status(403).json({error:"Forbidden",message:"API key is scoped to a different project"}),!1):!0}handleDbError(e,t,n){let i=e instanceof Error?e.message:String(e);if(i.includes("project_id must belong to team_id")||i.includes("server_session_id must belong")||i.includes("agent_event source_id must belong")){t.status(403).json({error:"Forbidden",message:i});return}_.error("SYSTEM",`${n} failed`,{error:i}),t.status(500).json({error:"InternalError",message:"Failed to persist event"})}async auditWrite(e,t,n,i,s){try{let a=new pt(this.options.pool),o=await this.resolveActorId(e),c={...e.requestId?{requestId:e.requestId}:{},...s??{}};await a.createAuditLog({teamId:e.authContext?.teamId??null,projectId:i??e.authContext?.projectId??null,actorId:o,apiKeyId:e.authContext?.apiKeyId??null,action:t,resourceType:Tz(t),resourceId:n,details:c})}catch(a){_.warn("SYSTEM","audit log insert failed",{action:t,requestId:e.requestId??null,error:a instanceof Error?a.message:String(a)})}}async listJobsForScope(e){let t=[e.teamId],n="WHERE team_id = $1";e.projectId&&(t.push(e.projectId),n+=` AND project_id = $${t.length}`),e.status&&(t.push(e.status),n+=` AND status = $${t.length}`),e.sourceType&&(t.push(e.sourceType),n+=` AND source_type = $${t.length}`),e.since&&(t.push(e.since),n+=` AND created_at >= $${t.length}`);let i=await this.options.pool.query(`SELECT COUNT(*)::text AS total FROM observation_generation_jobs ${n}`,t),s=Number.parseInt(i.rows[0]?.total??"0",10);t.push(e.limit,e.offset);let a=t.length-1,o=t.length;return{jobs:(await this.options.pool.query(`
SELECT id, project_id, team_id, source_type, source_id, status, attempts,
max_attempts, created_at, completed_at, failed_at, last_error, payload
FROM observation_generation_jobs
${n}
ORDER BY created_at DESC
LIMIT $${a} OFFSET $${o}
`,t)).rows,total:s}}async retryGenerationJob(e,t,n,i){if(!n)return t.status(400).json({error:"ValidationError",message:"job id required"}),null;let a=(await this.options.pool.query("SELECT * FROM observation_generation_jobs WHERE id = $1 AND team_id = $2",[n,i])).rows[0];if(!a)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;if(e.authContext?.projectId&&e.authContext.projectId!==a.project_id)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;let o=new qe(this.options.pool),c=await o.getByIdForScope({id:n,projectId:a.project_id,teamId:i});if(!c)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;if(c.status==="queued")return await this.auditWrite(e,"generation_job.retried_by_operator",c.id,c.projectId,{outcome:"noop_already_queued",currentAttempts:c.attempts,requestId:e.requestId??null}),{job:c,retriedCount:wK(c.payload),alreadyQueued:!0};if(c.status==="processing")return t.status(409).json({error:"Conflict",message:"Generation job is currently processing; cancel or wait for completion before retrying"}),null;if(c.status==="completed")return t.status(409).json({error:"Conflict",message:"Generation job already completed; retrying would duplicate observations"}),null;let l=wK(c.payload)+1,u=c.payload&&typeof c.payload=="object"?c.payload:{},d={...u,retried_count:l,last_retried_by_actor:e.authContext?.apiKeyId??null,last_retried_request_id:e.requestId??null},p={...u,request_id:e.requestId??u.request_id??null},m=(await this.options.pool.query(`
UPDATE observation_generation_jobs
SET status = 'queued',
locked_at = NULL,
locked_by = NULL,
failed_at = NULL,
cancelled_at = NULL,
completed_at = NULL,
last_error = NULL,
attempts = LEAST(attempts, max_attempts - 1),
payload = $4::jsonb,
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[n,a.project_id,i,JSON.stringify(d)])).rows[0];if(!m)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;await new dt(this.options.pool).append({generationJobId:n,projectId:a.project_id,teamId:i,eventType:"queued",statusAfter:"queued",attempt:m.attempts,details:{source:"operator_retry",requestId:e.requestId??null,retriedCount:l}});let b=this.resolveEventQueueForRetry(m);if(b&&m)try{let x=m.bullmq_job_id;if(x){try{await b.remove(x)}catch{}await b.add(x,p)}}catch(x){_.warn("SYSTEM","failed to re-enqueue generation job on operator retry",{jobId:n,requestId:e.requestId??null,error:x instanceof Error?x.message:String(x)})}let g=await o.getByIdForScope({id:n,projectId:a.project_id,teamId:i});return g?(await this.auditWrite(e,"generation_job.retried_by_operator",g.id,g.projectId,{previousStatus:c.status,currentStatus:g.status,retriedCount:l,requestId:e.requestId??null}),{job:g,retriedCount:l,alreadyQueued:!1}):(t.status(404).json({error:"NotFound",message:"Generation job not found"}),null)}async cancelGenerationJob(e,t,n,i){if(!n)return t.status(400).json({error:"ValidationError",message:"job id required"}),null;let a=(await this.options.pool.query("SELECT * FROM observation_generation_jobs WHERE id = $1 AND team_id = $2",[n,i])).rows[0];if(!a)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;if(e.authContext?.projectId&&e.authContext.projectId!==a.project_id)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;let o=new qe(this.options.pool),c=await o.getByIdForScope({id:n,projectId:a.project_id,teamId:i});if(!c)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;if(c.status==="cancelled")return await this.auditWrite(e,"generation_job.cancelled_by_operator",c.id,c.projectId,{outcome:"noop_already_cancelled",requestId:e.requestId??null}),{job:c,alreadyCancelled:!0};if(c.status==="completed")return t.status(409).json({error:"Conflict",message:"Generation job already completed; cannot cancel"}),null;let u=(await this.options.pool.query(`
UPDATE observation_generation_jobs
SET status = 'cancelled',
cancelled_at = now(),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[n,a.project_id,i])).rows[0];if(!u)return t.status(404).json({error:"NotFound",message:"Generation job not found"}),null;await new dt(this.options.pool).append({generationJobId:n,projectId:a.project_id,teamId:i,eventType:"cancelled",statusAfter:"cancelled",attempt:u.attempts,details:{source:"operator_cancel",requestId:e.requestId??null}});let p=this.resolveEventQueueForRetry(u);if(p){let m=u.bullmq_job_id;if(m)try{await p.remove(m)}catch{}}let f=await o.getByIdForScope({id:n,projectId:a.project_id,teamId:i});return f?(await this.auditWrite(e,"generation_job.cancelled_by_operator",f.id,f.projectId,{previousStatus:c.status,currentStatus:f.status,requestId:e.requestId??null}),{job:f,alreadyCancelled:!1}):(t.status(404).json({error:"NotFound",message:"Generation job not found"}),null)}resolveEventQueueForRetry(e){if(e.source_type==="session_summary"){let n=this.resolveSummaryQueue();return n||null}let t=this.resolveEventQueue();return t||null}routeParam(e){return Array.isArray(e)?e[0]??"":e??""}handleCreate(e,t){return this.asyncHandler(async(n,i)=>{let s=e.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}await t(n,i,s.data)})}asyncHandler(e){return(t,n,i)=>{Promise.resolve(e(t,n)).catch(i)}}},_z=new Set(["agent_event","session_summary","observation_reindex"]);TK=new Set(["queued","processing","completed","failed","cancelled"]),AK=50,KK=200});async function Kb(r){let e=new wt(r.pool),t=await e.findByExternalIdForScope({externalSessionId:r.contentSessionId,projectId:r.projectId,teamId:r.teamId});if(t)return{id:t.id,projectId:t.projectId,teamId:t.teamId};try{let n=await e.create({projectId:r.projectId,teamId:r.teamId,externalSessionId:r.contentSessionId,contentSessionId:r.contentSessionId,agentId:r.agentId,agentType:r.agentType,platformSource:r.platformSource});return{id:n.id,projectId:n.projectId,teamId:n.teamId}}catch(n){if(n?.code==="23505"){let i=await e.findByExternalIdForScope({externalSessionId:r.contentSessionId,projectId:r.projectId,teamId:r.teamId});if(i)return{id:i.id,projectId:i.projectId,teamId:i.teamId}}throw n}}var fr,OK,jz,Oz,lu,jb=L(()=>{"use strict";fr=require("zod");Un();ve();Ll();OK="claude-code-compat",jz="tool_use",Oz=fr.z.object({contentSessionId:fr.z.string().min(1),tool_name:fr.z.string().min(1),tool_input:fr.z.unknown().optional(),tool_response:fr.z.unknown().optional(),cwd:fr.z.string().optional(),agentId:fr.z.string().optional(),agentType:fr.z.string().optional(),platformSource:fr.z.string().optional(),tool_use_id:fr.z.string().optional(),toolUseId:fr.z.string().optional()}).passthrough(),lu=class{constructor(e){this.options=e}options;setupRoutes(e){let t=Oi(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]});e.post("/api/sessions/observations",t,this.asyncHandler(async(n,i)=>{let s=Oz.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}let a=n.authContext?.teamId??null,o=n.authContext?.projectId??null;if(!a){i.status(403).json({error:"Forbidden",message:"API key is not bound to a team"});return}if(!o){i.status(400).json({error:"BadRequest",message:"Legacy /api/sessions/observations requires a project-scoped API key"});return}try{let c=await Kb({pool:this.options.pool,teamId:a,projectId:o,contentSessionId:s.data.contentSessionId,platformSource:typeof s.data.platformSource=="string"?s.data.platformSource:null,agentId:typeof s.data.agentId=="string"?s.data.agentId:null,agentType:typeof s.data.agentType=="string"?s.data.agentType:null}),l=typeof s.data.tool_use_id=="string"?s.data.tool_use_id:typeof s.data.toolUseId=="string"?s.data.toolUseId:null,u={projectId:o,teamId:a,serverSessionId:c.id,sourceAdapter:OK,sourceEventId:l,eventType:jz,payload:{contentSessionId:s.data.contentSessionId,tool_name:s.data.tool_name,tool_input:s.data.tool_input??null,tool_response:s.data.tool_response??null,cwd:s.data.cwd??null,platformSource:s.data.platformSource??null,agentId:s.data.agentId??null,agentType:s.data.agentType??null,toolUseId:l},metadata:{compat:"sessions/observations"},occurredAt:new Date},d=await this.options.ingestEvents.ingestOne(u,{source:"http_post_api_sessions_observations",apiKeyId:n.authContext?.apiKeyId??null,actorId:null,sourceAdapter:OK});i.json({status:"queued",observationCount:1,sessionId:c.id,serverSessionId:c.id,eventId:d.event.id,generationJobId:d.outbox?.id??null,transport:d.enqueueState})}catch(c){_.error("SYSTEM","compat observations adapter failed",{error:c instanceof Error?c.message:String(c),contentSessionId:s.data.contentSessionId}),i.status(500).json({stored:!1,reason:"internal_error"})}}))}asyncHandler(e){return(t,n,i)=>{Promise.resolve(e(t,n)).catch(i)}}}});var zs,Rz,uu,RK=L(()=>{"use strict";zs=require("zod");Un();ve();Ll();jb();Rz=zs.z.object({contentSessionId:zs.z.string().min(1),last_assistant_message:zs.z.string().optional(),agentId:zs.z.string().optional(),platformSource:zs.z.string().optional()}).passthrough(),uu=class{constructor(e){this.options=e}options;setupRoutes(e){let t=Oi(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]});e.post("/api/sessions/summarize",t,this.asyncHandler(async(n,i)=>{let s=Rz.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}let a=n.authContext?.teamId??null,o=n.authContext?.projectId??null;if(!a){i.status(403).json({error:"Forbidden",message:"API key is not bound to a team"});return}if(!o){i.status(400).json({error:"BadRequest",message:"Legacy /api/sessions/summarize requires a project-scoped API key"});return}if(s.data.agentId){i.json({status:"skipped",reason:"subagent_context"});return}try{let c=await Kb({pool:this.options.pool,teamId:a,projectId:o,contentSessionId:s.data.contentSessionId,platformSource:typeof s.data.platformSource=="string"?s.data.platformSource:null,agentId:null,agentType:null}),l=await this.options.endSession.end({sessionId:c.id,projectId:o,teamId:a,source:"http_post_api_sessions_summarize",apiKeyId:n.authContext?.apiKeyId??null,actorId:null,sourceAdapter:"claude-code-compat"});if(!l.session){i.status(404).json({status:"not_found",reason:"session_not_found"});return}i.json({status:"queued",sessionId:c.id,serverSessionId:c.id,generationJobId:l.outbox?.id??null,transport:l.enqueueState})}catch(c){_.error("SYSTEM","compat summarize adapter failed",{error:c instanceof Error?c.message:String(c),contentSessionId:s.data.contentSessionId}),i.status(500).json({status:"error",reason:"internal_error"})}}))}asyncHandler(e){return(t,n,i)=>{Promise.resolve(e(t,n)).catch(i)}}}});var kt={};vi(kt,{__addDisposableResource:()=>nj,__assign:()=>du,__asyncDelegator:()=>YK,__asyncGenerator:()=>zK,__asyncValues:()=>WK,__await:()=>Ys,__awaiter:()=>UK,__classPrivateFieldGet:()=>ej,__classPrivateFieldIn:()=>rj,__classPrivateFieldSet:()=>tj,__createBinding:()=>fu,__decorate:()=>PK,__disposeResources:()=>ij,__esDecorate:()=>LK,__exportStar:()=>BK,__extends:()=>CK,__generator:()=>GK,__importDefault:()=>ZK,__importStar:()=>XK,__makeTemplateObject:()=>QK,__metadata:()=>JK,__param:()=>MK,__propKey:()=>qK,__read:()=>Cb,__rest:()=>DK,__rewriteRelativeImportExtension:()=>sj,__runInitializers:()=>NK,__setFunctionName:()=>FK,__spread:()=>$K,__spreadArray:()=>HK,__spreadArrays:()=>VK,__values:()=>pu,default:()=>Pz});function CK(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Ob(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function DK(r,e){var t={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(r);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(r,n[i])&&(t[n[i]]=r[n[i]]);return t}function PK(r,e,t,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,n);else for(var o=r.length-1;o>=0;o--)(a=r[o])&&(s=(i<3?a(s):i>3?a(e,t,s):a(e,t))||s);return i>3&&s&&Object.defineProperty(e,t,s),s}function MK(r,e){return function(t,n){e(t,n,r)}}function LK(r,e,t,n,i,s){function a(g){if(g!==void 0&&typeof g!="function")throw new TypeError("Function expected");return g}for(var o=n.kind,c=o==="getter"?"get":o==="setter"?"set":"value",l=!e&&r?n.static?r:r.prototype:null,u=e||(l?Object.getOwnPropertyDescriptor(l,n.name):{}),d,p=!1,f=t.length-1;f>=0;f--){var m={};for(var y in n)m[y]=y==="access"?{}:n[y];for(var y in n.access)m.access[y]=n.access[y];m.addInitializer=function(g){if(p)throw new TypeError("Cannot add initializers after decoration has completed");s.push(a(g||null))};var b=(0,t[f])(o==="accessor"?{get:u.get,set:u.set}:u[c],m);if(o==="accessor"){if(b===void 0)continue;if(b===null||typeof b!="object")throw new TypeError("Object expected");(d=a(b.get))&&(u.get=d),(d=a(b.set))&&(u.set=d),(d=a(b.init))&&i.unshift(d)}else(d=a(b))&&(o==="field"?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,n.name,u),p=!0}function NK(r,e,t){for(var n=arguments.length>2,i=0;i<e.length;i++)t=n?e[i].call(r,t):e[i].call(r);return n?t:void 0}function qK(r){return typeof r=="symbol"?r:"".concat(r)}function FK(r,e,t){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(r,"name",{configurable:!0,value:t?"".concat(t," ",e):e})}function JK(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}function UK(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(d){a(d)}}function c(u){try{l(n.throw(u))}catch(d){a(d)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})}function GK(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return a.next=o(0),a.throw=o(1),a.return=o(2),typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(t=0)),t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function BK(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&fu(e,r,t)}function pu(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Cb(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s}function $K(){for(var r=[],e=0;e<arguments.length;e++)r=r.concat(Cb(arguments[e]));return r}function VK(){for(var r=0,e=0,t=arguments.length;e<t;e++)r+=arguments[e].length;for(var n=Array(r),i=0,e=0;e<t;e++)for(var s=arguments[e],a=0,o=s.length;a<o;a++,i++)n[i]=s[a];return n}function HK(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))}function Ys(r){return this instanceof Ys?(this.v=r,this):new Ys(r)}function zK(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t.apply(r,e||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",a),i[Symbol.asyncIterator]=function(){return this},i;function a(f){return function(m){return Promise.resolve(m).then(f,d)}}function o(f,m){n[f]&&(i[f]=function(y){return new Promise(function(b,g){s.push([f,y,b,g])>1||c(f,y)})},m&&(i[f]=m(i[f])))}function c(f,m){try{l(n[f](m))}catch(y){p(s[0][3],y)}}function l(f){f.value instanceof Ys?Promise.resolve(f.value.v).then(u,d):p(s[0][2],f)}function u(f){c("next",f)}function d(f){c("throw",f)}function p(f,m){f(m),s.shift(),s.length&&c(s[0][0],s[0][1])}}function YK(r){var e,t;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,s){e[i]=r[i]?function(a){return(t=!t)?{value:Ys(r[i](a)),done:!1}:s?s(a):a}:s}}function WK(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof pu=="function"?pu(r):r[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(s){t[s]=r[s]&&function(a){return new Promise(function(o,c){a=r[s](a),i(o,c,a.done,a.value)})}}function i(s,a,o,c){Promise.resolve(c).then(function(l){s({value:l,done:o})},a)}}function QK(r,e){return Object.defineProperty?Object.defineProperty(r,"raw",{value:e}):r.raw=e,r}function XK(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t=Rb(r),n=0;n<t.length;n++)t[n]!=="default"&&fu(e,r,t[n]);return Cz(e,r),e}function ZK(r){return r&&r.__esModule?r:{default:r}}function ej(r,e,t,n){if(t==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?r!==e||!n:!e.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?n:t==="a"?n.call(r):n?n.value:e.get(r)}function tj(r,e,t,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?r!==e||!i:!e.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(r,t):i?i.value=t:e.set(r,t),t}function rj(r,e){if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof r=="function"?e===r:r.has(e)}function nj(r,e,t){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,i;if(t){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],t&&(i=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");i&&(n=function(){try{i.call(this)}catch(s){return Promise.reject(s)}}),r.stack.push({value:e,dispose:n,async:t})}else t&&r.stack.push({async:!0});return e}function ij(r){function e(s){r.error=r.hasError?new Dz(s,r.error,"An error was suppressed during disposal."):s,r.hasError=!0}var t,n=0;function i(){for(;t=r.stack.pop();)try{if(!t.async&&n===1)return n=0,r.stack.push(t),Promise.resolve().then(i);if(t.dispose){var s=t.dispose.call(t.value);if(t.async)return n|=2,Promise.resolve(s).then(i,function(a){return e(a),i()})}else n|=1}catch(a){e(a)}if(n===1)return r.hasError?Promise.reject(r.error):Promise.resolve();if(r.hasError)throw r.error}return i()}function sj(r,e){return typeof r=="string"&&/^\.\.?\//.test(r)?r.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(t,n,i,s,a){return n?e?".jsx":".js":i&&(!s||!a)?t:i+s+"."+a.toLowerCase()+"js"}):r}var Ob,du,fu,Cz,Rb,Dz,Pz,Tt=L(()=>{Ob=function(r,e){return Ob=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])},Ob(r,e)};du=function(){return du=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++){t=arguments[n];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},du.apply(this,arguments)};fu=Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]});Cz=Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e},Rb=function(r){return Rb=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},Rb(r)};Dz=typeof SuppressedError=="function"?SuppressedError:function(r,e,t){var n=new Error(t);return n.name="SuppressedError",n.error=r,n.suppressed=e,n};Pz={__extends:CK,__assign:du,__rest:DK,__decorate:PK,__param:MK,__esDecorate:LK,__runInitializers:NK,__propKey:qK,__setFunctionName:FK,__metadata:JK,__awaiter:UK,__generator:GK,__createBinding:fu,__exportStar:BK,__values:pu,__read:Cb,__spread:$K,__spreadArrays:VK,__spreadArray:HK,__await:Ys,__asyncGenerator:zK,__asyncDelegator:YK,__asyncValues:WK,__makeTemplateObject:QK,__importStar:XK,__importDefault:ZK,__classPrivateFieldGet:ej,__classPrivateFieldSet:tj,__classPrivateFieldIn:rj,__addDisposableResource:nj,__disposeResources:ij,__rewriteRelativeImportExtension:sj}});var Lb=h(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.AsyncFifoQueue=void 0;var Db=class{constructor(e){this.value=void 0,this.next=null,this.value=e}},Pb=class{constructor(){this.length=0,this.head=null,this.tail=null}push(e){let t=new Db(e);return this.length?this.tail.next=t:this.head=t,this.tail=t,this.length+=1,t}shift(){if(this.length){let e=this.head;return this.head=this.head.next,this.length-=1,e}else return null}},Mb=class{constructor(e=!1){this.ignoreErrors=e,this.queue=new Pb,this.pending=new Set,this.newPromise()}add(e){this.pending.add(e),e.then(t=>{this.pending.delete(e),this.queue.length===0&&this.resolvePromise(t),this.queue.push(t)}).catch(t=>{this.ignoreErrors&&this.queue.push(void 0),this.pending.delete(e),this.rejectPromise(t)})}async waitAll(){await Promise.all(this.pending)}numTotal(){return this.pending.size+this.queue.length}numPending(){return this.pending.size}numQueued(){return this.queue.length}resolvePromise(e){this.resolve(e),this.newPromise()}rejectPromise(e){this.reject(e),this.newPromise()}newPromise(){this.nextPromise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}async wait(){return this.nextPromise}async fetch(){var e;if(!(this.pending.size===0&&this.queue.length===0)){for(;this.queue.length===0;)try{await this.wait()}catch(t){this.ignoreErrors||console.error("Unexpected Error in AsyncFifoQueue",t)}return(e=this.queue.shift())===null||e===void 0?void 0:e.value}}};mu.AsyncFifoQueue=Mb});var Nb=h(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});hu.Backoffs=void 0;var Ws=class{static normalize(e){if(Number.isFinite(e))return{type:"fixed",delay:e};if(e)return e}static calculate(e,t,n,i,s){if(e)return Mz(e,s)(t,e.type,n,i)}};hu.Backoffs=Ws;Ws.builtinStrategies={fixed:function(r,e=0){return function(){if(e>0){let t=r*(1-e);return Math.floor(Math.random()*r*e+t)}else return r}},exponential:function(r,e=0){return function(t){if(e>0){let n=Math.round(Math.pow(2,t-1)*r),i=n*(1-e);return Math.floor(Math.random()*n*e+i)}else return Math.round(Math.pow(2,t-1)*r)}}};function Mz(r,e){if(r.type in Ws.builtinStrategies)return Ws.builtinStrategies[r.type](r.delay,r.jitter);if(e)return e;throw new Error(`Unknown backoff strategy ${r.type}.
If a custom backoff strategy is used, specify it when the queue is created.`)}});var oj=h(yu=>{"use strict";Object.defineProperty(yu,"__esModule",{value:!0});yu.ChildCommand=void 0;var aj;(function(r){r[r.Init=0]="Init",r[r.Start=1]="Start",r[r.Stop=2]="Stop",r[r.GetChildrenValuesResponse=3]="GetChildrenValuesResponse",r[r.GetIgnoredChildrenFailuresResponse=4]="GetIgnoredChildrenFailuresResponse",r[r.GetDependenciesCountResponse=5]="GetDependenciesCountResponse",r[r.MoveToWaitingChildrenResponse=6]="MoveToWaitingChildrenResponse",r[r.Cancel=7]="Cancel",r[r.GetDependenciesResponse=8]="GetDependenciesResponse"})(aj||(yu.ChildCommand=aj={}))});var lj=h(bu=>{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.ErrorCode=void 0;var cj;(function(r){r[r.JobNotExist=-1]="JobNotExist",r[r.JobLockNotExist=-2]="JobLockNotExist",r[r.JobNotInState=-3]="JobNotInState",r[r.JobPendingChildren=-4]="JobPendingChildren",r[r.ParentJobNotExist=-5]="ParentJobNotExist",r[r.JobLockMismatch=-6]="JobLockMismatch",r[r.ParentJobCannotBeReplaced=-7]="ParentJobCannotBeReplaced",r[r.JobBelongsToJobScheduler=-8]="JobBelongsToJobScheduler",r[r.JobHasFailedChildren=-9]="JobHasFailedChildren",r[r.SchedulerJobIdCollision=-10]="SchedulerJobIdCollision",r[r.SchedulerJobSlotsBusy=-11]="SchedulerJobSlotsBusy"})(cj||(bu.ErrorCode=cj={}))});var dj=h(gu=>{"use strict";Object.defineProperty(gu,"__esModule",{value:!0});gu.ParentCommand=void 0;var uj;(function(r){r[r.Completed=0]="Completed",r[r.Error=1]="Error",r[r.Failed=2]="Failed",r[r.InitFailed=3]="InitFailed",r[r.InitCompleted=4]="InitCompleted",r[r.Log=5]="Log",r[r.MoveToDelayed=6]="MoveToDelayed",r[r.MoveToWait=7]="MoveToWait",r[r.Progress=8]="Progress",r[r.Update=9]="Update",r[r.GetChildrenValues=10]="GetChildrenValues",r[r.GetIgnoredChildrenFailures=11]="GetIgnoredChildrenFailures",r[r.GetDependenciesCount=12]="GetDependenciesCount",r[r.MoveToWaitingChildren=13]="MoveToWaitingChildren",r[r.GetDependencies=14]="GetDependencies"})(uj||(gu.ParentCommand=uj={}))});var fj=h(vu=>{"use strict";Object.defineProperty(vu,"__esModule",{value:!0});vu.MetricsTime=void 0;var pj;(function(r){r[r.ONE_MINUTE=1]="ONE_MINUTE",r[r.FIVE_MINUTES=5]="FIVE_MINUTES",r[r.FIFTEEN_MINUTES=15]="FIFTEEN_MINUTES",r[r.THIRTY_MINUTES=30]="THIRTY_MINUTES",r[r.ONE_HOUR=60]="ONE_HOUR",r[r.ONE_WEEK=10080]="ONE_WEEK",r[r.TWO_WEEKS=20160]="TWO_WEEKS",r[r.ONE_MONTH=80640]="ONE_MONTH"})(pj||(vu.MetricsTime=pj={}))});var bj=h(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.SpanKind=Vn.MetricNames=Vn.TelemetryAttributes=void 0;var mj;(function(r){r.QueueName="bullmq.queue.name",r.QueueOperation="bullmq.queue.operation",r.BulkCount="bullmq.job.bulk.count",r.BulkNames="bullmq.job.bulk.names",r.JobName="bullmq.job.name",r.JobId="bullmq.job.id",r.JobKey="bullmq.job.key",r.JobIds="bullmq.job.ids",r.JobAttemptsMade="bullmq.job.attempts.made",r.DeduplicationKey="bullmq.job.deduplication.key",r.JobOptions="bullmq.job.options",r.JobProgress="bullmq.job.progress",r.QueueDrainDelay="bullmq.queue.drain.delay",r.QueueGrace="bullmq.queue.grace",r.QueueCleanLimit="bullmq.queue.clean.limit",r.QueueRateLimit="bullmq.queue.rate.limit",r.JobType="bullmq.job.type",r.QueueOptions="bullmq.queue.options",r.QueueEventMaxLength="bullmq.queue.event.max.length",r.QueueJobsState="bullmq.queue.jobs.state",r.WorkerOptions="bullmq.worker.options",r.WorkerName="bullmq.worker.name",r.WorkerId="bullmq.worker.id",r.WorkerRateLimit="bullmq.worker.rate.limit",r.WorkerDoNotWaitActive="bullmq.worker.do.not.wait.active",r.WorkerForceClose="bullmq.worker.force.close",r.WorkerStalledJobs="bullmq.worker.stalled.jobs",r.WorkerFailedJobs="bullmq.worker.failed.jobs",r.WorkerJobsToExtendLocks="bullmq.worker.jobs.to.extend.locks",r.JobFinishedTimestamp="bullmq.job.finished.timestamp",r.JobAttemptFinishedTimestamp="bullmq.job.attempt_finished_timestamp",r.JobProcessedTimestamp="bullmq.job.processed.timestamp",r.JobResult="bullmq.job.result",r.JobFailedReason="bullmq.job.failed.reason",r.FlowName="bullmq.flow.name",r.JobSchedulerId="bullmq.job.scheduler.id",r.JobStatus="bullmq.job.status"})(mj||(Vn.TelemetryAttributes=mj={}));var hj;(function(r){r.QueueJobsCount="bullmq.queue.jobs",r.JobsCompleted="bullmq.jobs.completed",r.JobsFailed="bullmq.jobs.failed",r.JobsDelayed="bullmq.jobs.delayed",r.JobsRetried="bullmq.jobs.retried",r.JobsWaiting="bullmq.jobs.waiting",r.JobsWaitingChildren="bullmq.jobs.waiting_children",r.JobDuration="bullmq.job.duration"})(hj||(Vn.MetricNames=hj={}));var yj;(function(r){r[r.INTERNAL=0]="INTERNAL",r[r.SERVER=1]="SERVER",r[r.CLIENT=2]="CLIENT",r[r.PRODUCER=3]="PRODUCER",r[r.CONSUMER=4]="CONSUMER"})(yj||(Vn.SpanKind=yj={}))});var Mt=h(Di=>{"use strict";Object.defineProperty(Di,"__esModule",{value:!0});var Ko=(Tt(),ht(kt));Ko.__exportStar(oj(),Di);Ko.__exportStar(lj(),Di);Ko.__exportStar(dj(),Di);Ko.__exportStar(fj(),Di);Ko.__exportStar(bj(),Di)});var Fb=h(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.Child=void 0;var Lz=require("child_process"),Nz=require("net"),qz=require("worker_threads"),xu=Mt(),Fz=require("events"),Jz={1:"Uncaught Fatal Exception",2:"Unused",3:"Internal JavaScript Parse Error",4:"Internal JavaScript Evaluation Failure",5:"Fatal Error",6:"Non-function Internal Exception Handler",7:"Internal Exception Handler Run-Time Failure",8:"Unused",9:"Invalid Argument",10:"Internal JavaScript Run-Time Failure",12:"Invalid Debug Argument",13:"Unfinished Top-Level Await"},qb=class extends Fz.EventEmitter{constructor(e,t,n={useWorkerThreads:!1}){super(),this.mainFile=e,this.processFile=t,this.opts=n,this._exitCode=null,this._signalCode=null,this._killed=!1}get pid(){if(this.childProcess)return this.childProcess.pid;if(this.worker)return Math.abs(this.worker.threadId);throw new Error("No child process or worker thread")}get exitCode(){return this._exitCode}get signalCode(){return this._signalCode}get killed(){return this.childProcess?this.childProcess.killed:this._killed}async init(){let e=await Bz(process.execArgv),t;this.opts.useWorkerThreads?this.worker=t=new qz.Worker(this.mainFile,Object.assign({execArgv:e,stdin:!0,stdout:!0,stderr:!0},this.opts.workerThreadsOptions?this.opts.workerThreadsOptions:{})):this.childProcess=t=(0,Lz.fork)(this.mainFile,[],Object.assign({execArgv:e,stdio:"pipe"},this.opts.workerForkOptions?this.opts.workerForkOptions:{})),t.on("exit",(n,i)=>{this._exitCode=n,i=typeof i>"u"?null:i,this._signalCode=i,this._killed=!0,this.emit("exit",n,i),t.removeAllListeners(),this.removeAllListeners()}),t.on("error",(...n)=>this.emit("error",...n)),t.on("message",(...n)=>this.emit("message",...n)),t.on("close",(...n)=>this.emit("close",...n)),t.stdout.pipe(process.stdout),t.stderr.pipe(process.stderr),await this.initChild()}async send(e){return new Promise((t,n)=>{this.childProcess?this.childProcess.send(e,i=>{i?n(i):t()}):this.worker?t(this.worker.postMessage(e)):t()})}killProcess(e="SIGKILL"){this.childProcess?this.childProcess.kill(e):this.worker&&this.worker.terminate()}async kill(e="SIGKILL",t){if(this.hasProcessExited())return;let n=Uz(this.childProcess||this.worker);if(this.killProcess(e),t!==void 0&&(t===0||isFinite(t))){let i=setTimeout(()=>{this.hasProcessExited()||this.killProcess("SIGKILL")},t);await n,clearTimeout(i)}await n}async initChild(){let e=new Promise((t,n)=>{let i=a=>{if(Object.values(xu.ParentCommand).includes(a.cmd)){if(a.cmd===xu.ParentCommand.InitCompleted)t();else if(a.cmd===xu.ParentCommand.InitFailed){let o=new Error;o.stack=a.err.stack,o.message=a.err.message,n(o)}this.off("message",i),this.off("close",s)}},s=(a,o)=>{a>128&&(a-=128);let c=Jz[a]||`Unknown exit code ${a}`;n(new Error(`Error initializing child: ${c} and signal ${o}`)),this.off("message",i),this.off("close",s)};this.on("message",i),this.on("close",s)});await this.send({cmd:xu.ChildCommand.Init,value:this.processFile}),await e}hasProcessExited(){return!!(this.exitCode!==null||this.signalCode)}};Eu.Child=qb;function Uz(r){return new Promise(e=>{r.once("exit",()=>e())})}var Gz=async()=>new Promise(r=>{let e=(0,Nz.createServer)();e.listen(0,()=>{let{port:t}=e.address();e.close(()=>r(t))})}),Bz=async r=>{let e=[],t=[];for(let n=0;n<r.length;n++){let i=r[n];if(i.indexOf("--inspect")===-1)e.push(i);else{let s=i.split("=")[0],a=await Gz();t.push(`${s}=${a}`)}}return e.concat(t)}});var Gb=h((Su,Ub)=>{"use strict";Object.defineProperty(Su,"__esModule",{value:!0});Su.ChildPool=void 0;var gj=require("path"),$z=Fb(),Vz=3e4,Hz=()=>typeof require=="function"&&typeof Ub=="object"&&typeof Ub.exports=="object",Jb=class{constructor({mainFile:e=Hz()?gj.join(process.cwd(),"dist/cjs/classes/main.js"):gj.join(process.cwd(),"dist/esm/classes/main.js"),useWorkerThreads:t,workerForkOptions:n,workerThreadsOptions:i}){this.retained={},this.free={},this.opts={mainFile:e,useWorkerThreads:t,workerForkOptions:n,workerThreadsOptions:i}}async retain(e){let t=this.getFree(e).pop();if(t)return this.retained[t.pid]=t,t;t=new $z.Child(this.opts.mainFile,e,{useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),t.on("exit",this.remove.bind(this,t));try{if(await t.init(),t.exitCode!==null||t.signalCode!==null)throw new Error("Child exited before it could be retained");return this.retained[t.pid]=t,t}catch(n){throw console.error(n),this.release(t),n}}release(e){delete this.retained[e.pid],this.getFree(e.processFile).push(e)}remove(e){delete this.retained[e.pid];let t=this.getFree(e.processFile),n=t.indexOf(e);n>-1&&t.splice(n,1)}async kill(e,t="SIGKILL"){return this.remove(e),e.kill(t,Vz)}async clean(){let e=Object.values(this.retained).concat(this.getAllFree());this.retained={},this.free={},await Promise.all(e.map(t=>this.kill(t,"SIGTERM")))}getFree(e){return this.free[e]=this.free[e]||[]}getAllFree(){return Object.values(this.free).reduce((e,t)=>e.concat(t),[])}};Su.ChildPool=Jb});var xj=h((Upe,vj)=>{var{EventEmitter:zz}=require("events"),wu=class{constructor(){this.eventEmitter=new zz,this.onabort=null,this.aborted=!1,this.reason=void 0}toString(){return"[object AbortSignal]"}get[Symbol.toStringTag](){return"AbortSignal"}removeEventListener(e,t){this.eventEmitter.removeListener(e,t)}addEventListener(e,t){this.eventEmitter.on(e,t)}dispatchEvent(e){let t={type:e,target:this},n=`on${e}`;typeof this[n]=="function"&&this[n](t),this.eventEmitter.emit(e,t)}throwIfAborted(){if(this.aborted)throw this.reason}static abort(e){let t=new jo;return t.abort(),t.signal}static timeout(e){let t=new jo;return setTimeout(()=>t.abort(new Error("TimeoutError")),e),t.signal}},jo=class{constructor(){this.signal=new wu}abort(e){this.signal.aborted||(this.signal.aborted=!0,e?this.signal.reason=e:this.signal.reason=new Error("AbortError"),this.signal.dispatchEvent("abort"))}toString(){return"[object AbortController]"}get[Symbol.toStringTag](){return"AbortController"}};vj.exports={AbortController:jo,AbortSignal:wu}});var _u=h(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});Iu.AbortController=void 0;var Yz=xj(),Bb;globalThis.AbortController?Bb=globalThis.AbortController:Bb=Yz.AbortController;var $b=class extends Bb{};Iu.AbortController=$b});var Ej=h((Bpe,Wz)=>{Wz.exports={acl:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},append:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},asking:{arity:1,flags:["fast"],keyStart:0,keyStop:0,step:0},auth:{arity:-2,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},bgrewriteaof:{arity:1,flags:["admin","noscript","no_async_loading"],keyStart:0,keyStop:0,step:0},bgsave:{arity:-1,flags:["admin","noscript","no_async_loading"],keyStart:0,keyStop:0,step:0},bitcount:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},bitfield:{arity:-2,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},bitfield_ro:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},bitop:{arity:-4,flags:["write","denyoom"],keyStart:2,keyStop:-1,step:1},bitpos:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},blmove:{arity:6,flags:["write","denyoom","noscript","blocking"],keyStart:1,keyStop:2,step:1},blmpop:{arity:-5,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},blpop:{arity:-3,flags:["write","noscript","blocking"],keyStart:1,keyStop:-2,step:1},brpop:{arity:-3,flags:["write","noscript","blocking"],keyStart:1,keyStop:-2,step:1},brpoplpush:{arity:4,flags:["write","denyoom","noscript","blocking"],keyStart:1,keyStop:2,step:1},bzmpop:{arity:-5,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},bzpopmax:{arity:-3,flags:["write","noscript","blocking","fast"],keyStart:1,keyStop:-2,step:1},bzpopmin:{arity:-3,flags:["write","noscript","blocking","fast"],keyStart:1,keyStop:-2,step:1},client:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},cluster:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},command:{arity:-1,flags:["loading","stale"],keyStart:0,keyStop:0,step:0},config:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},copy:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},dbsize:{arity:1,flags:["readonly","fast"],keyStart:0,keyStop:0,step:0},debug:{arity:-2,flags:["admin","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},decr:{arity:2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},decrby:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},del:{arity:-2,flags:["write"],keyStart:1,keyStop:-1,step:1},discard:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},dump:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},echo:{arity:2,flags:["fast"],keyStart:0,keyStop:0,step:0},eval:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},eval_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},evalsha:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},evalsha_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},exec:{arity:1,flags:["noscript","loading","stale","skip_slowlog"],keyStart:0,keyStop:0,step:0},exists:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},expire:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},expireat:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},expiretime:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},failover:{arity:-1,flags:["admin","noscript","stale"],keyStart:0,keyStop:0,step:0},fcall:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},fcall_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},flushall:{arity:-1,flags:["write"],keyStart:0,keyStop:0,step:0},flushdb:{arity:-1,flags:["write"],keyStart:0,keyStop:0,step:0},function:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},geoadd:{arity:-5,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},geodist:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},geohash:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},geopos:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},georadius:{arity:-6,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},georadius_ro:{arity:-6,flags:["readonly"],keyStart:1,keyStop:1,step:1},georadiusbymember:{arity:-5,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},georadiusbymember_ro:{arity:-5,flags:["readonly"],keyStart:1,keyStop:1,step:1},geosearch:{arity:-7,flags:["readonly"],keyStart:1,keyStop:1,step:1},geosearchstore:{arity:-8,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},get:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},getbit:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},getdel:{arity:2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},getex:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},getrange:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},getset:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hdel:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hello:{arity:-1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},hexists:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hexpire:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hexpireat:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hexpiretime:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hget:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hgetall:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hgetdel:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hgetex:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hincrby:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hincrbyfloat:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hkeys:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hmget:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hmset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hpersist:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpire:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpireat:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpiretime:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hpttl:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hrandfield:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},hset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hsetex:{arity:-6,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hsetnx:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hstrlen:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},httl:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hvals:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},incr:{arity:2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},incrby:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},incrbyfloat:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},info:{arity:-1,flags:["loading","stale"],keyStart:0,keyStop:0,step:0},keys:{arity:2,flags:["readonly"],keyStart:0,keyStop:0,step:0},lastsave:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},latency:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},lcs:{arity:-3,flags:["readonly"],keyStart:1,keyStop:2,step:1},lindex:{arity:3,flags:["readonly"],keyStart:1,keyStop:1,step:1},linsert:{arity:5,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},llen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},lmove:{arity:5,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},lmpop:{arity:-4,flags:["write","movablekeys"],keyStart:0,keyStop:0,step:0},lolwut:{arity:-1,flags:["readonly","fast"],keyStart:0,keyStop:0,step:0},lpop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},lpos:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},lpush:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},lpushx:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},lrange:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},lrem:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},lset:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},ltrim:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},memory:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},mget:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},migrate:{arity:-6,flags:["write","movablekeys"],keyStart:3,keyStop:3,step:1},module:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},monitor:{arity:1,flags:["admin","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},move:{arity:3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},mset:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:2},msetnx:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:2},multi:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},object:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},persist:{arity:2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpire:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpireat:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpiretime:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},pfadd:{arity:-2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},pfcount:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},pfdebug:{arity:3,flags:["write","denyoom","admin"],keyStart:2,keyStop:2,step:1},pfmerge:{arity:-2,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},pfselftest:{arity:1,flags:["admin"],keyStart:0,keyStop:0,step:0},ping:{arity:-1,flags:["fast"],keyStart:0,keyStop:0,step:0},psetex:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},psubscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},psync:{arity:-3,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},pttl:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},publish:{arity:3,flags:["pubsub","loading","stale","fast"],keyStart:0,keyStop:0,step:0},pubsub:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},punsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},quit:{arity:-1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},randomkey:{arity:1,flags:["readonly"],keyStart:0,keyStop:0,step:0},readonly:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},readwrite:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},rename:{arity:3,flags:["write"],keyStart:1,keyStop:2,step:1},renamenx:{arity:3,flags:["write","fast"],keyStart:1,keyStop:2,step:1},replconf:{arity:-1,flags:["admin","noscript","loading","stale","allow_busy"],keyStart:0,keyStop:0,step:0},replicaof:{arity:3,flags:["admin","noscript","stale","no_async_loading"],keyStart:0,keyStop:0,step:0},reset:{arity:1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},restore:{arity:-4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},"restore-asking":{arity:-4,flags:["write","denyoom","asking"],keyStart:1,keyStop:1,step:1},role:{arity:1,flags:["noscript","loading","stale","fast"],keyStart:0,keyStop:0,step:0},rpop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},rpoplpush:{arity:3,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},rpush:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},rpushx:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},sadd:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},save:{arity:1,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},scan:{arity:-2,flags:["readonly"],keyStart:0,keyStop:0,step:0},scard:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},script:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},sdiff:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sdiffstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},select:{arity:2,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},set:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setbit:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setex:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setnx:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},setrange:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},shutdown:{arity:-1,flags:["admin","noscript","loading","stale","no_multi","allow_busy"],keyStart:0,keyStop:0,step:0},sinter:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sintercard:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},sinterstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},sismember:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},slaveof:{arity:3,flags:["admin","noscript","stale","no_async_loading"],keyStart:0,keyStop:0,step:0},slowlog:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},smembers:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},smismember:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},smove:{arity:4,flags:["write","fast"],keyStart:1,keyStop:2,step:1},sort:{arity:-2,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},sort_ro:{arity:-2,flags:["readonly","movablekeys"],keyStart:1,keyStop:1,step:1},spop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},spublish:{arity:3,flags:["pubsub","loading","stale","fast"],keyStart:1,keyStop:1,step:1},srandmember:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},srem:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},sscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},ssubscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:1,keyStop:-1,step:1},strlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},subscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},substr:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},sunion:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sunionstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},sunsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:1,keyStop:-1,step:1},swapdb:{arity:3,flags:["write","fast"],keyStart:0,keyStop:0,step:0},sync:{arity:1,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},time:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},touch:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},ttl:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},type:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},unlink:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:-1,step:1},unsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},unwatch:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},wait:{arity:3,flags:["noscript"],keyStart:0,keyStop:0,step:0},watch:{arity:-2,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:1,keyStop:-1,step:1},xack:{arity:-4,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xadd:{arity:-5,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},xautoclaim:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xclaim:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xdel:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xdelex:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xgroup:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},xinfo:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},xlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},xpending:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},xrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},xread:{arity:-4,flags:["readonly","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},xreadgroup:{arity:-7,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},xrevrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},xsetid:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},xtrim:{arity:-4,flags:["write"],keyStart:1,keyStop:1,step:1},zadd:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},zcard:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zcount:{arity:4,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zdiff:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zdiffstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},zincrby:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},zinter:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zintercard:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zinterstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},zlexcount:{arity:4,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zmpop:{arity:-4,flags:["write","movablekeys"],keyStart:0,keyStop:0,step:0},zmscore:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zpopmax:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zpopmin:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zrandmember:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangebylex:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangebyscore:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangestore:{arity:-5,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},zrank:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zrem:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zremrangebylex:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zremrangebyrank:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zremrangebyscore:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zrevrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrangebylex:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrangebyscore:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrank:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},zscore:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zunion:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zunionstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1}}});var Pi=h(Gt=>{"use strict";var Qz=Gt&&Gt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Gt,"__esModule",{value:!0});Gt.getKeyIndexes=Gt.hasFlag=Gt.exists=Gt.list=void 0;var ku=Qz(Ej());Gt.list=Object.keys(ku.default);var Vb={};Gt.list.forEach(r=>{Vb[r]=ku.default[r].flags.reduce(function(e,t){return e[t]=!0,e},{})});function Xz(r,e){return r=e?.caseInsensitive?String(r).toLowerCase():r,!!ku.default[r]}Gt.exists=Xz;function Zz(r,e,t){if(r=t?.nameCaseInsensitive?String(r).toLowerCase():r,!Vb[r])throw new Error("Unknown command "+r);return!!Vb[r][e]}Gt.hasFlag=Zz;function e7(r,e,t){r=t?.nameCaseInsensitive?String(r).toLowerCase():r;let n=ku.default[r];if(!n)throw new Error("Unknown command "+r);if(!Array.isArray(e))throw new Error("Expect args to be an array");let i=[],s=!!(t&&t.parseExternalKey),a=(c,l)=>{let u=[],d=Number(c[l]);for(let p=0;p<d;p++)u.push(p+l+1);return u},o=(c,l,u)=>{for(let d=l;d<c.length-1;d+=1)if(String(c[d]).toLowerCase()===u.toLowerCase())return d+1;return null};switch(r){case"zunionstore":case"zinterstore":case"zdiffstore":i.push(0,...a(e,1));break;case"eval":case"evalsha":case"eval_ro":case"evalsha_ro":case"fcall":case"fcall_ro":case"blmpop":case"bzmpop":i.push(...a(e,1));break;case"sintercard":case"lmpop":case"zunion":case"zinter":case"zmpop":case"zintercard":case"zdiff":{i.push(...a(e,0));break}case"georadius":{i.push(0);let c=o(e,5,"STORE");c&&i.push(c);let l=o(e,5,"STOREDIST");l&&i.push(l);break}case"georadiusbymember":{i.push(0);let c=o(e,4,"STORE");c&&i.push(c);let l=o(e,4,"STOREDIST");l&&i.push(l);break}case"sort":case"sort_ro":i.push(0);for(let c=1;c<e.length-1;c++){let l=e[c];if(typeof l!="string")continue;let u=l.toUpperCase();u==="GET"?(c+=1,l=e[c],l!=="#"&&(s?i.push([c,Sj(l)]):i.push(c))):u==="BY"?(c+=1,s?i.push([c,Sj(e[c])]):i.push(c)):u==="STORE"&&(c+=1,i.push(c))}break;case"migrate":if(e[2]==="")for(let c=5;c<e.length-1;c++){let l=e[c];if(typeof l=="string"&&l.toUpperCase()==="KEYS"){for(let u=c+1;u<e.length;u++)i.push(u);break}}else i.push(2);break;case"xreadgroup":case"xread":for(let c=r==="xread"?0:3;c<e.length-1;c++)if(String(e[c]).toUpperCase()==="STREAMS"){for(let l=c+1;l<=c+(e.length-1-c)/2;l++)i.push(l);break}break;default:if(n.step>0){let c=n.keyStart-1,l=n.keyStop>0?n.keyStop:e.length+n.keyStop+1;for(let u=c;u<l;u+=n.step)i.push(u)}break}return i}Gt.getKeyIndexes=e7;function Sj(r){typeof r!="string"&&(r=String(r));let e=r.indexOf("->");return e===-1?r.length:e}});var wj=h(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.tryCatch=Hn.errorObj=void 0;Hn.errorObj={e:{}};var Hb;function t7(r,e){try{let t=Hb;return Hb=null,t.apply(this,arguments)}catch(t){return Hn.errorObj.e=t,Hn.errorObj}}function r7(r){return Hb=r,t7}Hn.tryCatch=r7});var zn=h(zb=>{"use strict";Object.defineProperty(zb,"__esModule",{value:!0});var Qs=wj();function Ij(r){setTimeout(function(){throw r},0)}function n7(r,e,t){return typeof e=="function"&&r.then(n=>{let i;t!==void 0&&Object(t).spread&&Array.isArray(n)?i=Qs.tryCatch(e).apply(void 0,[null].concat(n)):i=n===void 0?Qs.tryCatch(e)(null):Qs.tryCatch(e)(null,n),i===Qs.errorObj&&Ij(i.e)},n=>{if(!n){let s=new Error(n+"");Object.assign(s,{cause:n}),n=s}let i=Qs.tryCatch(e)(n);i===Qs.errorObj&&Ij(i.e)}),r}zb.default=n7});var Tj=h((zpe,kj)=>{"use strict";var _j=require("assert"),Oo=require("util");function Xs(r){Object.defineProperty(this,"message",{value:r||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Oo.inherits(Xs,Error);Object.defineProperty(Xs.prototype,"name",{value:"RedisError",configurable:!0,writable:!0});function Yb(r,e,t){_j(e),_j.strictEqual(typeof t,"number"),Object.defineProperty(this,"message",{value:r||"",configurable:!0,writable:!0});let n=Error.stackTraceLimit;Error.stackTraceLimit=2,Error.captureStackTrace(this,this.constructor),Error.stackTraceLimit=n,this.offset=t,this.buffer=e}Oo.inherits(Yb,Xs);Object.defineProperty(Yb.prototype,"name",{value:"ParserError",configurable:!0,writable:!0});function Wb(r){Object.defineProperty(this,"message",{value:r||"",configurable:!0,writable:!0});let e=Error.stackTraceLimit;Error.stackTraceLimit=2,Error.captureStackTrace(this,this.constructor),Error.stackTraceLimit=e}Oo.inherits(Wb,Xs);Object.defineProperty(Wb.prototype,"name",{value:"ReplyError",configurable:!0,writable:!0});function Tu(r){Object.defineProperty(this,"message",{value:r||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Oo.inherits(Tu,Xs);Object.defineProperty(Tu.prototype,"name",{value:"AbortError",configurable:!0,writable:!0});function Qb(r){Object.defineProperty(this,"message",{value:r||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Oo.inherits(Qb,Tu);Object.defineProperty(Qb.prototype,"name",{value:"InterruptError",configurable:!0,writable:!0});kj.exports={RedisError:Xs,ParserError:Yb,ReplyError:Wb,AbortError:Tu,InterruptError:Qb}});var jj=h((Ype,Kj)=>{"use strict";var Aj=require("assert"),Zs=class extends Error{get name(){return this.constructor.name}},Xb=class extends Zs{constructor(e,t,n){Aj(t),Aj.strictEqual(typeof n,"number");let i=Error.stackTraceLimit;Error.stackTraceLimit=2,super(e),Error.stackTraceLimit=i,this.offset=n,this.buffer=t}get name(){return this.constructor.name}},Zb=class extends Zs{constructor(e){let t=Error.stackTraceLimit;Error.stackTraceLimit=2,super(e),Error.stackTraceLimit=t}get name(){return this.constructor.name}},Au=class extends Zs{get name(){return this.constructor.name}},eg=class extends Au{get name(){return this.constructor.name}};Kj.exports={RedisError:Zs,ParserError:Xb,ReplyError:Zb,AbortError:Au,InterruptError:eg}});var Mi=h((Wpe,Oj)=>{"use strict";var i7=process.version.charCodeAt(1)<55&&process.version.charCodeAt(2)===46?Tj():jj();Oj.exports=i7});var Ro=h((Qpe,tg)=>{var Rj=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920],s7=function(e){for(var t,n=0,i=0,s=[],a=e.length;n<a;n++)t=e.charCodeAt(n),t<128?s[i++]=t:t<2048?(s[i++]=t>>6|192,s[i++]=t&63|128):(t&64512)===55296&&n+1<e.length&&(e.charCodeAt(n+1)&64512)===56320?(t=65536+((t&1023)<<10)+(e.charCodeAt(++n)&1023),s[i++]=t>>18|240,s[i++]=t>>12&63|128,s[i++]=t>>6&63|128,s[i++]=t&63|128):(s[i++]=t>>12|224,s[i++]=t>>6&63|128,s[i++]=t&63|128);return s},Cj=tg.exports=function(e){for(var t,n=0,i=-1,s=0,a=0,o=typeof e=="string"?s7(e):e,c=o.length;n<c;){if(t=o[n++],i===-1)t===123&&(i=n);else if(t!==125)a=Rj[(t^a>>8)&255]^a<<8;else if(n-1!==i)return a&16383;s=Rj[(t^s>>8)&255]^s<<8}return s&16383};tg.exports.generateMulti=function(e){for(var t=1,n=e.length,i=Cj(e[0]);t<n;)if(Cj(e[t++])!==i)return-1;return i}});var Jj=h((Xpe,Fj)=>{var Pj=9007199254740991,a7="[object Arguments]",o7="[object Function]",c7="[object GeneratorFunction]",l7=/^(?:0|[1-9]\d*)$/;function Mj(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}function u7(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var Co=Object.prototype,Do=Co.hasOwnProperty,Lj=Co.toString,d7=Co.propertyIsEnumerable,Dj=Math.max;function p7(r,e){var t=S7(r)||E7(r)?u7(r.length,String):[],n=t.length,i=!!n;for(var s in r)(e||Do.call(r,s))&&!(i&&(s=="length"||qj(s,n)))&&t.push(s);return t}function f7(r,e,t,n){return r===void 0||rg(r,Co[t])&&!Do.call(n,t)?e:r}function m7(r,e,t){var n=r[e];(!(Do.call(r,e)&&rg(n,t))||t===void 0&&!(e in r))&&(r[e]=t)}function h7(r){if(!ig(r))return x7(r);var e=v7(r),t=[];for(var n in r)n=="constructor"&&(e||!Do.call(r,n))||t.push(n);return t}function Nj(r,e){return e=Dj(e===void 0?r.length-1:e,0),function(){for(var t=arguments,n=-1,i=Dj(t.length-e,0),s=Array(i);++n<i;)s[n]=t[e+n];n=-1;for(var a=Array(e+1);++n<e;)a[n]=t[n];return a[e]=s,Mj(r,this,a)}}function y7(r,e,t,n){t||(t={});for(var i=-1,s=e.length;++i<s;){var a=e[i],o=n?n(t[a],r[a],a,t,r):void 0;m7(t,a,o===void 0?r[a]:o)}return t}function b7(r){return Nj(function(e,t){var n=-1,i=t.length,s=i>1?t[i-1]:void 0,a=i>2?t[2]:void 0;for(s=r.length>3&&typeof s=="function"?(i--,s):void 0,a&&g7(t[0],t[1],a)&&(s=i<3?void 0:s,i=1),e=Object(e);++n<i;){var o=t[n];o&&r(e,o,n,s)}return e})}function qj(r,e){return e=e??Pj,!!e&&(typeof r=="number"||l7.test(r))&&r>-1&&r%1==0&&r<e}function g7(r,e,t){if(!ig(t))return!1;var n=typeof e;return(n=="number"?ng(t)&&qj(e,t.length):n=="string"&&e in t)?rg(t[e],r):!1}function v7(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Co;return r===t}function x7(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}function rg(r,e){return r===e||r!==r&&e!==e}function E7(r){return w7(r)&&Do.call(r,"callee")&&(!d7.call(r,"callee")||Lj.call(r)==a7)}var S7=Array.isArray;function ng(r){return r!=null&&_7(r.length)&&!I7(r)}function w7(r){return k7(r)&&ng(r)}function I7(r){var e=ig(r)?Lj.call(r):"";return e==o7||e==c7}function _7(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Pj}function ig(r){var e=typeof r;return!!r&&(e=="object"||e=="function")}function k7(r){return!!r&&typeof r=="object"}var T7=b7(function(r,e,t,n){y7(e,K7(e),r,n)}),A7=Nj(function(r){return r.push(void 0,f7),Mj(T7,void 0,r)});function K7(r){return ng(r)?p7(r,!0):h7(r)}Fj.exports=A7});var Bj=h((Zpe,Gj)=>{var j7=9007199254740991,O7="[object Arguments]",R7="[object Function]",C7="[object GeneratorFunction]",sg=Object.prototype,D7=sg.hasOwnProperty,Uj=sg.toString,P7=sg.propertyIsEnumerable;function M7(r){return N7(r)&&D7.call(r,"callee")&&(!P7.call(r,"callee")||Uj.call(r)==O7)}function L7(r){return r!=null&&F7(r.length)&&!q7(r)}function N7(r){return U7(r)&&L7(r)}function q7(r){var e=J7(r)?Uj.call(r):"";return e==R7||e==C7}function F7(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=j7}function J7(r){var e=typeof r;return!!r&&(e=="object"||e=="function")}function U7(r){return!!r&&typeof r=="object"}Gj.exports=M7});var Ku=h(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.isArguments=Yn.defaults=Yn.noop=void 0;var G7=Jj();Yn.defaults=G7;var B7=Bj();Yn.isArguments=B7;function $7(){}Yn.noop=$7});var Hj=h(yn=>{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});yn.genRedactedString=yn.getStringValue=yn.MAX_ARGUMENT_LENGTH=void 0;var V7=Nt(),ag=200;yn.MAX_ARGUMENT_LENGTH=ag;var H7="ioredis";function $j(r){if(r!==null)switch(typeof r){case"boolean":return;case"number":return;case"object":if(Buffer.isBuffer(r))return r.toString("hex");if(Array.isArray(r))return r.join(",");try{return JSON.stringify(r)}catch{return}case"string":return r}}yn.getStringValue=$j;function Vj(r,e){let{length:t}=r;return t<=e?r:r.slice(0,e)+' ... <REDACTED full-length="'+t+'">'}yn.genRedactedString=Vj;function z7(r){let e=(0,V7.default)(`${H7}:${r}`);function t(...n){if(e.enabled){for(let i=1;i<n.length;i++){let s=$j(n[i]);typeof s=="string"&&s.length>ag&&(n[i]=Vj(s,ag))}return e.apply(null,n)}}return Object.defineProperties(t,{namespace:{get(){return e.namespace}},enabled:{get(){return e.enabled}},destroy:{get(){return e.destroy}},log:{get(){return e.log},set(n){e.log=n}}}),t}yn.default=z7});var Yj=h(og=>{"use strict";Object.defineProperty(og,"__esModule",{value:!0});var zj=`-----BEGIN CERTIFICATE-----
MIIDTzCCAjegAwIBAgIJAKSVpiDswLcwMA0GCSqGSIb3DQEBBQUAMD4xFjAUBgNV
BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTAeFw0xMzEwMDExMjE0NTVaFw0yMzA5MjkxMjE0NTVaMD4xFjAUBgNV
BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALZqkh/DczWP
JnxnHLQ7QL0T4B4CDKWBKCcisriGbA6ZePWVNo4hfKQC6JrzfR+081NeD6VcWUiz
rmd+jtPhIY4c+WVQYm5PKaN6DT1imYdxQw7aqO5j2KUCEh/cznpLxeSHoTxlR34E
QwF28Wl3eg2vc5ct8LjU3eozWVk3gb7alx9mSA2SgmuX5lEQawl++rSjsBStemY2
BDwOpAMXIrdEyP/cVn8mkvi/BDs5M5G+09j0gfhyCzRWMQ7Hn71u1eolRxwVxgi3
TMn+/vTaFSqxKjgck6zuAYjBRPaHe7qLxHNr1So/Mc9nPy+3wHebFwbIcnUojwbp
4nctkWbjb2cCAwEAAaNQME4wHQYDVR0OBBYEFP1whtcrydmW3ZJeuSoKZIKjze3w
MB8GA1UdIwQYMBaAFP1whtcrydmW3ZJeuSoKZIKjze3wMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAG2erXhwRAa7+ZOBs0B6X57Hwyd1R4kfmXcs0rta
lbPpvgULSiB+TCbf3EbhJnHGyvdCY1tvlffLjdA7HJ0PCOn+YYLBA0pTU/dyvrN6
Su8NuS5yubnt9mb13nDGYo1rnt0YRfxN+8DM3fXIVr038A30UlPX2Ou1ExFJT0MZ
uFKY6ZvLdI6/1cbgmguMlAhM+DhKyV6Sr5699LM3zqeI816pZmlREETYkGr91q7k
BpXJu/dtHaGxg1ZGu6w/PCsYGUcECWENYD4VQPd8N32JjOfu6vEgoEAwfPP+3oGp
Z4m3ewACcWOAenqflb+cQYC4PsF7qbXDmRaWrbKntOlZ3n0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGMTCCBBmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwajELMAkGA1UEBhMCVVMx
CzAJBgNVBAgMAkNBMQswCQYDVQQHDAJDQTESMBAGA1UECgwJUmVkaXNMYWJzMS0w
KwYDVQQDDCRSZWRpc0xhYnMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
MTgwMjI1MTUzNzM3WhcNMjgwMjIzMTUzNzM3WjBfMQswCQYDVQQGEwJVUzELMAkG
A1UECAwCQ0ExEjAQBgNVBAoMCVJlZGlzTGFiczEvMC0GA1UEAwwmUkNQIEludGVy
bWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQDf9dqbxc8Bq7Ctq9rWcxrGNKKHivqLAFpPq02yLPx6fsOv
Tq7GsDChAYBBc4v7Y2Ap9RD5Vs3dIhEANcnolf27QwrG9RMnnvzk8pCvp1o6zSU4
VuOE1W66/O1/7e2rVxyrnTcP7UgK43zNIXu7+tiAqWsO92uSnuMoGPGpeaUm1jym
hjWKtkAwDFSqvHY+XL5qDVBEjeUe+WHkYUg40cAXjusAqgm2hZt29c2wnVrxW25W
P0meNlzHGFdA2AC5z54iRiqj57dTfBTkHoBczQxcyw6hhzxZQ4e5I5zOKjXXEhZN
r0tA3YC14CTabKRus/JmZieyZzRgEy2oti64tmLYTqSlAD78pRL40VNoaSYetXLw
hhNsXCHgWaY6d5bLOc/aIQMAV5oLvZQKvuXAF1IDmhPA+bZbpWipp0zagf1P1H3s
UzsMdn2KM0ejzgotbtNlj5TcrVwpmvE3ktvUAuA+hi3FkVx1US+2Gsp5x4YOzJ7u
P1WPk6ShF0JgnJH2ILdj6kttTWwFzH17keSFICWDfH/+kM+k7Y1v3EXMQXE7y0T9
MjvJskz6d/nv+sQhY04xt64xFMGTnZjlJMzfQNi7zWFLTZnDD0lPowq7l3YiPoTT
t5Xky83lu0KZsZBo0WlWaDG00gLVdtRgVbcuSWxpi5BdLb1kRab66JptWjxwXQID
AQABo4HrMIHoMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHBzOi8vcmwtY2Etc2VydmVy
LnJlZGlzbGFicy5jb20vdjEvY3JsMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcw
AYYqaHR0cHM6Ly9ybC1jYS1zZXJ2ZXIucmVkaXNsYWJzLmNvbS92MS9vY3NwMB0G
A1UdDgQWBBQHar5OKvQUpP2qWt6mckzToeCOHDAfBgNVHSMEGDAWgBQi42wH6hM4
L2sujEvLM0/u8lRXTzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB
hjANBgkqhkiG9w0BAQsFAAOCAgEAirEn/iTsAKyhd+pu2W3Z5NjCko4NPU0EYUbr
AP7+POK2rzjIrJO3nFYQ/LLuC7KCXG+2qwan2SAOGmqWst13Y+WHp44Kae0kaChW
vcYLXXSoGQGC8QuFSNUdaeg3RbMDYFT04dOkqufeWVccoHVxyTSg9eD8LZuHn5jw
7QDLiEECBmIJHk5Eeo2TAZrx4Yx6ufSUX5HeVjlAzqwtAqdt99uCJ/EL8bgpWbe+
XoSpvUv0SEC1I1dCAhCKAvRlIOA6VBcmzg5Am12KzkqTul12/VEFIgzqu0Zy2Jbc
AUPrYVu/+tOGXQaijy7YgwH8P8n3s7ZeUa1VABJHcxrxYduDDJBLZi+MjheUDaZ1
jQRHYevI2tlqeSBqdPKG4zBY5lS0GiAlmuze5oENt0P3XboHoZPHiqcK3VECgTVh
/BkJcuudETSJcZDmQ8YfoKfBzRQNg2sv/hwvUv73Ss51Sco8GEt2lD8uEdib1Q6z
zDT5lXJowSzOD5ZA9OGDjnSRL+2riNtKWKEqvtEG3VBJoBzu9GoxbAc7wIZLxmli
iF5a/Zf5X+UXD3s4TMmy6C4QZJpAA2egsSQCnraWO2ULhh7iXMysSkF/nzVfZn43
iqpaB8++9a37hWq14ZmOv0TJIDz//b2+KC4VFXWQ5W5QC6whsjT+OlG4p5ZYG0jo
616pxqo=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFujCCA6KgAwIBAgIJAJ1aTT1lu2ScMA0GCSqGSIb3DQEBCwUAMGoxCzAJBgNV
BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCQ0ExEjAQBgNVBAoMCVJlZGlz
TGFiczEtMCsGA1UEAwwkUmVkaXNMYWJzIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
aXR5MB4XDTE4MDIyNTE1MjA0MloXDTM4MDIyMDE1MjA0MlowajELMAkGA1UEBhMC
VVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJDQTESMBAGA1UECgwJUmVkaXNMYWJz
MS0wKwYDVQQDDCRSZWRpc0xhYnMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLEjXy7YrbN5Waau5cd6g1
G5C2tMmeTpZ0duFAPxNU4oE3RHS5gGiok346fUXuUxbZ6QkuzeN2/2Z+RmRcJhQY
Dm0ZgdG4x59An1TJfnzKKoWj8ISmoHS/TGNBdFzXV7FYNLBuqZouqePI6ReC6Qhl
pp45huV32Q3a6IDrrvx7Wo5ZczEQeFNbCeCOQYNDdTmCyEkHqc2AGo8eoIlSTutT
ULOC7R5gzJVTS0e1hesQ7jmqHjbO+VQS1NAL4/5K6cuTEqUl+XhVhPdLWBXJQ5ag
54qhX4v+ojLzeU1R/Vc6NjMvVtptWY6JihpgplprN0Yh2556ewcXMeturcKgXfGJ
xeYzsjzXerEjrVocX5V8BNrg64NlifzTMKNOOv4fVZszq1SIHR8F9ROrqiOdh8iC
JpUbLpXH9hWCSEO6VRMB2xJoKu3cgl63kF30s77x7wLFMEHiwsQRKxooE1UhgS9K
2sO4TlQ1eWUvFvHSTVDQDlGQ6zu4qjbOpb3Q8bQwoK+ai2alkXVR4Ltxe9QlgYK3
StsnPhruzZGA0wbXdpw0bnM+YdlEm5ffSTpNIfgHeaa7Dtb801FtA71ZlH7A6TaI
SIQuUST9EKmv7xrJyx0W1pGoPOLw5T029aTjnICSLdtV9bLwysrLhIYG5bnPq78B
cS+jZHFGzD7PUVGQD01nOQIDAQABo2MwYTAdBgNVHQ4EFgQUIuNsB+oTOC9rLoxL
yzNP7vJUV08wHwYDVR0jBBgwFoAUIuNsB+oTOC9rLoxLyzNP7vJUV08wDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAHfg
z5pMNUAKdMzK1aS1EDdK9yKz4qicILz5czSLj1mC7HKDRy8cVADUxEICis++CsCu
rYOvyCVergHQLREcxPq4rc5Nq1uj6J6649NEeh4WazOOjL4ZfQ1jVznMbGy+fJm3
3Hoelv6jWRG9iqeJZja7/1s6YC6bWymI/OY1e4wUKeNHAo+Vger7MlHV+RuabaX+
hSJ8bJAM59NCM7AgMTQpJCncrcdLeceYniGy5Q/qt2b5mJkQVkIdy4TPGGB+AXDJ
D0q3I/JDRkDUFNFdeW0js7fHdsvCR7O3tJy5zIgEV/o/BCkmJVtuwPYOrw/yOlKj
TY/U7ATAx9VFF6/vYEOMYSmrZlFX+98L6nJtwDqfLB5VTltqZ4H/KBxGE3IRSt9l
FXy40U+LnXzhhW+7VBAvyYX8GEXhHkKU8Gqk1xitrqfBXY74xKgyUSTolFSfFVgj
mcM/X4K45bka+qpkj7Kfv/8D4j6aZekwhN2ly6hhC1SmQ8qjMjpG/mrWOSSHZFmf
ybu9iD2AYHeIOkshIl6xYIa++Q/00/vs46IzAbQyriOi0XxlSMMVtPx0Q3isp+ji
n8Mq9eOuxYOEQ4of8twUkUDd528iwGtEdwf0Q01UyT84S62N8AySl1ZBKXJz6W4F
UhWfa/HQYOAPDdEjNgnVwLI23b8t0TozyCWw7q8h
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEjzCCA3egAwIBAgIQe55B/ALCKJDZtdNT8kD6hTANBgkqhkiG9w0BAQsFADBM
MSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xv
YmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0yMjAxMjYxMjAwMDBaFw0y
NTAxMjYwMDAwMDBaMFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWdu
IG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAy
MDIyIFEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmGmg1LW9b7Lf
8zDD83yBDTEkt+FOxKJZqF4veWc5KZsQj9HfnUS2e5nj/E+JImlGPsQuoiosLuXD
BVBNAMcUFa11buFMGMeEMwiTmCXoXRrXQmH0qjpOfKgYc5gHG3BsRGaRrf7VR4eg
ofNMG9wUBw4/g/TT7+bQJdA4NfE7Y4d5gEryZiBGB/swaX6Jp/8MF4TgUmOWmalK
dZCKyb4sPGQFRTtElk67F7vU+wdGcrcOx1tDcIB0ncjLPMnaFicagl+daWGsKqTh
counQb6QJtYHa91KvCfKWocMxQ7OIbB5UARLPmC4CJ1/f8YFm35ebfzAeULYdGXu
jE9CLor0OwIDAQABo4IBXzCCAVswDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW
BBSH5Zq7a7B/t95GfJWkDBpA8HHqdjAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpj
move4t0bvDB7BggrBgEFBQcBAQRvMG0wLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
Mi5nbG9iYWxzaWduLmNvbS9yb290cjMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9zZWN1
cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L3Jvb3QtcjMuY3J0MDYGA1UdHwQvMC0w
K6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vcm9vdC1yMy5jcmwwIQYD
VR0gBBowGDAIBgZngQwBAgIwDAYKKwYBBAGgMgoBAjANBgkqhkiG9w0BAQsFAAOC
AQEAKRic9/f+nmhQU/wz04APZLjgG5OgsuUOyUEZjKVhNGDwxGTvKhyXGGAMW2B/
3bRi+aElpXwoxu3pL6fkElbX3B0BeS5LoDtxkyiVEBMZ8m+sXbocwlPyxrPbX6mY
0rVIvnuUeBH8X0L5IwfpNVvKnBIilTbcebfHyXkPezGwz7E1yhUULjJFm2bt0SdX
y+4X/WeiiYIv+fTVgZZgl+/2MKIsu/qdBJc3f3TvJ8nz+Eax1zgZmww+RSQWeOj3
15Iw6Z5FX+NwzY/Ab+9PosR5UosSeq+9HhtaxZttXG1nVh+avYPGYddWmiMT90J5
ZgKnO/Fx2hBgTxhOTMYaD312kg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
WD9f
-----END CERTIFICATE-----`,Y7={RedisCloudFixed:{ca:zj},RedisCloudFlexible:{ca:zj}};og.default=Y7});var Ye=h(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.noop=Q.defaults=Q.Debug=Q.getPackageMeta=Q.zipMap=Q.CONNECTION_CLOSED_ERROR_MSG=Q.shuffle=Q.sample=Q.resolveTLSProfile=Q.parseURL=Q.optimizeErrorStack=Q.toArg=Q.convertMapToArray=Q.convertObjectToArray=Q.timeout=Q.packObject=Q.isInt=Q.wrapMultiResult=Q.convertBufferToString=void 0;var W7=require("fs"),Q7=require("path"),Wj=require("url"),cg=Ku();Object.defineProperty(Q,"defaults",{enumerable:!0,get:function(){return cg.defaults}});Object.defineProperty(Q,"noop",{enumerable:!0,get:function(){return cg.noop}});var X7=Hj();Q.Debug=X7.default;var Z7=Yj();function Qj(r,e){if(r instanceof Buffer)return r.toString(e);if(Array.isArray(r)){let t=r.length,n=Array(t);for(let i=0;i<t;++i)n[i]=r[i]instanceof Buffer&&e==="utf8"?r[i].toString():Qj(r[i],e);return n}return r}Q.convertBufferToString=Qj;function eY(r){if(!r)return null;let e=[],t=r.length;for(let n=0;n<t;++n){let i=r[n];i instanceof Error?e.push([i]):e.push([null,i])}return e}Q.wrapMultiResult=eY;function Xj(r){let e=parseFloat(r);return!isNaN(r)&&(e|0)===e}Q.isInt=Xj;function tY(r){let e={},t=r.length;for(let n=1;n<t;n+=2)e[r[n-1]]=r[n];return e}Q.packObject=tY;function rY(r,e){let t=null,n=function(){t&&(clearTimeout(t),t=null,r.apply(this,arguments))};return t=setTimeout(n,e,new Error("timeout")),n}Q.timeout=rY;function nY(r){let e=[],t=Object.keys(r);for(let n=0,i=t.length;n<i;n++)e.push(t[n],r[t[n]]);return e}Q.convertObjectToArray=nY;function iY(r){let e=[],t=0;return r.forEach(function(n,i){e[t]=i,e[t+1]=n,t+=2}),e}Q.convertMapToArray=iY;function sY(r){return r===null||typeof r>"u"?"":String(r)}Q.toArg=sY;function aY(r,e,t){let n=e.split(`
`),i="",s;for(s=1;s<n.length&&n[s].indexOf(t)!==-1;++s);for(let a=s;a<n.length;++a)i+=`
`+n[a];if(r.stack){let a=r.stack.indexOf(`
`);r.stack=r.stack.slice(0,a)+i}return r}Q.optimizeErrorStack=aY;function oY(r){if(Xj(r))return{port:r};let e=(0,Wj.parse)(r,!0,!0);!e.slashes&&r[0]!=="/"&&(r="//"+r,e=(0,Wj.parse)(r,!0,!0));let t=e.query||{},n={};if(e.auth){let i=e.auth.indexOf(":");n.username=i===-1?e.auth:e.auth.slice(0,i),n.password=i===-1?"":e.auth.slice(i+1)}if(e.pathname&&(e.protocol==="redis:"||e.protocol==="rediss:"?e.pathname.length>1&&(n.db=e.pathname.slice(1)):n.path=e.pathname),e.host&&(n.host=e.hostname),e.port&&(n.port=e.port),typeof t.family=="string"){let i=Number.parseInt(t.family,10);Number.isNaN(i)||(n.family=i)}return(0,cg.defaults)(n,t),n}Q.parseURL=oY;function cY(r){let e=r?.tls;typeof e=="string"&&(e={profile:e});let t=Z7.default[e?.profile];return t&&(e=Object.assign({},t,e),delete e.profile,r=Object.assign({},r,{tls:e})),r}Q.resolveTLSProfile=cY;function lY(r,e=0){let t=r.length;return e>=t?null:r[e+Math.floor(Math.random()*(t-e))]}Q.sample=lY;function uY(r){let e=r.length;for(;e>0;){let t=Math.floor(Math.random()*e);e--,[r[e],r[t]]=[r[t],r[e]]}return r}Q.shuffle=uY;Q.CONNECTION_CLOSED_ERROR_MSG="Connection is closed.";function dY(r,e){let t=new Map;return r.forEach((n,i)=>{t.set(n,e[i])}),t}Q.zipMap=dY;var ea=null;async function pY(){if(ea)return ea;try{let r=(0,Q7.resolve)(__dirname,"..","..","package.json"),e=await W7.promises.readFile(r,"utf8");return ea={version:JSON.parse(e).version},ea}catch{return ea={version:"error-fetching-version"},ea}}Q.getPackageMeta=pY});var Zj=h(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.parseBlockOption=ta.parseSecondsArgument=void 0;var lg=r=>{if(typeof r=="number")return r;if(Buffer.isBuffer(r))return lg(r.toString());if(typeof r=="string"){let e=Number(r);return Number.isFinite(e)?e:void 0}},fY=r=>{if(typeof r=="string")return r;if(Buffer.isBuffer(r))return r.toString()},mY=r=>{let e=lg(r);if(e!==void 0)return e<=0?0:e*1e3};ta.parseSecondsArgument=mY;var hY=r=>{for(let e=0;e<r.length;e++){let t=fY(r[e]);if(t&&t.toLowerCase()==="block"){let n=lg(r[e+1]);return n===void 0?void 0:n<=0?0:n}}return null};ta.parseBlockOption=hY});var bn=h(pg=>{"use strict";Object.defineProperty(pg,"__esModule",{value:!0});var eO=Pi(),yY=Ro(),bY=zn(),Li=Ye(),ug=Zj(),$r=class r{constructor(e,t=[],n={},i){if(this.name=e,this.inTransaction=!1,this.isResolved=!1,this.transformed=!1,this.replyEncoding=n.replyEncoding,this.errorStack=n.errorStack,this.args=t.flat(),this.callback=i,this.initPromise(),n.keyPrefix){let s=n.keyPrefix instanceof Buffer,a=s?n.keyPrefix:null;this._iterateKeys(o=>o instanceof Buffer?(a===null&&(a=Buffer.from(n.keyPrefix)),Buffer.concat([a,o])):s?Buffer.concat([n.keyPrefix,Buffer.from(String(o))]):n.keyPrefix+o)}n.readOnly&&(this.isReadOnly=!0)}static checkFlag(e,t){return t=t.toLowerCase(),!!this.getFlagMap()[e][t]}static setArgumentTransformer(e,t){this._transformer.argument[e]=t}static setReplyTransformer(e,t){this._transformer.reply[e]=t}static getFlagMap(){return this.flagMap||(this.flagMap=Object.keys(r.FLAGS).reduce((e,t)=>(e[t]={},r.FLAGS[t].forEach(n=>{e[t][n]=!0}),e),{})),this.flagMap}getSlot(){if(typeof this.slot>"u"){let e=this.getKeys()[0];this.slot=e==null?null:yY(e)}return this.slot}getKeys(){return this._iterateKeys()}toWritable(e){let t,n="*"+(this.args.length+1)+`\r
$`+Buffer.byteLength(this.name)+`\r
`+this.name+`\r
`;if(this.bufferMode){let i=new dg;i.push(n);for(let s=0;s<this.args.length;++s){let a=this.args[s];a instanceof Buffer?a.length===0?i.push(`$0\r
\r
`):(i.push("$"+a.length+`\r
`),i.push(a),i.push(`\r
`)):i.push("$"+Buffer.byteLength(a)+`\r
`+a+`\r
`)}t=i.toBuffer()}else{t=n;for(let i=0;i<this.args.length;++i){let s=this.args[i];t+="$"+Buffer.byteLength(s)+`\r
`+s+`\r
`}}return t}stringifyArguments(){for(let e=0;e<this.args.length;++e){let t=this.args[e];typeof t=="string"||(t instanceof Buffer?this.bufferMode=!0:this.args[e]=(0,Li.toArg)(t))}}transformReply(e){this.replyEncoding&&(e=(0,Li.convertBufferToString)(e,this.replyEncoding));let t=r._transformer.reply[this.name];return t&&(e=t(e)),e}setTimeout(e){this._commandTimeoutTimer||(this._commandTimeoutTimer=setTimeout(()=>{this.isResolved||this.reject(new Error("Command timed out"))},e))}setBlockingTimeout(e){if(e<=0)return;this._blockingTimeoutTimer&&(clearTimeout(this._blockingTimeoutTimer),this._blockingTimeoutTimer=void 0);let t=Date.now();this._blockingDeadline===void 0&&(this._blockingDeadline=t+e);let n=this._blockingDeadline-t;if(n<=0){this.resolve(null);return}this._blockingTimeoutTimer=setTimeout(()=>{if(this.isResolved){this._blockingTimeoutTimer=void 0;return}this._blockingTimeoutTimer=void 0,this.resolve(null)},n)}extractBlockingTimeout(){let e=this.args;if(!e||e.length===0)return;let t=this.name.toLowerCase();if(r.checkFlag("LAST_ARG_TIMEOUT_COMMANDS",t))return(0,ug.parseSecondsArgument)(e[e.length-1]);if(r.checkFlag("FIRST_ARG_TIMEOUT_COMMANDS",t))return(0,ug.parseSecondsArgument)(e[0]);if(r.checkFlag("BLOCK_OPTION_COMMANDS",t))return(0,ug.parseBlockOption)(e)}_clearTimers(){let e=this._commandTimeoutTimer;e&&(clearTimeout(e),delete this._commandTimeoutTimer);let t=this._blockingTimeoutTimer;t&&(clearTimeout(t),delete this._blockingTimeoutTimer)}initPromise(){let e=new Promise((t,n)=>{if(!this.transformed){this.transformed=!0;let i=r._transformer.argument[this.name];i&&(this.args=i(this.args)),this.stringifyArguments()}this.resolve=this._convertValue(t),this.reject=i=>{this._clearTimers(),this.errorStack?n((0,Li.optimizeErrorStack)(i,this.errorStack.stack,__dirname)):n(i)}});this.promise=(0,bY.default)(e,this.callback)}_iterateKeys(e=t=>t){if(typeof this.keys>"u"&&(this.keys=[],(0,eO.exists)(this.name,{caseInsensitive:!0}))){let t=(0,eO.getKeyIndexes)(this.name,this.args,{nameCaseInsensitive:!0});for(let n of t)this.args[n]=e(this.args[n]),this.keys.push(this.args[n])}return this.keys}_convertValue(e){return t=>{try{this._clearTimers(),e(this.transformReply(t)),this.isResolved=!0}catch(n){this.reject(n)}return this.promise}}};pg.default=$r;$r.FLAGS={VALID_IN_SUBSCRIBER_MODE:["subscribe","psubscribe","unsubscribe","punsubscribe","ssubscribe","sunsubscribe","ping","quit"],VALID_IN_MONITOR_MODE:["monitor","auth"],ENTER_SUBSCRIBER_MODE:["subscribe","psubscribe","ssubscribe"],EXIT_SUBSCRIBER_MODE:["unsubscribe","punsubscribe","sunsubscribe"],WILL_DISCONNECT:["quit"],HANDSHAKE_COMMANDS:["auth","select","client","readonly","info"],IGNORE_RECONNECT_ON_ERROR:["client"],BLOCKING_COMMANDS:["blpop","brpop","brpoplpush","blmove","bzpopmin","bzpopmax","bzmpop","blmpop","xread","xreadgroup"],LAST_ARG_TIMEOUT_COMMANDS:["blpop","brpop","brpoplpush","blmove","bzpopmin","bzpopmax"],FIRST_ARG_TIMEOUT_COMMANDS:["bzmpop","blmpop"],BLOCK_OPTION_COMMANDS:["xread","xreadgroup"]};$r._transformer={argument:{},reply:{}};var tO=function(r){if(r.length===1){if(r[0]instanceof Map)return(0,Li.convertMapToArray)(r[0]);if(typeof r[0]=="object"&&r[0]!==null)return(0,Li.convertObjectToArray)(r[0])}return r},rO=function(r){if(r.length===2){if(r[1]instanceof Map)return[r[0]].concat((0,Li.convertMapToArray)(r[1]));if(typeof r[1]=="object"&&r[1]!==null)return[r[0]].concat((0,Li.convertObjectToArray)(r[1]))}return r};$r.setArgumentTransformer("mset",tO);$r.setArgumentTransformer("msetnx",tO);$r.setArgumentTransformer("hset",rO);$r.setArgumentTransformer("hmset",rO);$r.setReplyTransformer("hgetall",function(r){if(Array.isArray(r)){let e={};for(let t=0;t<r.length;t+=2){let n=r[t],i=r[t+1];n in e?Object.defineProperty(e,n,{value:i,configurable:!0,enumerable:!0,writable:!0}):e[n]=i}return e}return r});var dg=class{constructor(){this.length=0,this.items=[]}push(e){this.length+=Buffer.byteLength(e),this.items.push(e)}toBuffer(){let e=Buffer.allocUnsafe(this.length),t=0;for(let n of this.items){let i=Buffer.byteLength(n);Buffer.isBuffer(n)?n.copy(e,t):e.write(n,t,i),t+=i}return e}}});var nO=h(fg=>{"use strict";Object.defineProperty(fg,"__esModule",{value:!0});var gY=Mi(),ju=class extends gY.RedisError{constructor(e,t){super(e),this.lastNodeError=t,Error.captureStackTrace(this,this.constructor)}get name(){return this.constructor.name}};fg.default=ju;ju.defaultMessage="Failed to refresh slots cache."});var Ou=h(hg=>{"use strict";Object.defineProperty(hg,"__esModule",{value:!0});var vY=require("stream"),mg=class extends vY.Readable{constructor(e){super(e),this.opt=e,this._redisCursor="0",this._redisDrained=!1}_read(){if(this._redisDrained){this.push(null);return}let e=[this._redisCursor];this.opt.key&&e.unshift(this.opt.key),this.opt.match&&e.push("MATCH",this.opt.match),this.opt.type&&e.push("TYPE",this.opt.type),this.opt.count&&e.push("COUNT",String(this.opt.count)),this.opt.noValues&&e.push("NOVALUES"),this.opt.redis[this.opt.command](e,(t,n)=>{if(t){this.emit("error",t);return}this._redisCursor=n[0]instanceof Buffer?n[0].toString():n[0],this._redisCursor==="0"&&(this._redisDrained=!0),this.push(n[1])})}close(){this._redisDrained=!0}};hg.default=mg});var uO=h(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.executeWithAutoPipelining=Fe.getFirstValueInFlattenedArray=Fe.shouldUseAutoPipelining=Fe.notAllowedAutoPipelineCommands=Fe.kCallbacks=Fe.kExec=void 0;var aO=Ku(),xY=Ro(),iO=zn(),sO=Pi();Fe.kExec=Symbol("exec");Fe.kCallbacks=Symbol("callbacks");Fe.notAllowedAutoPipelineCommands=["auth","info","script","quit","cluster","pipeline","multi","subscribe","psubscribe","unsubscribe","unpsubscribe","select","client"];function oO(r,e){if(r._runningAutoPipelines.has(e)||!r._autoPipelines.has(e))return;r._runningAutoPipelines.add(e);let t=r._autoPipelines.get(e);r._autoPipelines.delete(e);let n=t[Fe.kCallbacks];t[Fe.kCallbacks]=null,t.exec(function(i,s){if(r._runningAutoPipelines.delete(e),i)for(let a=0;a<n.length;a++)process.nextTick(n[a],i);else for(let a=0;a<n.length;a++)process.nextTick(n[a],...s[a]);r._autoPipelines.has(e)&&oO(r,e)})}function EY(r,e,t){return e&&r.options.enableAutoPipelining&&!r.isPipeline&&!Fe.notAllowedAutoPipelineCommands.includes(t)&&!r.options.autoPipeliningIgnoredCommands.includes(t)}Fe.shouldUseAutoPipelining=EY;function cO(r){for(let e=0;e<r.length;e++){let t=r[e];if(typeof t=="string")return t;if(Array.isArray(t)||(0,aO.isArguments)(t)){if(t.length===0)continue;return t[0]}let n=[t].flat();if(n.length>0)return n[0]}}Fe.getFirstValueInFlattenedArray=cO;function lO(r,e,t,n,i){if(r.isCluster&&!r.slots.length)return r.status==="wait"&&r.connect().catch(aO.noop),(0,iO.default)(new Promise(function(l,u){r.delayUntilReady(d=>{if(d){u(d);return}lO(r,e,t,n,null).then(l,u)})}),i);let s=r.options.keyPrefix||"",a=r.isCluster?r.slots[xY(`${s}${cO(n)}`)].join(","):"main";if(r.isCluster&&r.options.scaleReads!=="master"){let l=(0,sO.exists)(t)&&(0,sO.hasFlag)(t,"readonly");a+=l?":read":":write"}if(!r._autoPipelines.has(a)){let l=r.pipeline();l[Fe.kExec]=!1,l[Fe.kCallbacks]=[],r._autoPipelines.set(a,l)}let o=r._autoPipelines.get(a);o[Fe.kExec]||(o[Fe.kExec]=!0,setImmediate(oO,r,a));let c=new Promise(function(l,u){o[Fe.kCallbacks].push(function(d,p){if(d){u(d);return}l(p)}),e==="call"&&n.unshift(t),o[e](...n)});return(0,iO.default)(c,i)}Fe.executeWithAutoPipelining=lO});var dO=h(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});var SY=require("crypto"),wY=bn(),IY=zn(),yg=class{constructor(e,t=null,n="",i=!1){this.lua=e,this.numberOfKeys=t,this.keyPrefix=n,this.readOnly=i,this.sha=(0,SY.createHash)("sha1").update(e).digest("hex");let s=this.sha,a=new WeakSet;this.Command=class extends wY.default{toWritable(c){let l=this.reject;return this.reject=u=>{u.message.indexOf("NOSCRIPT")!==-1&&a.delete(c),l.call(this,u)},a.has(c)?this.name==="eval"&&(this.name="evalsha",this.args[0]=s):(a.add(c),this.name="eval",this.args[0]=e),super.toWritable(c)}}}execute(e,t,n,i){typeof this.numberOfKeys=="number"&&t.unshift(this.numberOfKeys),this.keyPrefix&&(n.keyPrefix=this.keyPrefix),this.readOnly&&(n.readOnly=!0);let s=new this.Command("evalsha",[this.sha,...t],n);return s.promise=s.promise.catch(a=>{if(a.message.indexOf("NOSCRIPT")===-1)throw a;let o=new this.Command("evalsha",[this.sha,...t],n);return(e.isPipeline?e.redis:e).sendCommand(o)}),(0,IY.default)(s.promise,i),e.sendCommand(s)}};bg.default=yg});var Cu=h(vg=>{"use strict";Object.defineProperty(vg,"__esModule",{value:!0});var _Y=Pi(),Ru=uO(),kY=bn(),TY=dO(),gn=class{constructor(){this.options={},this.scriptsSet={},this.addedBuiltinSet=new Set}getBuiltinCommands(){return gg.slice(0)}createBuiltinCommand(e){return{string:Wn(null,e,"utf8"),buffer:Wn(null,e,null)}}addBuiltinCommand(e){this.addedBuiltinSet.add(e),this[e]=Wn(e,e,"utf8"),this[e+"Buffer"]=Wn(e+"Buffer",e,null)}defineCommand(e,t){let n=new TY.default(t.lua,t.numberOfKeys,this.options.keyPrefix,t.readOnly);this.scriptsSet[e]=n,this[e]=pO(e,e,n,"utf8"),this[e+"Buffer"]=pO(e+"Buffer",e,n,null)}sendCommand(e,t,n){throw new Error('"sendCommand" is not implemented')}},gg=_Y.list.filter(r=>r!=="monitor");gg.push("sentinel");gg.forEach(function(r){gn.prototype[r]=Wn(r,r,"utf8"),gn.prototype[r+"Buffer"]=Wn(r+"Buffer",r,null)});gn.prototype.call=Wn("call","utf8");gn.prototype.callBuffer=Wn("callBuffer",null);gn.prototype.send_command=gn.prototype.call;function Wn(r,e,t){return typeof t>"u"&&(t=e,e=null),function(...n){let i=e||n.shift(),s=n[n.length-1];typeof s=="function"?n.pop():s=void 0;let a={errorStack:this.options.showFriendlyErrorStack?new Error:void 0,keyPrefix:this.options.keyPrefix,replyEncoding:t};return(0,Ru.shouldUseAutoPipelining)(this,r,i)?(0,Ru.executeWithAutoPipelining)(this,r,i,n,s):this.sendCommand(new kY.default(i,n,a,s))}}function pO(r,e,t,n){return function(...i){let s=typeof i[i.length-1]=="function"?i.pop():void 0,a={replyEncoding:n};return this.options.showFriendlyErrorStack&&(a.errorStack=new Error),(0,Ru.shouldUseAutoPipelining)(this,r,e)?(0,Ru.executeWithAutoPipelining)(this,r,e,i,s):t.execute(this,i,a,s)}}vg.default=gn});var Sg=h(Eg=>{"use strict";Object.defineProperty(Eg,"__esModule",{value:!0});var xg=Ro(),fO=Pi(),mO=zn(),AY=require("util"),KY=bn(),jY=Ye(),OY=Cu();function RY(r,e){let t=xg(e[0]),n=r._groupsBySlot[t];for(let i=1;i<e.length;i++)if(r._groupsBySlot[xg(e[i])]!==n)return-1;return t}var Qn=class extends OY.default{constructor(e){super(),this.redis=e,this.isPipeline=!0,this.replyPending=0,this._queue=[],this._result=[],this._transactions=0,this._shaToScript={},this.isCluster=this.redis.constructor.name==="Cluster"||this.redis.isCluster,this.options=e.options,Object.keys(e.scriptsSet).forEach(n=>{let i=e.scriptsSet[n];this._shaToScript[i.sha]=i,this[n]=e[n],this[n+"Buffer"]=e[n+"Buffer"]}),e.addedBuiltinSet.forEach(n=>{this[n]=e[n],this[n+"Buffer"]=e[n+"Buffer"]}),this.promise=new Promise((n,i)=>{this.resolve=n,this.reject=i});let t=this;Object.defineProperty(this,"length",{get:function(){return t._queue.length}})}fillResult(e,t){if(this._queue[t].name==="exec"&&Array.isArray(e[1])){let i=e[1].length;for(let s=0;s<i;s++){if(e[1][s]instanceof Error)continue;let a=this._queue[t-(i-s)];try{e[1][s]=a.transformReply(e[1][s])}catch(o){e[1][s]=o}}}if(this._result[t]=e,--this.replyPending)return;if(this.isCluster){let i=!0,s;for(let a=0;a<this._result.length;++a){let o=this._result[a][0],c=this._queue[a];if(o){if(c.name==="exec"&&o.message==="EXECABORT Transaction discarded because of previous errors.")continue;if(!s)s={name:o.name,message:o.message};else if(s.name!==o.name||s.message!==o.message){i=!1;break}}else if(!c.inTransaction&&!((0,fO.exists)(c.name,{caseInsensitive:!0})&&(0,fO.hasFlag)(c.name,"readonly",{nameCaseInsensitive:!0}))){i=!1;break}}if(s&&i){let a=this,o=s.message.split(" "),c=this._queue,l=!1;this._queue=[];for(let f=0;f<c.length;++f){if(o[0]==="ASK"&&!l&&c[f].name!=="asking"&&(!c[f-1]||c[f-1].name!=="asking")){let m=new KY.default("asking");m.ignore=!0,this.sendCommand(m)}c[f].initPromise(),this.sendCommand(c[f]),l=c[f].inTransaction}let u=!0;typeof this.leftRedirections>"u"&&(this.leftRedirections={});let d=function(){a.exec()},p=this.redis;if(p.handleError(s,this.leftRedirections,{moved:function(f,m){a.preferKey=m,p.slots[o[1]]?p.slots[o[1]][0]!==m&&(p.slots[o[1]]=[m]):p.slots[o[1]]=[m],p._groupsBySlot[o[1]]=p._groupsIds[p.slots[o[1]].join(";")],p.refreshSlotsCache(),a.exec()},ask:function(f,m){a.preferKey=m,a.exec()},tryagain:d,clusterDown:d,connectionClosed:d,maxRedirections:()=>{u=!1},defaults:()=>{u=!1}}),u)return}}let n=0;for(let i=0;i<this._queue.length-n;++i)this._queue[i+n].ignore&&(n+=1),this._result[i]=this._result[i+n];this.resolve(this._result.slice(0,this._result.length-n))}sendCommand(e){this._transactions>0&&(e.inTransaction=!0);let t=this._queue.length;return e.pipelineIndex=t,e.promise.then(n=>{this.fillResult([null,n],t)}).catch(n=>{this.fillResult([n],t)}),this._queue.push(e),this}addBatch(e){let t,n,i;for(let s=0;s<e.length;++s)t=e[s],n=t[0],i=t.slice(1),this[n].apply(this,i);return this}};Eg.default=Qn;var CY=Qn.prototype.multi;Qn.prototype.multi=function(){return this._transactions+=1,CY.apply(this,arguments)};var hO=Qn.prototype.execBuffer;Qn.prototype.execBuffer=(0,AY.deprecate)(function(){return this._transactions>0&&(this._transactions-=1),hO.apply(this,arguments)},"Pipeline#execBuffer: Use Pipeline#exec instead");Qn.prototype.exec=function(r){if(this.isCluster&&!this.redis.slots.length)return this.redis.status==="wait"&&this.redis.connect().catch(jY.noop),r&&!this.nodeifiedPromise&&(this.nodeifiedPromise=!0,(0,mO.default)(this.promise,r)),this.redis.delayUntilReady(i=>{if(i){this.reject(i);return}this.exec(r)}),this.promise;if(this._transactions>0)return this._transactions-=1,hO.apply(this,arguments);this.nodeifiedPromise||(this.nodeifiedPromise=!0,(0,mO.default)(this.promise,r)),this._queue.length||this.resolve([]);let e;if(this.isCluster){let i=[];for(let s=0;s<this._queue.length;s++){let a=this._queue[s].getKeys();if(a.length&&i.push(a[0]),a.length&&xg.generateMulti(a)<0)return this.reject(new Error("All the keys in a pipeline command should belong to the same slot")),this.promise}if(i.length){if(e=RY(this.redis,i),e<0)return this.reject(new Error("All keys in the pipeline should belong to the same slots allocation group")),this.promise}else e=Math.random()*16384|0}let t=this;return n(),this.promise;function n(){let i=t.replyPending=t._queue.length,s;t.isCluster&&(s={slot:e,redis:t.redis.connectionPool.nodes.all[t.preferKey]});let a="",o,c={isPipeline:!0,destination:t.isCluster?s:{redis:t.redis},write(l){typeof l!="string"?(o||(o=[]),a&&(o.push(Buffer.from(a,"utf8")),a=""),o.push(l)):a+=l,--i||(o?(a&&o.push(Buffer.from(a,"utf8")),c.destination.redis.stream.write(Buffer.concat(o))):c.destination.redis.stream.write(a),i=t._queue.length,a="",o=void 0)}};for(let l=0;l<t._queue.length;++l)t.redis.sendCommand(t._queue[l],c,s);return t.promise}}});var _g=h(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});Du.addTransactionSupport=void 0;var wg=Ye(),Ig=zn(),yO=Sg();function DY(r){r.pipeline=function(n){let i=new yO.default(this);return Array.isArray(n)&&i.addBatch(n),i};let{multi:e}=r;r.multi=function(n,i){if(typeof i>"u"&&!Array.isArray(n)&&(i=n,n=null),i&&i.pipeline===!1)return e.call(this);let s=new yO.default(this);s.multi(),Array.isArray(n)&&s.addBatch(n);let a=s.exec;s.exec=function(c){if(this.isCluster&&!this.redis.slots.length)return this.redis.status==="wait"&&this.redis.connect().catch(wg.noop),(0,Ig.default)(new Promise((u,d)=>{this.redis.delayUntilReady(p=>{if(p){d(p);return}this.exec(s).then(u,d)})}),c);if(this._transactions>0&&a.call(s),this.nodeifiedPromise)return a.call(s);let l=a.call(s);return(0,Ig.default)(l.then(function(u){let d=u[u.length-1];if(typeof d>"u")throw new Error("Pipeline cannot be used to send any commands when the `exec()` has been called on it.");if(d[0]){d[0].previousErrors=[];for(let p=0;p<u.length-1;++p)u[p][0]&&d[0].previousErrors.push(u[p][0]);throw d[0]}return(0,wg.wrapMultiResult)(d[1])}),c)};let{execBuffer:o}=s;return s.execBuffer=function(c){return this._transactions>0&&o.call(s),s.exec(c)},s};let{exec:t}=r;r.exec=function(n){return(0,Ig.default)(t.call(this).then(function(i){return Array.isArray(i)&&(i=(0,wg.wrapMultiResult)(i)),i}),n)}}Du.addTransactionSupport=DY});var Tg=h(kg=>{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});function PY(r,e){Object.getOwnPropertyNames(e.prototype).forEach(t=>{Object.defineProperty(r.prototype,t,Object.getOwnPropertyDescriptor(e.prototype,t))})}kg.default=PY});var gO=h(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});Pu.DEFAULT_CLUSTER_OPTIONS=void 0;var bO=require("dns");Pu.DEFAULT_CLUSTER_OPTIONS={clusterRetryStrategy:r=>Math.min(100+r*2,2e3),enableOfflineQueue:!0,enableReadyCheck:!0,scaleReads:"master",maxRedirections:16,retryDelayOnMoved:0,retryDelayOnFailover:100,retryDelayOnClusterDown:100,retryDelayOnTryAgain:100,slotsRefreshTimeout:1e3,useSRVRecords:!1,resolveSrv:bO.resolveSrv,dnsLookup:bO.lookup,enableAutoPipelining:!1,autoPipeliningIgnoredCommands:[],shardedSubscribers:!1}});var ra=h(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});yt.getConnectionName=yt.weightSrvRecords=yt.groupSrvRecords=yt.getUniqueHostnamesFromOptions=yt.normalizeNodeOptions=yt.nodeKeyToRedisOptions=yt.getNodeKey=void 0;var vO=Ye(),MY=require("net");function LY(r){return r.port=r.port||6379,r.host=r.host||"127.0.0.1",r.host+":"+r.port}yt.getNodeKey=LY;function NY(r){let e=r.lastIndexOf(":");if(e===-1)throw new Error(`Invalid node key ${r}`);return{host:r.slice(0,e),port:Number(r.slice(e+1))}}yt.nodeKeyToRedisOptions=NY;function qY(r){return r.map(e=>{let t={};if(typeof e=="object")Object.assign(t,e);else if(typeof e=="string")Object.assign(t,(0,vO.parseURL)(e));else if(typeof e=="number")t.port=e;else throw new Error("Invalid argument "+e);return typeof t.port=="string"&&(t.port=parseInt(t.port,10)),delete t.db,t.port||(t.port=6379),t.host||(t.host="127.0.0.1"),(0,vO.resolveTLSProfile)(t)})}yt.normalizeNodeOptions=qY;function FY(r){let e={};return r.forEach(t=>{e[t.host]=!0}),Object.keys(e).filter(t=>!(0,MY.isIP)(t))}yt.getUniqueHostnamesFromOptions=FY;function JY(r){let e={};for(let t of r)e.hasOwnProperty(t.priority)?(e[t.priority].totalWeight+=t.weight,e[t.priority].records.push(t)):e[t.priority]={totalWeight:t.weight,records:[t]};return e}yt.groupSrvRecords=JY;function UY(r){if(r.records.length===1)return r.totalWeight=0,r.records.shift();let e=Math.floor(Math.random()*(r.totalWeight+r.records.length)),t=0;for(let[n,i]of r.records.entries())if(t+=1+i.weight,t>e)return r.totalWeight-=i.weight,r.records.splice(n,1),i}yt.weightSrvRecords=UY;function GY(r,e){let t=`ioredis-cluster(${r})`;return e?`${t}:${e}`:t}yt.getConnectionName=GY});var EO=h(jg=>{"use strict";Object.defineProperty(jg,"__esModule",{value:!0});var xO=ra(),Ag=Ye(),BY=vn(),Vr=(0,Ag.Debug)("cluster:subscriber"),Kg=class{constructor(e,t,n=!1){this.connectionPool=e,this.emitter=t,this.isSharded=n,this.started=!1,this.subscriber=null,this.slotRange=[],this.onSubscriberEnd=()=>{if(!this.started){Vr("subscriber has disconnected, but ClusterSubscriber is not started, so not reconnecting.");return}Vr("subscriber has disconnected, selecting a new one..."),this.selectSubscriber()},this.connectionPool.on("-node",(i,s)=>{!this.started||!this.subscriber||(0,xO.getNodeKey)(this.subscriber.options)===s&&(Vr("subscriber has left, selecting a new one..."),this.selectSubscriber())}),this.connectionPool.on("+node",()=>{!this.started||this.subscriber||(Vr("a new node is discovered and there is no subscriber, selecting a new one..."),this.selectSubscriber())})}getInstance(){return this.subscriber}associateSlotRange(e){return this.isSharded&&(this.slotRange=e),this.slotRange}start(){this.started=!0,this.selectSubscriber(),Vr("started")}stop(){this.started=!1,this.subscriber&&(this.subscriber.disconnect(),this.subscriber=null)}isStarted(){return this.started}selectSubscriber(){let e=this.lastActiveSubscriber;e&&(e.off("end",this.onSubscriberEnd),e.disconnect()),this.subscriber&&(this.subscriber.off("end",this.onSubscriberEnd),this.subscriber.disconnect());let t=(0,Ag.sample)(this.connectionPool.getNodes());if(!t){Vr("selecting subscriber failed since there is no node discovered in the cluster yet"),this.subscriber=null;return}let{options:n}=t;Vr("selected a subscriber %s:%s",n.host,n.port);let i="subscriber";this.isSharded&&(i="ssubscriber"),this.subscriber=new BY.default({port:n.port,host:n.host,username:n.username,password:n.password,enableReadyCheck:!0,connectionName:(0,xO.getConnectionName)(i,n.connectionName),lazyConnect:!0,tls:n.tls,retryStrategy:null}),this.subscriber.on("error",Ag.noop),this.subscriber.on("moved",()=>{this.emitter.emit("forceRefresh")}),this.subscriber.once("end",this.onSubscriberEnd);let s={subscribe:[],psubscribe:[],ssubscribe:[]};if(e){let a=e.condition||e.prevCondition;a&&a.subscriber&&(s.subscribe=a.subscriber.channels("subscribe"),s.psubscribe=a.subscriber.channels("psubscribe"),s.ssubscribe=a.subscriber.channels("ssubscribe"))}if(s.subscribe.length||s.psubscribe.length||s.ssubscribe.length){let a=0;for(let o of["subscribe","psubscribe","ssubscribe"]){let c=s[o];if(c.length!=0)if(Vr("%s %d channels",o,c.length),o==="ssubscribe")for(let l of c)a+=1,this.subscriber[o](l).then(()=>{--a||(this.lastActiveSubscriber=this.subscriber)}).catch(()=>{Vr("failed to ssubscribe to channel: %s",l)});else a+=1,this.subscriber[o](c).then(()=>{--a||(this.lastActiveSubscriber=this.subscriber)}).catch(()=>{Vr("failed to %s %d channels",o,c.length)})}}else this.lastActiveSubscriber=this.subscriber;for(let a of["message","messageBuffer"])this.subscriber.on(a,(o,c)=>{this.emitter.emit(a,o,c)});for(let a of["pmessage","pmessageBuffer"])this.subscriber.on(a,(o,c,l)=>{this.emitter.emit(a,o,c,l)});if(this.isSharded==!0)for(let a of["smessage","smessageBuffer"])this.subscriber.on(a,(o,c)=>{this.emitter.emit(a,o,c)})}};jg.default=Kg});var SO=h(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});var $Y=require("events"),Mu=Ye(),Og=ra(),VY=vn(),Po=(0,Mu.Debug)("cluster:connectionPool"),Rg=class extends $Y.EventEmitter{constructor(e){super(),this.redisOptions=e,this.nodes={all:{},master:{},slave:{}},this.specifiedOptions={}}getNodes(e="all"){let t=this.nodes[e];return Object.keys(t).map(n=>t[n])}getInstanceByKey(e){return this.nodes.all[e]}getSampleInstance(e){let t=Object.keys(this.nodes[e]),n=(0,Mu.sample)(t);return this.nodes[e][n]}addMasterNode(e){let t=(0,Og.getNodeKey)(e.options),n=this.createRedisFromOptions(e,e.options.readOnly);return e.options.readOnly?!1:(this.nodes.all[t]=n,this.nodes.master[t]=n,!0)}createRedisFromOptions(e,t){return new VY.default((0,Mu.defaults)({retryStrategy:null,enableOfflineQueue:!0,readOnly:t},e,this.redisOptions,{lazyConnect:!0}))}findOrCreate(e,t=!1){let n=(0,Og.getNodeKey)(e);t=!!t,this.specifiedOptions[n]?Object.assign(e,this.specifiedOptions[n]):this.specifiedOptions[n]=e;let i;return this.nodes.all[n]?(i=this.nodes.all[n],i.options.readOnly!==t&&(i.options.readOnly=t,Po("Change role of %s to %s",n,t?"slave":"master"),i[t?"readonly":"readwrite"]().catch(Mu.noop),t?(delete this.nodes.master[n],this.nodes.slave[n]=i):(delete this.nodes.slave[n],this.nodes.master[n]=i))):(Po("Connecting to %s as %s",n,t?"slave":"master"),i=this.createRedisFromOptions(e,t),this.nodes.all[n]=i,this.nodes[t?"slave":"master"][n]=i,i.once("end",()=>{this.removeNode(n),this.emit("-node",i,n),Object.keys(this.nodes.all).length||this.emit("drain")}),this.emit("+node",i,n),i.on("error",function(s){this.emit("nodeError",s,n)})),i}reset(e){Po("Reset with %O",e);let t={};e.forEach(n=>{let i=(0,Og.getNodeKey)(n);n.readOnly&&t[i]||(t[i]=n)}),Object.keys(this.nodes.all).forEach(n=>{t[n]||(Po("Disconnect %s because the node does not hold any slot",n),this.nodes.all[n].disconnect(),this.removeNode(n))}),Object.keys(t).forEach(n=>{let i=t[n];this.findOrCreate(i,i.readOnly)})}removeNode(e){let{nodes:t}=this;t.all[e]&&(Po("Remove %s from the pool",e),delete t.all[e]),delete t.master[e],delete t.slave[e]}};Cg.default=Rg});var Lu=h((vfe,wO)=>{"use strict";function Pe(r,t){var t=t||{};this._capacity=t.capacity,this._head=0,this._tail=0,Array.isArray(r)?this._fromArray(r):(this._capacityMask=3,this._list=new Array(4))}Pe.prototype.peekAt=function(e){var t=e;if(t===(t|0)){var n=this.size();if(!(t>=n||t<-n))return t<0&&(t+=n),t=this._head+t&this._capacityMask,this._list[t]}};Pe.prototype.get=function(e){return this.peekAt(e)};Pe.prototype.peek=function(){if(this._head!==this._tail)return this._list[this._head]};Pe.prototype.peekFront=function(){return this.peek()};Pe.prototype.peekBack=function(){return this.peekAt(-1)};Object.defineProperty(Pe.prototype,"length",{get:function(){return this.size()}});Pe.prototype.size=function(){return this._head===this._tail?0:this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};Pe.prototype.unshift=function(e){if(arguments.length===0)return this.size();var t=this._list.length;return this._head=this._head-1+t&this._capacityMask,this._list[this._head]=e,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.pop(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};Pe.prototype.shift=function(){var e=this._head;if(e!==this._tail){var t=this._list[e];return this._list[e]=void 0,this._head=e+1&this._capacityMask,e<2&&this._tail>1e4&&this._tail<=this._list.length>>>2&&this._shrinkArray(),t}};Pe.prototype.push=function(e){if(arguments.length===0)return this.size();var t=this._tail;return this._list[t]=e,this._tail=t+1&this._capacityMask,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.shift(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};Pe.prototype.pop=function(){var e=this._tail;if(e!==this._head){var t=this._list.length;this._tail=e-1+t&this._capacityMask;var n=this._list[this._tail];return this._list[this._tail]=void 0,this._head<2&&e>1e4&&e<=t>>>2&&this._shrinkArray(),n}};Pe.prototype.removeOne=function(e){var t=e;if(t===(t|0)&&this._head!==this._tail){var n=this.size(),i=this._list.length;if(!(t>=n||t<-n)){t<0&&(t+=n),t=this._head+t&this._capacityMask;var s=this._list[t],a;if(e<n/2){for(a=e;a>0;a--)this._list[t]=this._list[t=t-1+i&this._capacityMask];this._list[t]=void 0,this._head=this._head+1+i&this._capacityMask}else{for(a=n-1-e;a>0;a--)this._list[t]=this._list[t=t+1+i&this._capacityMask];this._list[t]=void 0,this._tail=this._tail-1+i&this._capacityMask}return s}}};Pe.prototype.remove=function(e,t){var n=e,i,s=t;if(n===(n|0)&&this._head!==this._tail){var a=this.size(),o=this._list.length;if(!(n>=a||n<-a||t<1)){if(n<0&&(n+=a),t===1||!t)return i=new Array(1),i[0]=this.removeOne(n),i;if(n===0&&n+t>=a)return i=this.toArray(),this.clear(),i;n+t>a&&(t=a-n);var c;for(i=new Array(t),c=0;c<t;c++)i[c]=this._list[this._head+n+c&this._capacityMask];if(n=this._head+n&this._capacityMask,e+t===a){for(this._tail=this._tail-t+o&this._capacityMask,c=t;c>0;c--)this._list[n=n+1+o&this._capacityMask]=void 0;return i}if(e===0){for(this._head=this._head+t+o&this._capacityMask,c=t-1;c>0;c--)this._list[n=n+1+o&this._capacityMask]=void 0;return i}if(n<a/2){for(this._head=this._head+e+t+o&this._capacityMask,c=e;c>0;c--)this.unshift(this._list[n=n-1+o&this._capacityMask]);for(n=this._head-1+o&this._capacityMask;s>0;)this._list[n=n-1+o&this._capacityMask]=void 0,s--;e<0&&(this._tail=n)}else{for(this._tail=n,n=n+t+o&this._capacityMask,c=a-(t+e);c>0;c--)this.push(this._list[n++]);for(n=this._tail;s>0;)this._list[n=n+1+o&this._capacityMask]=void 0,s--}return this._head<2&&this._tail>1e4&&this._tail<=o>>>2&&this._shrinkArray(),i}}};Pe.prototype.splice=function(e,t){var n=e;if(n===(n|0)){var i=this.size();if(n<0&&(n+=i),!(n>i))if(arguments.length>2){var s,a,o,c=arguments.length,l=this._list.length,u=2;if(!i||n<i/2){for(a=new Array(n),s=0;s<n;s++)a[s]=this._list[this._head+s&this._capacityMask];for(t===0?(o=[],n>0&&(this._head=this._head+n+l&this._capacityMask)):(o=this.remove(n,t),this._head=this._head+n+l&this._capacityMask);c>u;)this.unshift(arguments[--c]);for(s=n;s>0;s--)this.unshift(a[s-1])}else{a=new Array(i-(n+t));var d=a.length;for(s=0;s<d;s++)a[s]=this._list[this._head+n+t+s&this._capacityMask];for(t===0?(o=[],n!=i&&(this._tail=this._head+n+l&this._capacityMask)):(o=this.remove(n,t),this._tail=this._tail-d+l&this._capacityMask);u<c;)this.push(arguments[u++]);for(s=0;s<d;s++)this.push(a[s])}return o}else return this.remove(n,t)}};Pe.prototype.clear=function(){this._list=new Array(this._list.length),this._head=0,this._tail=0};Pe.prototype.isEmpty=function(){return this._head===this._tail};Pe.prototype.toArray=function(){return this._copyArray(!1)};Pe.prototype._fromArray=function(e){var t=e.length,n=this._nextPowerOf2(t);this._list=new Array(n),this._capacityMask=n-1,this._tail=t;for(var i=0;i<t;i++)this._list[i]=e[i]};Pe.prototype._copyArray=function(e,t){var n=this._list,i=n.length,s=this.length;if(t=t|s,t==s&&this._head<this._tail)return this._list.slice(this._head,this._tail);var a=new Array(t),o=0,c;if(e||this._head>this._tail){for(c=this._head;c<i;c++)a[o++]=n[c];for(c=0;c<this._tail;c++)a[o++]=n[c]}else for(c=this._head;c<this._tail;c++)a[o++]=n[c];return a};Pe.prototype._growArray=function(){if(this._head!=0){var e=this._copyArray(!0,this._list.length<<1);this._tail=this._list.length,this._head=0,this._list=e}else this._tail=this._list.length,this._list.length<<=1;this._capacityMask=this._capacityMask<<1|1};Pe.prototype._shrinkArray=function(){this._list.length>>>=1,this._capacityMask>>>=1};Pe.prototype._nextPowerOf2=function(e){var t=Math.log(e)/Math.log(2),n=1<<t+1;return Math.max(n,4)};wO.exports=Pe});var IO=h(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});var HY=Ye(),zY=Lu(),YY=(0,HY.Debug)("delayqueue"),Dg=class{constructor(){this.queues={},this.timeouts={}}push(e,t,n){let i=n.callback||process.nextTick;this.queues[e]||(this.queues[e]=new zY),this.queues[e].push(t),this.timeouts[e]||(this.timeouts[e]=setTimeout(()=>{i(()=>{this.timeouts[e]=null,this.execute(e)})},n.timeout))}execute(e){let t=this.queues[e];if(!t)return;let{length:n}=t;if(n)for(YY("send %d commands in %s queue",n,e),this.queues[e]=null;t.length>0;)t.shift()()}};Pg.default=Dg});var AO=h(Lg=>{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});var _O=ra(),TO=Ye(),WY=vn(),kO=(0,TO.Debug)("cluster:subscriberGroup:shardedSubscriber"),me={IDLE:"idle",STARTING:"starting",CONNECTED:"connected",STOPPING:"stopping",ENDED:"ended"},QY={[me.IDLE]:[me.STARTING,me.STOPPING,me.ENDED],[me.STARTING]:[me.CONNECTED,me.STOPPING,me.ENDED],[me.CONNECTED]:[me.STOPPING,me.ENDED],[me.STOPPING]:[me.ENDED],[me.ENDED]:[]},Mg=class{constructor(e,t,n){var i;this.emitter=e,this.status=me.IDLE,this.instance=null,this.connectPromise=null,this.messageListeners=new Map,this.onEnd=()=>{this.updateStatus(me.ENDED),this.emitter.emit("-node",this.instance,this.nodeKey)},this.onError=s=>{this.emitter.emit("nodeError",s,this.nodeKey)},this.onMoved=()=>{this.emitter.emit("moved")},this.instance=new WY.default((0,TO.defaults)({enableReadyCheck:!1,enableOfflineQueue:!0,connectionName:(0,_O.getConnectionName)("ssubscriber",t.connectionName),retryStrategy:null,lazyConnect:!0},t,n)),this.lazyConnect=(i=n?.lazyConnect)!==null&&i!==void 0?i:!0,this.nodeKey=(0,_O.getNodeKey)(t),this.instance.on("end",this.onEnd),this.instance.on("error",this.onError),this.instance.on("moved",this.onMoved);for(let s of["smessage","smessageBuffer"]){let a=(...o)=>{this.emitter.emit(s,...o)};this.messageListeners.set(s,a),this.instance.on(s,a)}}async start(){if(this.connectPromise)return this.connectPromise;if(!(this.status===me.STARTING||this.status===me.CONNECTED)){if(this.status===me.ENDED||!this.instance)throw new Error(`Sharded subscriber ${this.nodeKey} cannot be restarted once ended.`);this.updateStatus(me.STARTING),this.connectPromise=this.instance.connect();try{await this.connectPromise,this.updateStatus(me.CONNECTED)}catch(e){throw this.updateStatus(me.ENDED),e}finally{this.connectPromise=null}}}stop(){this.updateStatus(me.STOPPING),this.instance&&(this.instance.disconnect(),this.instance.removeAllListeners(),this.messageListeners.clear(),this.instance=null),this.updateStatus(me.ENDED),kO("stopped %s",this.nodeKey)}isStarted(){return[me.CONNECTED,me.STARTING].includes(this.status)}get subscriberStatus(){return this.status}isHealthy(){return(this.status===me.IDLE||this.status===me.CONNECTED||this.status===me.STARTING)&&this.instance!==null}getInstance(){return this.instance}getNodeKey(){return this.nodeKey}isLazyConnect(){return this.lazyConnect}updateStatus(e){if(this.status!==e){if(!QY[this.status].includes(e)){kO("Invalid status transition for %s: %s -> %s",this.nodeKey,this.status,e);return}this.status=e}}};Lg.default=Mg});var KO=h(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});var XY=Ye(),ZY=ra(),Nu=Ro(),eW=AO(),mr=(0,XY.Debug)("cluster:subscriberGroup"),na=class r{constructor(e,t){this.subscriberGroupEmitter=e,this.options=t,this.shardedSubscribers=new Map,this.clusterSlots=[],this.subscriberToSlotsIndex=new Map,this.channels=new Map,this.failedAttemptsByNode=new Map,this.isResetting=!1,this.pendingReset=null,this.handleSubscriberConnectFailed=(n,i)=>{let a=(this.failedAttemptsByNode.get(i)||0)+1;this.failedAttemptsByNode.set(i,a);let o=Math.min(a,r.MAX_RETRY_ATTEMPTS),c=Math.min(r.BASE_BACKOFF_MS*2**o,r.MAX_BACKOFF_MS),l=Math.floor((Math.random()-.5)*(c*.5)),u=Math.max(0,c+l);mr("Failed to connect subscriber for %s. Refreshing slots in %dms",i,u),this.subscriberGroupEmitter.emit("subscriberConnectFailed",{delay:u,error:n})},this.handleSubscriberConnectSucceeded=n=>{this.failedAttemptsByNode.delete(n)}}getResponsibleSubscriber(e){let t=this.clusterSlots[e][0],n=this.shardedSubscribers.get(t);return n&&n.subscriberStatus==="idle"&&n.start().then(()=>{this.handleSubscriberConnectSucceeded(n.getNodeKey())}).catch(i=>{this.handleSubscriberConnectFailed(i,n.getNodeKey())}),n}addChannels(e){let t=Nu(e[0]);for(let i of e)if(Nu(i)!==t)return-1;let n=this.channels.get(t);return n?this.channels.set(t,n.concat(e)):this.channels.set(t,e),Array.from(this.channels.values()).reduce((i,s)=>i+s.length,0)}removeChannels(e){let t=Nu(e[0]);for(let i of e)if(Nu(i)!==t)return-1;let n=this.channels.get(t);if(n){let i=n.filter(s=>!e.includes(s));this.channels.set(t,i)}return Array.from(this.channels.values()).reduce((i,s)=>i+s.length,0)}stop(){for(let e of this.shardedSubscribers.values())e.stop();this.pendingReset=null,this.shardedSubscribers.clear(),this.subscriberToSlotsIndex.clear()}start(){let e=[];for(let t of this.shardedSubscribers.values())this.shouldStartSubscriber(t)&&(e.push(t.start().then(()=>{this.handleSubscriberConnectSucceeded(t.getNodeKey())}).catch(n=>{this.handleSubscriberConnectFailed(n,t.getNodeKey())})),this.subscriberGroupEmitter.emit("+subscriber"));return Promise.all(e)}async reset(e,t){if(this.isResetting){this.pendingReset={slots:e,nodes:t};return}this.isResetting=!0;try{let n=this._refreshSlots(e),i=this.hasUnhealthySubscribers();if(!n&&!i){mr("No topology change detected or failed subscribers. Skipping reset.");return}for(let[a,o]of this.shardedSubscribers){if(this.subscriberToSlotsIndex.has(a)&&o.isHealthy()){mr("Skipping deleting subscriber for %s",a);continue}mr("Removing subscriber for %s",a),o.stop(),this.shardedSubscribers.delete(a),this.subscriberGroupEmitter.emit("-subscriber")}let s=[];for(let[a,o]of this.subscriberToSlotsIndex){let c=this.shardedSubscribers.get(a);if(c&&c.isHealthy()){mr("Skipping creating new subscriber for %s",a),!c.isStarted()&&this.shouldStartSubscriber(c)&&s.push(c.start().then(()=>{this.handleSubscriberConnectSucceeded(a)}).catch(d=>{this.handleSubscriberConnectFailed(d,a)}));continue}c&&!c.isHealthy()&&(mr("Replacing subscriber for %s",a),c.stop(),this.shardedSubscribers.delete(a),this.subscriberGroupEmitter.emit("-subscriber")),mr("Creating new subscriber for %s",a);let l=t.find(d=>(0,ZY.getNodeKey)(d.options)===a);if(!l){mr("Failed to find node for key %s",a);continue}let u=new eW.default(this.subscriberGroupEmitter,l.options,this.options.redisOptions);this.shardedSubscribers.set(a,u),this.shouldStartSubscriber(u)&&s.push(u.start().then(()=>{this.handleSubscriberConnectSucceeded(a)}).catch(d=>{this.handleSubscriberConnectFailed(d,a)})),this.subscriberGroupEmitter.emit("+subscriber")}await Promise.all(s),this._resubscribe(),this.subscriberGroupEmitter.emit("subscribersReady")}finally{if(this.isResetting=!1,this.pendingReset){let{slots:n,nodes:i}=this.pendingReset;this.pendingReset=null,await this.reset(n,i)}}}_refreshSlots(e){if(this._slotsAreEqual(e)&&this.subscriberToSlotsIndex.size>0)return mr("Nothing to refresh because the new cluster map is equal to the previous one."),!1;mr("Refreshing the slots of the subscriber group."),this.subscriberToSlotsIndex=new Map;for(let t=0;t<e.length;t++){let n=e[t][0];this.subscriberToSlotsIndex.has(n)||this.subscriberToSlotsIndex.set(n,[]),this.subscriberToSlotsIndex.get(n).push(Number(t))}return this.clusterSlots=JSON.parse(JSON.stringify(e)),!0}_resubscribe(){this.shardedSubscribers&&this.shardedSubscribers.forEach((e,t)=>{let n=this.subscriberToSlotsIndex.get(t);n&&n.forEach(i=>{let s=e.getInstance(),a=this.channels.get(i);if(a&&a.length>0){if(!s||s.status==="end")return;s.status==="ready"?s.ssubscribe(...a).catch(o=>{mr("Failed to ssubscribe on node %s: %s",t,o)}):s.once("ready",()=>{s.ssubscribe(...a).catch(o=>{mr("Failed to ssubscribe on node %s: %s",t,o)})})}})})}_slotsAreEqual(e){return this.clusterSlots===void 0?!1:JSON.stringify(this.clusterSlots)===JSON.stringify(e)}hasUnhealthySubscribers(){let e=Array.from(this.shardedSubscribers.values()).some(n=>!n.isHealthy()),t=Array.from(this.subscriberToSlotsIndex.keys()).some(n=>!this.shardedSubscribers.has(n));return e||t}shouldStartSubscriber(e){if(e.isStarted())return!1;if(!e.isLazyConnect())return!0;let t=this.subscriberToSlotsIndex.get(e.getNodeKey());return t?t.some(n=>{let i=this.channels.get(n);return!!(i&&i.length>0)}):!1}};Ng.default=na;na.MAX_RETRY_ATTEMPTS=10;na.MAX_BACKOFF_MS=2e3;na.BASE_BACKOFF_MS=100});var Jg=h(Fg=>{"use strict";Object.defineProperty(Fg,"__esModule",{value:!0});var jO=Pi(),qg=require("events"),ia=Mi(),OO=zn(),RO=bn(),qu=nO(),tW=vn(),rW=Ou(),nW=_g(),Bt=Ye(),iW=Tg(),sW=Cu(),aW=gO(),oW=EO(),cW=SO(),lW=IO(),sa=ra(),CO=Lu(),uW=KO(),Se=(0,Bt.Debug)("cluster"),DO=new WeakSet,Mo=class r extends sW.default{constructor(e,t={}){if(super(),this.slots=[],this._groupsIds={},this._groupsBySlot=Array(16384),this.isCluster=!0,this.retryAttempts=0,this.delayQueue=new lW.default,this.offlineQueue=new CO,this.isRefreshing=!1,this._refreshSlotsCacheCallbacks=[],this._autoPipelines=new Map,this._runningAutoPipelines=new Set,this._readyDelayedCallbacks=[],this.connectionEpoch=0,qg.EventEmitter.call(this),this.startupNodes=e,this.options=(0,Bt.defaults)({},t,aW.DEFAULT_CLUSTER_OPTIONS,this.options),this.options.shardedSubscribers&&this.createShardedSubscriberGroup(),this.options.redisOptions&&this.options.redisOptions.keyPrefix&&!this.options.keyPrefix&&(this.options.keyPrefix=this.options.redisOptions.keyPrefix),typeof this.options.scaleReads!="function"&&["all","master","slave"].indexOf(this.options.scaleReads)===-1)throw new Error('Invalid option scaleReads "'+this.options.scaleReads+'". Expected "all", "master", "slave" or a custom function');this.connectionPool=new cW.default(this.options.redisOptions),this.connectionPool.on("-node",(n,i)=>{this.emit("-node",n)}),this.connectionPool.on("+node",n=>{this.emit("+node",n)}),this.connectionPool.on("drain",()=>{this.setStatus("close")}),this.connectionPool.on("nodeError",(n,i)=>{this.emit("node error",n,i)}),this.subscriber=new oW.default(this.connectionPool,this),this.options.scripts&&Object.entries(this.options.scripts).forEach(([n,i])=>{this.defineCommand(n,i)}),this.options.lazyConnect?this.setStatus("wait"):this.connect().catch(n=>{Se("connecting failed: %s",n)})}connect(){return new Promise((e,t)=>{if(this.status==="connecting"||this.status==="connect"||this.status==="ready"){t(new Error("Redis is already connecting/connected"));return}let n=++this.connectionEpoch;this.setStatus("connecting"),this.resolveStartupNodeHostnames().then(i=>{if(this.connectionEpoch!==n){Se("discard connecting after resolving startup nodes because epoch not match: %d != %d",n,this.connectionEpoch),t(new ia.RedisError("Connection is discarded because a new connection is made"));return}if(this.status!=="connecting"){Se("discard connecting after resolving startup nodes because the status changed to %s",this.status),t(new ia.RedisError("Connection is aborted"));return}this.connectionPool.reset(i),this.options.shardedSubscribers&&this.shardedSubscribers.reset(this.slots,this.connectionPool.getNodes("all")).catch(c=>{Se("Error while starting subscribers: %s",c)});let s=()=>{this.setStatus("ready"),this.retryAttempts=0,this.executeOfflineCommands(),this.resetNodesRefreshInterval(),e()},a,o=()=>{this.invokeReadyDelayedCallbacks(void 0),this.removeListener("close",a),this.manuallyClosing=!1,this.setStatus("connect"),this.options.enableReadyCheck?this.readyCheck((c,l)=>{c||l?(Se("Ready check failed (%s). Reconnecting...",c||l),this.status==="connect"&&this.disconnect(!0)):s()}):s()};a=()=>{let c=new Error("None of startup nodes is available");this.removeListener("refresh",o),this.invokeReadyDelayedCallbacks(c),t(c)},this.once("refresh",o),this.once("close",a),this.once("close",this.handleCloseEvent.bind(this)),this.refreshSlotsCache(c=>{c&&c.message===qu.default.defaultMessage&&(tW.default.prototype.silentEmit.call(this,"error",c),this.connectionPool.reset([]))}),this.subscriber.start(),this.options.shardedSubscribers&&this.shardedSubscribers.start().catch(c=>{Se("Error while starting subscribers: %s",c)})}).catch(i=>{this.setStatus("close"),this.handleCloseEvent(i),this.invokeReadyDelayedCallbacks(i),t(i)})})}disconnect(e=!1){let t=this.status;this.setStatus("disconnecting"),e||(this.manuallyClosing=!0),this.reconnectTimeout&&!e&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null,Se("Canceled reconnecting attempts")),this.clearNodesRefreshInterval(),this.subscriber.stop(),this.options.shardedSubscribers&&this.shardedSubscribers.stop(),t==="wait"?(this.setStatus("close"),this.handleCloseEvent()):this.connectionPool.reset([])}quit(e){let t=this.status;if(this.setStatus("disconnecting"),this.manuallyClosing=!0,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.clearNodesRefreshInterval(),this.subscriber.stop(),this.options.shardedSubscribers&&this.shardedSubscribers.stop(),t==="wait"){let n=(0,OO.default)(Promise.resolve("OK"),e);return setImmediate(function(){this.setStatus("close"),this.handleCloseEvent()}.bind(this)),n}return(0,OO.default)(Promise.all(this.nodes().map(n=>n.quit().catch(i=>{if(i.message===Bt.CONNECTION_CLOSED_ERROR_MSG)return"OK";throw i}))).then(()=>"OK"),e)}duplicate(e=[],t={}){let n=e.length>0?e:this.startupNodes.slice(0),i=Object.assign({},this.options,t);return new r(n,i)}nodes(e="all"){if(e!=="all"&&e!=="master"&&e!=="slave")throw new Error('Invalid role "'+e+'". Expected "all", "master" or "slave"');return this.connectionPool.getNodes(e)}delayUntilReady(e){this._readyDelayedCallbacks.push(e)}get autoPipelineQueueSize(){let e=0;for(let t of this._autoPipelines.values())e+=t.length;return e}refreshSlotsCache(e){if(e&&this._refreshSlotsCacheCallbacks.push(e),this.isRefreshing)return;this.isRefreshing=!0;let t=this,n=o=>{this.isRefreshing=!1;for(let c of this._refreshSlotsCacheCallbacks)c(o);this._refreshSlotsCacheCallbacks=[]},i=(0,Bt.shuffle)(this.connectionPool.getNodes()),s=null;function a(o){if(o===i.length){let u=new qu.default(qu.default.defaultMessage,s);return n(u)}let c=i[o],l=`${c.options.host}:${c.options.port}`;Se("getting slot cache from %s",l),t.getInfoFromNode(c,function(u){switch(t.status){case"close":case"end":return n(new Error("Cluster is disconnected."));case"disconnecting":return n(new Error("Cluster is disconnecting."))}u?(t.emit("node error",u,l),s=u,a(o+1)):(t.emit("refresh"),n())})}a(0)}sendCommand(e,t,n){if(this.status==="wait"&&this.connect().catch(Bt.noop),this.status==="end")return e.reject(new Error(Bt.CONNECTION_CLOSED_ERROR_MSG)),e.promise;let i=this.options.scaleReads;i!=="master"&&(e.isReadOnly||(0,jO.exists)(e.name)&&(0,jO.hasFlag)(e.name,"readonly")||(i="master"));let s=n?n.slot:e.getSlot(),a={},o=this;if(!n&&!DO.has(e)){DO.add(e);let l=e.reject;e.reject=function(u){let d=c.bind(null,!0);o.handleError(u,a,{moved:function(p,f){Se("command %s is moved to %s",e.name,f),s=Number(p),o.slots[p]?o.slots[p][0]=f:o.slots[p]=[f],o._groupsBySlot[p]=o._groupsIds[o.slots[p].join(";")],o.connectionPool.findOrCreate(o.natMapper(f)),c(),Se("refreshing slot caches... (triggered by MOVED error)"),o.refreshSlotsCache()},ask:function(p,f){Se("command %s is required to ask %s:%s",e.name,f);let m=o.natMapper(f);o.connectionPool.findOrCreate(m),c(!1,`${m.host}:${m.port}`)},tryagain:d,clusterDown:d,connectionClosed:d,maxRedirections:function(p){l.call(e,p)},defaults:function(){l.call(e,u)}})}}c();function c(l,u){if(o.status==="end"){e.reject(new ia.AbortError("Cluster is ended."));return}let d;if(o.status==="ready"||e.name==="cluster"){if(n&&n.redis)d=n.redis;else if(RO.default.checkFlag("ENTER_SUBSCRIBER_MODE",e.name)||RO.default.checkFlag("EXIT_SUBSCRIBER_MODE",e.name)){if(o.options.shardedSubscribers&&(e.name=="ssubscribe"||e.name=="sunsubscribe")){let p=o.shardedSubscribers.getResponsibleSubscriber(s);if(!p){e.reject(new ia.AbortError(`No sharded subscriber for slot: ${s}`));return}let f=-1;e.name=="ssubscribe"&&(f=o.shardedSubscribers.addChannels(e.getKeys())),e.name=="sunsubscribe"&&(f=o.shardedSubscribers.removeChannels(e.getKeys())),f!==-1?d=p.getInstance():e.reject(new ia.AbortError("Possible CROSSSLOT error: All channels must hash to the same slot"))}else d=o.subscriber.getInstance();if(!d){e.reject(new ia.AbortError("No subscriber for the cluster"));return}}else{if(!l){if(typeof s=="number"&&o.slots[s]){let p=o.slots[s];if(typeof i=="function"){let f=p.map(function(m){return o.connectionPool.getInstanceByKey(m)});d=i(f,e),Array.isArray(d)&&(d=(0,Bt.sample)(d)),d||(d=f[0])}else{let f;i==="all"?f=(0,Bt.sample)(p):i==="slave"&&p.length>1?f=(0,Bt.sample)(p,1):f=p[0],d=o.connectionPool.getInstanceByKey(f)}}u&&(d=o.connectionPool.getInstanceByKey(u),d.asking())}d||(d=(typeof i=="function"?null:o.connectionPool.getSampleInstance(i))||o.connectionPool.getSampleInstance("all"))}n&&!n.redis&&(n.redis=d)}d?d.sendCommand(e,t):o.options.enableOfflineQueue?o.offlineQueue.push({command:e,stream:t,node:n}):e.reject(new Error("Cluster isn't ready and enableOfflineQueue options is false"))}return e.promise}sscanStream(e,t){return this.createScanStream("sscan",{key:e,options:t})}sscanBufferStream(e,t){return this.createScanStream("sscanBuffer",{key:e,options:t})}hscanStream(e,t){return this.createScanStream("hscan",{key:e,options:t})}hscanBufferStream(e,t){return this.createScanStream("hscanBuffer",{key:e,options:t})}zscanStream(e,t){return this.createScanStream("zscan",{key:e,options:t})}zscanBufferStream(e,t){return this.createScanStream("zscanBuffer",{key:e,options:t})}handleError(e,t,n){if(typeof t.value>"u"?t.value=this.options.maxRedirections:t.value-=1,t.value<=0){n.maxRedirections(new Error("Too many Cluster redirections. Last error: "+e));return}let i=e.message.split(" ");if(i[0]==="MOVED"){let s=this.options.retryDelayOnMoved;s&&typeof s=="number"?this.delayQueue.push("moved",n.moved.bind(null,i[1],i[2]),{timeout:s}):n.moved(i[1],i[2])}else i[0]==="ASK"?n.ask(i[1],i[2]):i[0]==="TRYAGAIN"?this.delayQueue.push("tryagain",n.tryagain,{timeout:this.options.retryDelayOnTryAgain}):i[0]==="CLUSTERDOWN"&&this.options.retryDelayOnClusterDown>0?this.delayQueue.push("clusterdown",n.connectionClosed,{timeout:this.options.retryDelayOnClusterDown,callback:this.refreshSlotsCache.bind(this)}):e.message===Bt.CONNECTION_CLOSED_ERROR_MSG&&this.options.retryDelayOnFailover>0&&this.status==="ready"?this.delayQueue.push("failover",n.connectionClosed,{timeout:this.options.retryDelayOnFailover,callback:this.refreshSlotsCache.bind(this)}):n.defaults()}resetOfflineQueue(){this.offlineQueue=new CO}clearNodesRefreshInterval(){this.slotsTimer&&(clearTimeout(this.slotsTimer),this.slotsTimer=null)}resetNodesRefreshInterval(){if(this.slotsTimer||!this.options.slotsRefreshInterval)return;let e=()=>{this.slotsTimer=setTimeout(()=>{Se('refreshing slot caches... (triggered by "slotsRefreshInterval" option)'),this.refreshSlotsCache(()=>{e()})},this.options.slotsRefreshInterval)};e()}setStatus(e){Se("status: %s -> %s",this.status||"[empty]",e),this.status=e,process.nextTick(()=>{this.emit(e)})}handleCloseEvent(e){var t;e&&Se("closed because %s",e);let n;!this.manuallyClosing&&typeof this.options.clusterRetryStrategy=="function"&&(n=this.options.clusterRetryStrategy.call(this,++this.retryAttempts,e)),typeof n=="number"?(this.setStatus("reconnecting"),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=null,Se("Cluster is disconnected. Retrying after %dms",n),this.connect().catch(function(i){Se("Got error %s when reconnecting. Ignoring...",i)})},n)):(this.options.shardedSubscribers&&((t=this.subscriberGroupEmitter)===null||t===void 0||t.removeAllListeners()),this.setStatus("end"),this.flushQueue(new Error("None of startup nodes is available")))}flushQueue(e){let t;for(;t=this.offlineQueue.shift();)t.command.reject(e)}executeOfflineCommands(){if(this.offlineQueue.length){Se("send %d commands in offline queue",this.offlineQueue.length);let e=this.offlineQueue;this.resetOfflineQueue();let t;for(;t=e.shift();)this.sendCommand(t.command,t.stream,t.node)}}natMapper(e){let t=typeof e=="string"?e:`${e.host}:${e.port}`,n=null;return this.options.natMap&&typeof this.options.natMap=="function"?n=this.options.natMap(t):this.options.natMap&&typeof this.options.natMap=="object"&&(n=this.options.natMap[t]),n?(Se("NAT mapping %s -> %O",t,n),Object.assign({},n)):typeof e=="string"?(0,sa.nodeKeyToRedisOptions)(e):e}getInfoFromNode(e,t){if(!e)return t(new Error("Node is disconnected"));let n=e.duplicate({enableOfflineQueue:!0,enableReadyCheck:!1,retryStrategy:null,connectionName:(0,sa.getConnectionName)("refresher",this.options.redisOptions&&this.options.redisOptions.connectionName)});n.on("error",Bt.noop),n.cluster("SLOTS",(0,Bt.timeout)((i,s)=>{if(n.disconnect(),i)return Se("error encountered running CLUSTER.SLOTS: %s",i),t(i);if(this.status==="disconnecting"||this.status==="close"||this.status==="end"){Se("ignore CLUSTER.SLOTS results (count: %d) since cluster status is %s",s.length,this.status),t();return}let a=[];Se("cluster slots result count: %d",s.length);for(let c=0;c<s.length;++c){let l=s[c],u=l[0],d=l[1],p=[];for(let f=2;f<l.length;f++){if(!l[f][0])continue;let m=this.natMapper({host:l[f][0],port:l[f][1]});m.readOnly=f!==2,a.push(m),p.push(m.host+":"+m.port)}Se("cluster slots result [%d]: slots %d~%d served by %s",c,u,d,p);for(let f=u;f<=d;f++)this.slots[f]=p}this._groupsIds=Object.create(null);let o=0;for(let c=0;c<16384;c++){let l=(this.slots[c]||[]).join(";");if(!l.length){this._groupsBySlot[c]=void 0;continue}this._groupsIds[l]||(this._groupsIds[l]=++o),this._groupsBySlot[c]=this._groupsIds[l]}this.connectionPool.reset(a),this.options.shardedSubscribers&&this.shardedSubscribers.reset(this.slots,this.connectionPool.getNodes("all")).catch(c=>{Se("Error while starting subscribers: %s",c)}),t()},this.options.slotsRefreshTimeout))}invokeReadyDelayedCallbacks(e){for(let t of this._readyDelayedCallbacks)process.nextTick(t,e);this._readyDelayedCallbacks=[]}readyCheck(e){this.cluster("INFO",(t,n)=>{if(t)return e(t);if(typeof n!="string")return e();let i,s=n.split(`\r
`);for(let a=0;a<s.length;++a){let o=s[a].split(":");if(o[0]==="cluster_state"){i=o[1];break}}i==="fail"?(Se("cluster state not ok (%s)",i),e(null,i)):e()})}resolveSrv(e){return new Promise((t,n)=>{this.options.resolveSrv(e,(i,s)=>{if(i)return n(i);let a=this,o=(0,sa.groupSrvRecords)(s),c=Object.keys(o).sort((u,d)=>parseInt(u)-parseInt(d));function l(u){if(!c.length)return n(u);let d=c[0],p=o[d],f=(0,sa.weightSrvRecords)(p);p.records.length||c.shift(),a.dnsLookup(f.name).then(m=>t({host:m,port:f.port}),l)}l()})})}dnsLookup(e){return new Promise((t,n)=>{this.options.dnsLookup(e,(i,s)=>{i?(Se("failed to resolve hostname %s to IP: %s",e,i.message),n(i)):(Se("resolved hostname %s to IP %s",e,s),t(s))})})}async resolveStartupNodeHostnames(){if(!Array.isArray(this.startupNodes)||this.startupNodes.length===0)throw new Error("`startupNodes` should contain at least one node.");let e=(0,sa.normalizeNodeOptions)(this.startupNodes),t=(0,sa.getUniqueHostnamesFromOptions)(e);if(t.length===0)return e;let n=await Promise.all(t.map((this.options.useSRVRecords?this.resolveSrv:this.dnsLookup).bind(this))),i=(0,Bt.zipMap)(t,n);return e.map(s=>{let a=i.get(s.host);return a?this.options.useSRVRecords?Object.assign({},s,a):Object.assign({},s,{host:a}):s})}createScanStream(e,{key:t,options:n={}}){return new rW.default({objectMode:!0,key:t,redis:this,command:e,...n})}createShardedSubscriberGroup(){this.subscriberGroupEmitter=new qg.EventEmitter,this.shardedSubscribers=new uW.default(this.subscriberGroupEmitter,this.options);let e=t=>{t instanceof qu.default&&this.disconnect(!0)};this.subscriberGroupEmitter.on("-node",(t,n)=>{this.emit("-node",t,n),this.refreshSlotsCache(e)}),this.subscriberGroupEmitter.on("subscriberConnectFailed",({delay:t,error:n})=>{this.emit("error",n),setTimeout(()=>{this.refreshSlotsCache(e)},t)}),this.subscriberGroupEmitter.on("moved",()=>{this.refreshSlotsCache(e)}),this.subscriberGroupEmitter.on("-subscriber",()=>{this.emit("-subscriber")}),this.subscriberGroupEmitter.on("+subscriber",()=>{this.emit("+subscriber")}),this.subscriberGroupEmitter.on("nodeError",(t,n)=>{this.emit("nodeError",t,n)}),this.subscriberGroupEmitter.on("subscribersReady",()=>{this.emit("subscribersReady")});for(let t of["smessage","smessageBuffer"])this.subscriberGroupEmitter.on(t,(n,i,s)=>{this.emit(t,n,i,s)})}};(0,iW.default)(Mo,qg.EventEmitter);(0,nW.addTransactionSupport)(Mo.prototype);Fg.default=Mo});var Fu=h(Gg=>{"use strict";Object.defineProperty(Gg,"__esModule",{value:!0});var dW=Ye(),pW=(0,dW.Debug)("AbstractConnector"),Ug=class{constructor(e){this.connecting=!1,this.disconnectTimeout=e}check(e){return!0}disconnect(){if(this.connecting=!1,this.stream){let e=this.stream,t=setTimeout(()=>{pW("stream %s:%s still open, destroying it",e.remoteAddress,e.remotePort),e.destroy()},this.disconnectTimeout);e.on("close",()=>clearTimeout(t)),e.end()}}};Gg.default=Ug});var PO=h($g=>{"use strict";Object.defineProperty($g,"__esModule",{value:!0});var fW=require("net"),mW=require("tls"),hW=Ye(),yW=Fu(),Bg=class extends yW.default{constructor(e){super(e.disconnectTimeout),this.options=e}connect(e){let{options:t}=this;this.connecting=!0;let n;return"path"in t&&t.path?n={path:t.path}:(n={},"port"in t&&t.port!=null&&(n.port=t.port),"host"in t&&t.host!=null&&(n.host=t.host),"family"in t&&t.family!=null&&(n.family=t.family)),t.tls&&Object.assign(n,t.tls),new Promise((i,s)=>{process.nextTick(()=>{if(!this.connecting){s(new Error(hW.CONNECTION_CLOSED_ERROR_MSG));return}try{t.tls?this.stream=(0,mW.connect)(n):this.stream=(0,fW.createConnection)(n)}catch(a){s(a);return}this.stream.once("error",a=>{this.firstError=a}),i(this.stream)})})}};$g.default=Bg});var MO=h(Hg=>{"use strict";Object.defineProperty(Hg,"__esModule",{value:!0});function bW(r,e){return(r.host||"127.0.0.1")===(e.host||"127.0.0.1")&&(r.port||26379)===(e.port||26379)}var Vg=class{constructor(e){this.cursor=0,this.sentinels=e.slice(0)}next(){let e=this.cursor>=this.sentinels.length;return{done:e,value:e?void 0:this.sentinels[this.cursor++]}}reset(e){e&&this.sentinels.length>1&&this.cursor!==1&&this.sentinels.unshift(...this.sentinels.splice(this.cursor-1)),this.cursor=0}add(e){for(let t=0;t<this.sentinels.length;t++)if(bW(e,this.sentinels[t]))return!1;return this.sentinels.push(e),!0}toString(){return`${JSON.stringify(this.sentinels)} @${this.cursor}`}};Hg.default=Vg});var NO=h(Ju=>{"use strict";Object.defineProperty(Ju,"__esModule",{value:!0});Ju.FailoverDetector=void 0;var gW=Ye(),zg=(0,gW.Debug)("FailoverDetector"),LO="+switch-master",Yg=class{constructor(e,t){this.isDisconnected=!1,this.connector=e,this.sentinels=t}cleanup(){this.isDisconnected=!0;for(let e of this.sentinels)e.client.disconnect()}async subscribe(){zg("Starting FailoverDetector");let e=[];for(let t of this.sentinels){let n=t.client.subscribe(LO).catch(i=>{zg("Failed to subscribe to failover messages on sentinel %s:%s (%s)",t.address.host||"127.0.0.1",t.address.port||26739,i.message)});e.push(n),t.client.on("message",i=>{!this.isDisconnected&&i===LO&&this.disconnect()})}await Promise.all(e)}disconnect(){this.isDisconnected=!0,zg("Failover detected, disconnecting"),this.connector.disconnect()}};Ju.FailoverDetector=Yg});var Uu=h(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.SentinelIterator=void 0;var vW=require("net"),Lo=Ye(),xW=require("tls"),qO=MO();No.SentinelIterator=qO.default;var EW=Fu(),SW=vn(),wW=NO(),aa=(0,Lo.Debug)("SentinelConnector"),Wg=class extends EW.default{constructor(e){if(super(e.disconnectTimeout),this.options=e,this.emitter=null,this.failoverDetector=null,!this.options.sentinels.length)throw new Error("Requires at least one sentinel to connect to.");if(!this.options.name)throw new Error("Requires the name of master.");this.sentinelIterator=new qO.default(this.options.sentinels)}check(e){let t=!e.role||this.options.role===e.role;return t||(aa("role invalid, expected %s, but got %s",this.options.role,e.role),this.sentinelIterator.next(),this.sentinelIterator.next(),this.sentinelIterator.reset(!0)),t}disconnect(){super.disconnect(),this.failoverDetector&&this.failoverDetector.cleanup()}connect(e){this.connecting=!0,this.retryAttempts=0;let t,n=async()=>{let i=this.sentinelIterator.next();if(i.done){this.sentinelIterator.reset(!1);let c=typeof this.options.sentinelRetryStrategy=="function"?this.options.sentinelRetryStrategy(++this.retryAttempts):null,l=typeof c!="number"?"All sentinels are unreachable and retry is disabled.":`All sentinels are unreachable. Retrying from scratch after ${c}ms.`;t&&(l+=` Last error: ${t.message}`),aa(l);let u=new Error(l);if(typeof c=="number")return e("error",u),await new Promise(d=>setTimeout(d,c)),n();throw u}let s=null,a=null;try{s=await this.resolve(i.value)}catch(c){a=c}if(!this.connecting)throw new Error(Lo.CONNECTION_CLOSED_ERROR_MSG);let o=i.value.host+":"+i.value.port;if(s)return aa("resolved: %s:%s from sentinel %s",s.host,s.port,o),this.options.enableTLSForSentinelMode&&this.options.tls?(Object.assign(s,this.options.tls),this.stream=(0,xW.connect)(s),this.stream.once("secureConnect",this.initFailoverDetector.bind(this))):(this.stream=(0,vW.createConnection)(s),this.stream.once("connect",this.initFailoverDetector.bind(this))),this.stream.once("error",c=>{this.firstError=c}),this.stream;{let c=a?"failed to connect to sentinel "+o+" because "+a.message:"connected to sentinel "+o+" successfully, but got an invalid reply: "+s;return aa(c),e("sentinelError",new Error(c)),a&&(t=a),n()}};return n()}async updateSentinels(e){if(!this.options.updateSentinels)return;let t=await e.sentinel("sentinels",this.options.name);Array.isArray(t)&&(t.map(Lo.packObject).forEach(n=>{if((n.flags?n.flags.split(","):[]).indexOf("disconnected")===-1&&n.ip&&n.port){let s=this.sentinelNatResolve(FO(n));this.sentinelIterator.add(s)&&aa("adding sentinel %s:%s",s.host,s.port)}}),aa("Updated internal sentinels: %s",this.sentinelIterator))}async resolveMaster(e){let t=await e.sentinel("get-master-addr-by-name",this.options.name);return await this.updateSentinels(e),this.sentinelNatResolve(Array.isArray(t)?{host:t[0],port:Number(t[1])}:null)}async resolveSlave(e){let t=await e.sentinel("slaves",this.options.name);if(!Array.isArray(t))return null;let n=t.map(Lo.packObject).filter(i=>i.flags&&!i.flags.match(/(disconnected|s_down|o_down)/));return this.sentinelNatResolve(IW(n,this.options.preferredSlaves))}sentinelNatResolve(e){if(!e||!this.options.natMap)return e;let t=`${e.host}:${e.port}`,n=e;return typeof this.options.natMap=="function"?n=this.options.natMap(t)||e:typeof this.options.natMap=="object"&&(n=this.options.natMap[t]||e),n}connectToSentinel(e,t){return new SW.default({port:e.port||26379,host:e.host,username:this.options.sentinelUsername||null,password:this.options.sentinelPassword||null,family:e.family||("path"in this.options&&this.options.path?void 0:this.options.family),tls:this.options.sentinelTLS,retryStrategy:null,enableReadyCheck:!1,connectTimeout:this.options.connectTimeout,commandTimeout:this.options.sentinelCommandTimeout,...t})}async resolve(e){let t=this.connectToSentinel(e);t.on("error",_W);try{return this.options.role==="slave"?await this.resolveSlave(t):await this.resolveMaster(t)}finally{t.disconnect()}}async initFailoverDetector(){var e;if(!this.options.failoverDetector)return;this.sentinelIterator.reset(!0);let t=[];for(;t.length<this.options.sentinelMaxConnections;){let{done:n,value:i}=this.sentinelIterator.next();if(n)break;let s=this.connectToSentinel(i,{lazyConnect:!0,retryStrategy:this.options.sentinelReconnectStrategy});s.on("reconnecting",()=>{var a;(a=this.emitter)===null||a===void 0||a.emit("sentinelReconnecting")}),t.push({address:i,client:s})}this.sentinelIterator.reset(!1),this.failoverDetector&&this.failoverDetector.cleanup(),this.failoverDetector=new wW.FailoverDetector(this,t),await this.failoverDetector.subscribe(),(e=this.emitter)===null||e===void 0||e.emit("failoverSubscribed")}};No.default=Wg;function IW(r,e){if(r.length===0)return null;let t;if(typeof e=="function")t=e(r);else if(e!==null&&typeof e=="object"){let n=Array.isArray(e)?e:[e];n.sort((i,s)=>(i.prio||(i.prio=1),s.prio||(s.prio=1),i.prio<s.prio?-1:i.prio>s.prio?1:0));for(let i=0;i<n.length;i++){for(let s=0;s<r.length;s++){let a=r[s];if(a.ip===n[i].ip&&a.port===n[i].port){t=a;break}}if(t)break}}return t||(t=(0,Lo.sample)(r)),FO(t)}function FO(r){return{host:r.ip,port:Number(r.port)}}function _W(){}});var JO=h(oa=>{"use strict";Object.defineProperty(oa,"__esModule",{value:!0});oa.SentinelConnector=oa.StandaloneConnector=void 0;var kW=PO();oa.StandaloneConnector=kW.default;var TW=Uu();oa.SentinelConnector=TW.default});var UO=h(Xg=>{"use strict";Object.defineProperty(Xg,"__esModule",{value:!0});var AW=Mi(),Qg=class extends AW.AbortError{constructor(e){let t=`Reached the max retries per request limit (which is ${e}). Refer to "maxRetriesPerRequest" option for details.`;super(t),Error.captureStackTrace(this,this.constructor)}get name(){return this.constructor.name}};Xg.default=Qg});var GO=h(Gu=>{"use strict";Object.defineProperty(Gu,"__esModule",{value:!0});Gu.MaxRetriesPerRequestError=void 0;var KW=UO();Gu.MaxRetriesPerRequestError=KW.default});var WO=h((Rfe,YO)=>{"use strict";var iv=require("buffer").Buffer,jW=require("string_decoder").StringDecoder,Zg=new jW,BO=Mi(),OW=BO.ReplyError,RW=BO.ParserError,Tr=iv.allocUnsafe(32*1024),At=0,Bu=null,qo=0,ev=0;function CW(r){let e=r.buffer.length-1;var t=r.offset,n=0,i=1;for(r.buffer[t]===45&&(i=-1,t++);t<e;){let s=r.buffer[t++];if(s===13)return r.offset=t+1,i*n;n=n*10+(s-48)}}function DW(r){let e=r.buffer.length-1;var t=r.offset,n=0,i="";for(r.buffer[t]===45&&(i+="-",t++);t<e;){var s=r.buffer[t++];if(s===13)return r.offset=t+1,n!==0&&(i+=n),i;n>429496728?(i+=n*10+(s-48),n=0):s===48&&n===0?i+=0:n=n*10+(s-48)}}function $O(r){let e=r.offset,t=r.buffer,n=t.length-1;for(var i=e;i<n;)if(t[i++]===13)return r.offset=i+1,r.optionReturnBuffers===!0?r.buffer.slice(e,i-1):r.buffer.toString("utf8",e,i-1)}function VO(r){let e=r.buffer.length-1;for(var t=r.offset,n=0;t<e;){let i=r.buffer[t++];if(i===13)return r.offset=t+1,n;n=n*10+(i-48)}}function PW(r){return r.optionStringNumbers===!0?DW(r):CW(r)}function MW(r){let e=VO(r);if(e===void 0)return;if(e<0)return null;let t=r.offset+e;if(t+2>r.buffer.length){r.bigStrSize=t+2,r.totalChunkSize=r.buffer.length,r.bufferCache.push(r.buffer);return}let n=r.offset;return r.offset=t+2,r.optionReturnBuffers===!0?r.buffer.slice(n,t):r.buffer.toString("utf8",n,t)}function LW(r){var e=$O(r);if(e!==void 0)return r.optionReturnBuffers===!0&&(e=e.toString()),new OW(e)}function NW(r,e){let t=new RW("Protocol error, got "+JSON.stringify(String.fromCharCode(e))+" as reply type byte",JSON.stringify(r.buffer),r.offset);r.buffer=null,r.returnFatalError(t)}function qW(r){let e=VO(r);if(e===void 0)return;if(e<0)return null;let t=new Array(e);return HO(r,t,0)}function tv(r,e,t){r.arrayCache.push(e),r.arrayPos.push(t)}function rv(r){let e=r.arrayCache.pop();var t=r.arrayPos.pop();if(r.arrayCache.length){let n=rv(r);if(n===void 0){tv(r,e,t);return}e[t++]=n}return HO(r,e,t)}function HO(r,e,t){let n=r.buffer.length;for(;t<e.length;){let i=r.offset;if(r.offset>=n){tv(r,e,t);return}let s=zO(r,r.buffer[r.offset++]);if(s===void 0){r.arrayCache.length||r.bufferCache.length||(r.offset=i),tv(r,e,t);return}e[t]=s,t++}return e}function zO(r,e){switch(e){case 36:return MW(r);case 43:return $O(r);case 42:return qW(r);case 58:return PW(r);case 45:return LW(r);default:return NW(r,e)}}function FW(){if(Tr.length>50*1024)if(qo===1||ev>qo*2){let r=Math.floor(Tr.length/10),e=r<At?At:r;At=0,Tr=Tr.slice(e,Tr.length)}else ev++,qo--;else clearInterval(Bu),qo=0,ev=0,Bu=null}function JW(r){if(Tr.length<r+At){let e=r>78643200?2:3;At>1024*1024*111&&(At=1024*1024*50),Tr=iv.allocUnsafe(r*e+At),At=0,qo++,Bu===null&&(Bu=setInterval(FW,50))}}function UW(r){let e=r.bufferCache,t=r.offset;var n=e.length,i=r.bigStrSize-r.totalChunkSize;if(r.offset=i,i<=2){if(n===2)return e[0].toString("utf8",t,e[0].length+i-2);n--,i=e[e.length-2].length+i}for(var s=Zg.write(e[0].slice(t)),a=1;a<n-1;a++)s+=Zg.write(e[a]);return s+=Zg.end(e[a].slice(0,i-2)),s}function GW(r){let e=r.bufferCache,t=r.offset,n=r.bigStrSize-t-2;var i=e.length,s=r.bigStrSize-r.totalChunkSize;if(r.offset=s,s<=2){if(i===2)return e[0].slice(t,e[0].length+s-2);i--,s=e[e.length-2].length+s}JW(n);let a=At;e[0].copy(Tr,a,t,e[0].length),At+=e[0].length-t;for(var o=1;o<i-1;o++)e[o].copy(Tr,At),At+=e[o].length;return e[o].copy(Tr,At,0,s-2),At+=s-2,Tr.slice(a,At)}var nv=class{constructor(e){if(!e)throw new TypeError("Options are mandatory.");if(typeof e.returnError!="function"||typeof e.returnReply!="function")throw new TypeError("The returnReply and returnError options have to be functions.");this.setReturnBuffers(!!e.returnBuffers),this.setStringNumbers(!!e.stringNumbers),this.returnError=e.returnError,this.returnFatalError=e.returnFatalError||e.returnError,this.returnReply=e.returnReply,this.reset()}reset(){this.offset=0,this.buffer=null,this.bigStrSize=0,this.totalChunkSize=0,this.bufferCache=[],this.arrayCache=[],this.arrayPos=[]}setReturnBuffers(e){if(typeof e!="boolean")throw new TypeError("The returnBuffers argument has to be a boolean");this.optionReturnBuffers=e}setStringNumbers(e){if(typeof e!="boolean")throw new TypeError("The stringNumbers argument has to be a boolean");this.optionStringNumbers=e}execute(e){if(this.buffer===null)this.buffer=e,this.offset=0;else if(this.bigStrSize===0){let n=this.buffer.length,i=n-this.offset,s=iv.allocUnsafe(i+e.length);if(this.buffer.copy(s,0,this.offset,n),e.copy(s,i,0,e.length),this.buffer=s,this.offset=0,this.arrayCache.length){let a=rv(this);if(a===void 0)return;this.returnReply(a)}}else if(this.totalChunkSize+e.length>=this.bigStrSize){this.bufferCache.push(e);var t=this.optionReturnBuffers?GW(this):UW(this);if(this.bigStrSize=0,this.bufferCache=[],this.buffer=e,this.arrayCache.length&&(this.arrayCache[0][this.arrayPos[0]++]=t,t=rv(this),t===void 0))return;this.returnReply(t)}else{this.bufferCache.push(e),this.totalChunkSize+=e.length;return}for(;this.offset<this.buffer.length;){let n=this.offset,i=this.buffer[this.offset++],s=zO(this,i);if(s===void 0){this.arrayCache.length||this.bufferCache.length||(this.offset=n);return}i===45?this.returnError(s):this.returnReply(s)}this.buffer=null}};YO.exports=nv});var XO=h((Cfe,QO)=>{"use strict";QO.exports=WO()});var ZO=h(ov=>{"use strict";Object.defineProperty(ov,"__esModule",{value:!0});var av=class{constructor(){this.set={subscribe:{},psubscribe:{},ssubscribe:{}}}add(e,t){this.set[sv(e)][t]=!0}del(e,t){delete this.set[sv(e)][t]}channels(e){return Object.keys(this.set[sv(e)])}isEmpty(){return this.channels("subscribe").length===0&&this.channels("psubscribe").length===0&&this.channels("ssubscribe").length===0}};ov.default=av;function sv(r){return r==="unsubscribe"?"subscribe":r==="punsubscribe"?"psubscribe":r==="sunsubscribe"?"ssubscribe":r}});var nR=h(lv=>{"use strict";Object.defineProperty(lv,"__esModule",{value:!0});var eR=bn(),BW=Ye(),$W=XO(),VW=ZO(),HW=(0,BW.Debug)("dataHandler"),cv=class{constructor(e,t){this.redis=e;let n=new $W({stringNumbers:t.stringNumbers,returnBuffers:!0,returnError:i=>{this.returnError(i)},returnFatalError:i=>{this.returnFatalError(i)},returnReply:i=>{this.returnReply(i)}});e.stream.prependListener("data",i=>{n.execute(i)}),e.stream.resume()}returnFatalError(e){e.message+=". Please report this.",this.redis.recoverFromFatalError(e,e,{offlineQueue:!1})}returnError(e){let t=this.shiftCommand(e);if(t){if(e.command={name:t.command.name,args:t.command.args},t.command.name=="ssubscribe"&&e.message.includes("MOVED")){this.redis.emit("moved");return}this.redis.handleReconnection(e,t)}}returnReply(e){if(this.handleMonitorReply(e)||this.handleSubscriberReply(e))return;let t=this.shiftCommand(e);t&&(eR.default.checkFlag("ENTER_SUBSCRIBER_MODE",t.command.name)?(this.redis.condition.subscriber=new VW.default,this.redis.condition.subscriber.add(t.command.name,e[1].toString()),tR(t.command,e[2])||this.redis.commandQueue.unshift(t)):eR.default.checkFlag("EXIT_SUBSCRIBER_MODE",t.command.name)?rR(t.command,e[2])||this.redis.commandQueue.unshift(t):t.command.resolve(e))}handleSubscriberReply(e){if(!this.redis.condition.subscriber)return!1;let t=Array.isArray(e)?e[0].toString():null;switch(HW('receive reply "%s" in subscriber mode',t),t){case"message":this.redis.listeners("message").length>0&&this.redis.emit("message",e[1].toString(),e[2]?e[2].toString():""),this.redis.emit("messageBuffer",e[1],e[2]);break;case"pmessage":{let n=e[1].toString();this.redis.listeners("pmessage").length>0&&this.redis.emit("pmessage",n,e[2].toString(),e[3].toString()),this.redis.emit("pmessageBuffer",n,e[2],e[3]);break}case"smessage":{this.redis.listeners("smessage").length>0&&this.redis.emit("smessage",e[1].toString(),e[2]?e[2].toString():""),this.redis.emit("smessageBuffer",e[1],e[2]);break}case"ssubscribe":case"subscribe":case"psubscribe":{let n=e[1].toString();this.redis.condition.subscriber.add(t,n);let i=this.shiftCommand(e);if(!i)return;tR(i.command,e[2])||this.redis.commandQueue.unshift(i);break}case"sunsubscribe":case"unsubscribe":case"punsubscribe":{let n=e[1]?e[1].toString():null;n&&this.redis.condition.subscriber.del(t,n);let i=e[2];Number(i)===0&&(this.redis.condition.subscriber=!1);let s=this.shiftCommand(e);if(!s)return;rR(s.command,i)||this.redis.commandQueue.unshift(s);break}default:{let n=this.shiftCommand(e);if(!n)return;n.command.resolve(e)}}return!0}handleMonitorReply(e){if(this.redis.status!=="monitoring")return!1;let t=e.toString();if(t==="OK")return!1;let n=t.indexOf(" "),i=t.slice(0,n),s=t.indexOf('"'),a=t.slice(s+1,-1).split('" "').map(c=>c.replace(/\\"/g,'"')),o=t.slice(n+2,s-2).split(" ");return this.redis.emit("monitor",i,a,o[1],o[0]),!0}shiftCommand(e){let t=this.redis.commandQueue.shift();if(!t){let n="Command queue state error. If you can reproduce this, please report it.",i=new Error(n+(e instanceof Error?` Last error: ${e.message}`:` Last reply: ${e.toString()}`));return this.redis.emit("error",i),null}return t}};lv.default=cv;var Xn=new WeakMap;function tR(r,e){let t=Xn.has(r)?Xn.get(r):r.args.length;return t-=1,t<=0?(r.resolve(e),Xn.delete(r),!0):(Xn.set(r,t),!1)}function rR(r,e){let t=Xn.has(r)?Xn.get(r):r.args.length;return t===0?Number(e)===0?(Xn.delete(r),r.resolve(e),!0):!1:(t-=1,t<=0?(r.resolve(e),!0):(Xn.set(r,t),!1))}});var iR=h(hr=>{"use strict";Object.defineProperty(hr,"__esModule",{value:!0});hr.readyHandler=hr.errorHandler=hr.closeHandler=hr.connectHandler=void 0;var zW=Mi(),YW=bn(),WW=GO(),Hr=Ye(),QW=nR(),ft=(0,Hr.Debug)("connection");function XW(r){return function(){var e;r.setStatus("connect"),r.resetCommandQueue();let t=!1,{connectionEpoch:n}=r;r.condition.auth&&r.auth(r.condition.auth,function(s){n===r.connectionEpoch&&s&&(s.message.indexOf("no password is set")!==-1?console.warn("[WARN] Redis server does not require a password, but a password was supplied."):s.message.indexOf("without any password configured for the default user")!==-1?console.warn("[WARN] This Redis server's `default` user does not require a password, but a password was supplied"):s.message.indexOf("wrong number of arguments for 'auth' command")!==-1?console.warn(`[ERROR] The server returned "wrong number of arguments for 'auth' command". You are probably passing both username and password to Redis version 5 or below. You should only pass the 'password' option for Redis version 5 and under.`):(t=!0,r.recoverFromFatalError(s,s)))}),r.condition.select&&r.select(r.condition.select).catch(s=>{r.silentEmit("error",s)}),new QW.default(r,{stringNumbers:r.options.stringNumbers});let i=[];r.options.connectionName&&(ft("set the connection name [%s]",r.options.connectionName),i.push(r.client("setname",r.options.connectionName).catch(Hr.noop))),r.options.disableClientInfo||(ft("set the client info"),i.push((0,Hr.getPackageMeta)().then(s=>r.client("SETINFO","LIB-VER",s.version).catch(Hr.noop)).catch(Hr.noop)),i.push(r.client("SETINFO","LIB-NAME",!((e=r.options)===null||e===void 0)&&e.clientInfoTag?`ioredis(${r.options.clientInfoTag})`:"ioredis").catch(Hr.noop))),Promise.all(i).catch(Hr.noop).finally(()=>{r.options.enableReadyCheck||hr.readyHandler(r)(),r.options.enableReadyCheck&&r._readyCheck(function(s,a){n===r.connectionEpoch&&(s?t||r.recoverFromFatalError(new Error("Ready check failed: "+s.message),s):r.connector.check(a)?hr.readyHandler(r)():r.disconnect(!0))})})}}hr.connectHandler=XW;function uv(r){let e=new zW.AbortError("Command aborted due to connection close");return e.command={name:r.name,args:r.args},e}function ZW(r){var e;let t=0;for(let n=0;n<r.length;){let i=(e=r.peekAt(n))===null||e===void 0?void 0:e.command,s=i.pipelineIndex;if((s===void 0||s===0)&&(t=0),s!==void 0&&s!==t++){r.remove(n,1),i.reject(uv(i));continue}n++}}function eQ(r){var e;for(let t=0;t<r.length;){let n=(e=r.peekAt(t))===null||e===void 0?void 0:e.command;if(n.name==="multi")break;if(n.name==="exec"){r.remove(t,1),n.reject(uv(n));break}n.inTransaction?(r.remove(t,1),n.reject(uv(n))):t++}}function tQ(r){return function(){let t=r.status;if(r.setStatus("close"),r.commandQueue.length&&ZW(r.commandQueue),r.offlineQueue.length&&eQ(r.offlineQueue),t==="ready"&&(r.prevCondition||(r.prevCondition=r.condition),r.commandQueue.length&&(r.prevCommandQueue=r.commandQueue)),r.manuallyClosing)return r.manuallyClosing=!1,ft("skip reconnecting since the connection is manually closed."),e();if(typeof r.options.retryStrategy!="function")return ft("skip reconnecting because `retryStrategy` is not a function"),e();let n=r.options.retryStrategy(++r.retryAttempts);if(typeof n!="number")return ft("skip reconnecting because `retryStrategy` doesn't return a number"),e();ft("reconnect in %sms",n),r.setStatus("reconnecting",n),r.reconnectTimeout=setTimeout(function(){r.reconnectTimeout=null,r.connect().catch(Hr.noop)},n);let{maxRetriesPerRequest:i}=r.options;typeof i=="number"&&(i<0?ft("maxRetriesPerRequest is negative, ignoring..."):r.retryAttempts%(i+1)===0&&(ft("reach maxRetriesPerRequest limitation, flushing command queue..."),r.flushQueue(new WW.MaxRetriesPerRequestError(i))))};function e(){r.setStatus("end"),r.flushQueue(new Error(Hr.CONNECTION_CLOSED_ERROR_MSG))}}hr.closeHandler=tQ;function rQ(r){return function(e){ft("error: %s",e),r.silentEmit("error",e)}}hr.errorHandler=rQ;function nQ(r){return function(){if(r.setStatus("ready"),r.retryAttempts=0,r.options.monitor){r.call("monitor").then(()=>r.setStatus("monitoring"),n=>r.emit("error",n));let{sendCommand:t}=r;r.sendCommand=function(n){return YW.default.checkFlag("VALID_IN_MONITOR_MODE",n.name)?t.call(r,n):(n.reject(new Error("Connection is in monitoring mode, can't process commands.")),n.promise)},r.once("close",function(){delete r.sendCommand});return}let e=r.prevCondition?r.prevCondition.select:r.condition.select;if(r.options.readOnly&&(ft("set the connection to readonly mode"),r.readonly().catch(Hr.noop)),r.prevCondition){let t=r.prevCondition;if(r.prevCondition=null,t.subscriber&&r.options.autoResubscribe){r.condition.select!==e&&(ft("connect to db [%d]",e),r.select(e));let n=t.subscriber.channels("subscribe");n.length&&(ft("subscribe %d channels",n.length),r.subscribe(n));let i=t.subscriber.channels("psubscribe");i.length&&(ft("psubscribe %d channels",i.length),r.psubscribe(i));let s=t.subscriber.channels("ssubscribe");if(s.length){ft("ssubscribe %s",s.length);for(let a of s)r.ssubscribe(a)}}}if(r.prevCommandQueue)if(r.options.autoResendUnfulfilledCommands)for(ft("resend %d unfulfilled commands",r.prevCommandQueue.length);r.prevCommandQueue.length>0;){let t=r.prevCommandQueue.shift();t.select!==r.condition.select&&t.command.name!=="select"&&r.select(t.select),r.sendCommand(t.command,t.stream)}else r.prevCommandQueue=null;if(r.offlineQueue.length){ft("send %d commands in offline queue",r.offlineQueue.length);let t=r.offlineQueue;for(r.resetOfflineQueue();t.length>0;){let n=t.shift();n.select!==r.condition.select&&n.command.name!=="select"&&r.select(n.select),r.sendCommand(n.command,n.stream)}}r.condition.select!==e&&(ft("connect to db [%d]",e),r.select(e))}}hr.readyHandler=nQ});var sR=h($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});$u.DEFAULT_REDIS_OPTIONS=void 0;$u.DEFAULT_REDIS_OPTIONS={port:6379,host:"localhost",family:0,connectTimeout:1e4,disconnectTimeout:2e3,retryStrategy:function(r){return Math.min(r*50,2e3)},keepAlive:0,noDelay:!0,connectionName:null,disableClientInfo:!1,clientInfoTag:void 0,sentinels:null,name:null,role:"master",sentinelRetryStrategy:function(r){return Math.min(r*10,1e3)},sentinelReconnectStrategy:function(){return 6e4},natMap:null,enableTLSForSentinelMode:!1,updateSentinels:!0,failoverDetector:!1,username:null,password:null,db:0,enableOfflineQueue:!0,enableReadyCheck:!0,autoResubscribe:!0,autoResendUnfulfilledCommands:!0,lazyConnect:!1,keyPrefix:"",reconnectOnError:null,readOnly:!1,stringNumbers:!1,maxRetriesPerRequest:20,maxLoadingRetryTime:1e4,enableAutoPipelining:!1,autoPipeliningIgnoredCommands:[],sentinelMaxConnections:10,blockingTimeoutGrace:100}});var vn=h(pv=>{"use strict";Object.defineProperty(pv,"__esModule",{value:!0});var aR=Pi(),cR=require("events"),dv=zn(),iQ=Jg(),Ni=bn(),sQ=JO(),aQ=Uu(),Zn=iR(),lR=sR(),oQ=Ou(),cQ=_g(),qi=Ye(),lQ=Tg(),uQ=Cu(),ei=Ku(),oR=Lu(),ti=(0,qi.Debug)("redis"),ri=class r extends uQ.default{constructor(e,t,n){if(super(),this.status="wait",this.isCluster=!1,this.reconnectTimeout=null,this.connectionEpoch=0,this.retryAttempts=0,this.manuallyClosing=!1,this._autoPipelines=new Map,this._runningAutoPipelines=new Set,this.parseOptions(e,t,n),cR.EventEmitter.call(this),this.resetCommandQueue(),this.resetOfflineQueue(),this.options.Connector)this.connector=new this.options.Connector(this.options);else if(this.options.sentinels){let i=new aQ.default(this.options);i.emitter=this,this.connector=i}else this.connector=new sQ.StandaloneConnector(this.options);this.options.scripts&&Object.entries(this.options.scripts).forEach(([i,s])=>{this.defineCommand(i,s)}),this.options.lazyConnect?this.setStatus("wait"):this.connect().catch(ei.noop)}static createClient(...e){return new r(...e)}get autoPipelineQueueSize(){let e=0;for(let t of this._autoPipelines.values())e+=t.length;return e}connect(e){let t=new Promise((n,i)=>{if(this.status==="connecting"||this.status==="connect"||this.status==="ready"){i(new Error("Redis is already connecting/connected"));return}this.connectionEpoch+=1,this.setStatus("connecting");let{options:s}=this;this.condition={select:s.db,auth:s.username?[s.username,s.password]:s.password,subscriber:!1};let a=this;(0,dv.default)(this.connector.connect(function(o,c){a.silentEmit(o,c)}),function(o,c){if(o){a.flushQueue(o),a.silentEmit("error",o),i(o),a.setStatus("end");return}let l=s.tls?"secureConnect":"connect";if("sentinels"in s&&s.sentinels&&!s.enableTLSForSentinelMode&&(l="connect"),a.stream=c,s.noDelay&&c.setNoDelay(!0),typeof s.keepAlive=="number"&&(c.connecting?c.once(l,()=>{c.setKeepAlive(!0,s.keepAlive)}):c.setKeepAlive(!0,s.keepAlive)),c.connecting){if(c.once(l,Zn.connectHandler(a)),s.connectTimeout){let p=!1;c.setTimeout(s.connectTimeout,function(){if(p)return;c.setTimeout(0),c.destroy();let f=new Error("connect ETIMEDOUT");f.errorno="ETIMEDOUT",f.code="ETIMEDOUT",f.syscall="connect",Zn.errorHandler(a)(f)}),c.once(l,function(){p=!0,c.setTimeout(0)})}}else if(c.destroyed){let p=a.connector.firstError;p&&process.nextTick(()=>{Zn.errorHandler(a)(p)}),process.nextTick(Zn.closeHandler(a))}else process.nextTick(Zn.connectHandler(a));c.destroyed||(c.once("error",Zn.errorHandler(a)),c.once("close",Zn.closeHandler(a)));let u=function(){a.removeListener("close",d),n()};var d=function(){a.removeListener("ready",u),i(new Error(qi.CONNECTION_CLOSED_ERROR_MSG))};a.once("ready",u),a.once("close",d)})});return(0,dv.default)(t,e)}disconnect(e=!1){e||(this.manuallyClosing=!0),this.reconnectTimeout&&!e&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.status==="wait"?Zn.closeHandler(this)():this.connector.disconnect()}end(){this.disconnect()}duplicate(e){return new r({...this.options,...e})}get mode(){var e;return this.options.monitor?"monitor":!((e=this.condition)===null||e===void 0)&&e.subscriber?"subscriber":"normal"}monitor(e){let t=this.duplicate({monitor:!0,lazyConnect:!1});return(0,dv.default)(new Promise(function(n,i){t.once("error",i),t.once("monitoring",function(){n(t)})}),e)}sendCommand(e,t){var n,i;if(this.status==="wait"&&this.connect().catch(ei.noop),this.status==="end")return e.reject(new Error(qi.CONNECTION_CLOSED_ERROR_MSG)),e.promise;if(!((n=this.condition)===null||n===void 0)&&n.subscriber&&!Ni.default.checkFlag("VALID_IN_SUBSCRIBER_MODE",e.name))return e.reject(new Error("Connection in subscriber mode, only subscriber commands may be used")),e.promise;typeof this.options.commandTimeout=="number"&&e.setTimeout(this.options.commandTimeout);let s=this.getBlockingTimeoutInMs(e),a=this.status==="ready"||!t&&this.status==="connect"&&(0,aR.exists)(e.name,{caseInsensitive:!0})&&((0,aR.hasFlag)(e.name,"loading",{nameCaseInsensitive:!0})||Ni.default.checkFlag("HANDSHAKE_COMMANDS",e.name));if(this.stream&&this.stream.writable?this.stream._writableState&&this.stream._writableState.ended&&(a=!1):a=!1,a)ti.enabled&&ti("write command[%s]: %d -> %s(%o)",this._getDescription(),(i=this.condition)===null||i===void 0?void 0:i.select,e.name,e.args),t?"isPipeline"in t&&t.isPipeline?t.write(e.toWritable(t.destination.redis.stream)):t.write(e.toWritable(t)):this.stream.write(e.toWritable(this.stream)),this.commandQueue.push({command:e,stream:t,select:this.condition.select}),s!==void 0&&e.setBlockingTimeout(s),Ni.default.checkFlag("WILL_DISCONNECT",e.name)&&(this.manuallyClosing=!0),this.options.socketTimeout!==void 0&&this.socketTimeoutTimer===void 0&&this.setSocketTimeout();else{if(!this.options.enableOfflineQueue)return e.reject(new Error("Stream isn't writeable and enableOfflineQueue options is false")),e.promise;if(e.name==="quit"&&this.offlineQueue.length===0)return this.disconnect(),e.resolve(Buffer.from("OK")),e.promise;if(ti.enabled&&ti("queue command[%s]: %d -> %s(%o)",this._getDescription(),this.condition.select,e.name,e.args),this.offlineQueue.push({command:e,stream:t,select:this.condition.select}),Ni.default.checkFlag("BLOCKING_COMMANDS",e.name)){let o=this.getConfiguredBlockingTimeout();o!==void 0&&e.setBlockingTimeout(o)}}if(e.name==="select"&&(0,qi.isInt)(e.args[0])){let o=parseInt(e.args[0],10);this.condition.select!==o&&(this.condition.select=o,this.emit("select",o),ti("switch to db [%d]",this.condition.select))}return e.promise}getBlockingTimeoutInMs(e){var t;if(!Ni.default.checkFlag("BLOCKING_COMMANDS",e.name))return;let n=this.getConfiguredBlockingTimeout();if(n===void 0)return;let i=e.extractBlockingTimeout();if(typeof i=="number")return i>0?i+((t=this.options.blockingTimeoutGrace)!==null&&t!==void 0?t:lR.DEFAULT_REDIS_OPTIONS.blockingTimeoutGrace):n;if(i===null)return n}getConfiguredBlockingTimeout(){if(typeof this.options.blockingTimeout=="number"&&this.options.blockingTimeout>0)return this.options.blockingTimeout}setSocketTimeout(){this.socketTimeoutTimer=setTimeout(()=>{this.stream.destroy(new Error(`Socket timeout. Expecting data, but didn't receive any in ${this.options.socketTimeout}ms.`)),this.socketTimeoutTimer=void 0},this.options.socketTimeout),this.stream.once("data",()=>{clearTimeout(this.socketTimeoutTimer),this.socketTimeoutTimer=void 0,this.commandQueue.length!==0&&this.setSocketTimeout()})}scanStream(e){return this.createScanStream("scan",{options:e})}scanBufferStream(e){return this.createScanStream("scanBuffer",{options:e})}sscanStream(e,t){return this.createScanStream("sscan",{key:e,options:t})}sscanBufferStream(e,t){return this.createScanStream("sscanBuffer",{key:e,options:t})}hscanStream(e,t){return this.createScanStream("hscan",{key:e,options:t})}hscanBufferStream(e,t){return this.createScanStream("hscanBuffer",{key:e,options:t})}zscanStream(e,t){return this.createScanStream("zscan",{key:e,options:t})}zscanBufferStream(e,t){return this.createScanStream("zscanBuffer",{key:e,options:t})}silentEmit(e,t){let n;if(!(e==="error"&&(n=t,this.status==="end"||this.manuallyClosing&&n instanceof Error&&(n.message===qi.CONNECTION_CLOSED_ERROR_MSG||n.syscall==="connect"||n.syscall==="read"))))return this.listeners(e).length>0?this.emit.apply(this,arguments):(n&&n instanceof Error&&console.error("[ioredis] Unhandled error event:",n.stack),!1)}recoverFromFatalError(e,t,n){this.flushQueue(t,n),this.silentEmit("error",t),this.disconnect(!0)}handleReconnection(e,t){var n;let i=!1;switch(this.options.reconnectOnError&&!Ni.default.checkFlag("IGNORE_RECONNECT_ON_ERROR",t.command.name)&&(i=this.options.reconnectOnError(e)),i){case 1:case!0:this.status!=="reconnecting"&&this.disconnect(!0),t.command.reject(e);break;case 2:this.status!=="reconnecting"&&this.disconnect(!0),((n=this.condition)===null||n===void 0?void 0:n.select)!==t.select&&t.command.name!=="select"&&this.select(t.select),this.sendCommand(t.command);break;default:t.command.reject(e)}}_getDescription(){let e;return"path"in this.options&&this.options.path?e=this.options.path:this.stream&&this.stream.remoteAddress&&this.stream.remotePort?e=this.stream.remoteAddress+":"+this.stream.remotePort:"host"in this.options&&this.options.host?e=this.options.host+":"+this.options.port:e="",this.options.connectionName&&(e+=` (${this.options.connectionName})`),e}resetCommandQueue(){this.commandQueue=new oR}resetOfflineQueue(){this.offlineQueue=new oR}parseOptions(...e){let t={},n=!1;for(let i=0;i<e.length;++i){let s=e[i];if(!(s===null||typeof s>"u"))if(typeof s=="object")(0,ei.defaults)(t,s);else if(typeof s=="string")(0,ei.defaults)(t,(0,qi.parseURL)(s)),s.startsWith("rediss://")&&(n=!0);else if(typeof s=="number")t.port=s;else throw new Error("Invalid argument "+s)}n&&(0,ei.defaults)(t,{tls:!0}),(0,ei.defaults)(t,r.defaultOptions),typeof t.port=="string"&&(t.port=parseInt(t.port,10)),typeof t.db=="string"&&(t.db=parseInt(t.db,10)),this.options=(0,qi.resolveTLSProfile)(t)}setStatus(e,t){ti.enabled&&ti("status[%s]: %s -> %s",this._getDescription(),this.status||"[empty]",e),this.status=e,process.nextTick(this.emit.bind(this,e,t))}createScanStream(e,{key:t,options:n={}}){return new oQ.default({objectMode:!0,key:t,redis:this,command:e,...n})}flushQueue(e,t){t=(0,ei.defaults)({},t,{offlineQueue:!0,commandQueue:!0});let n;if(t.offlineQueue)for(;n=this.offlineQueue.shift();)n.command.reject(e);if(t.commandQueue&&this.commandQueue.length>0)for(this.stream&&this.stream.removeAllListeners("data");n=this.commandQueue.shift();)n.command.reject(e)}_readyCheck(e){let t=this;this.info(function(n,i){if(n)return n.message&&n.message.includes("NOPERM")?(console.warn(`Skipping the ready check because INFO command fails: "${n.message}". You can disable ready check with "enableReadyCheck". More: https://github.com/luin/ioredis/wiki/Disable-ready-check.`),e(null,{})):e(n);if(typeof i!="string")return e(null,i);let s={},a=i.split(`\r
`);for(let o=0;o<a.length;++o){let[c,...l]=a[o].split(":"),u=l.join(":");u&&(s[c]=u)}if(!s.loading||s.loading==="0")e(null,s);else{let o=(s.loading_eta_seconds||1)*1e3,c=t.options.maxLoadingRetryTime&&t.options.maxLoadingRetryTime<o?t.options.maxLoadingRetryTime:o;ti("Redis server still loading, trying again in "+c+"ms"),setTimeout(function(){t._readyCheck(e)},c)}}).catch(ei.noop)}};ri.Cluster=iQ.default;ri.Command=Ni.default;ri.defaultOptions=lR.DEFAULT_REDIS_OPTIONS;(0,lQ.default)(ri,cR.EventEmitter);(0,cQ.addTransactionSupport)(ri.prototype);pv.default=ri});var fv=h((we,dR)=>{"use strict";Object.defineProperty(we,"__esModule",{value:!0});we.print=we.ReplyError=we.SentinelIterator=we.SentinelConnector=we.AbstractConnector=we.Pipeline=we.ScanStream=we.Command=we.Cluster=we.Redis=we.default=void 0;we=dR.exports=vn().default;var dQ=vn();Object.defineProperty(we,"default",{enumerable:!0,get:function(){return dQ.default}});var pQ=vn();Object.defineProperty(we,"Redis",{enumerable:!0,get:function(){return pQ.default}});var fQ=Jg();Object.defineProperty(we,"Cluster",{enumerable:!0,get:function(){return fQ.default}});var mQ=bn();Object.defineProperty(we,"Command",{enumerable:!0,get:function(){return mQ.default}});var hQ=Ou();Object.defineProperty(we,"ScanStream",{enumerable:!0,get:function(){return hQ.default}});var yQ=Sg();Object.defineProperty(we,"Pipeline",{enumerable:!0,get:function(){return yQ.default}});var bQ=Fu();Object.defineProperty(we,"AbstractConnector",{enumerable:!0,get:function(){return bQ.default}});var uR=Uu();Object.defineProperty(we,"SentinelConnector",{enumerable:!0,get:function(){return uR.default}});Object.defineProperty(we,"SentinelIterator",{enumerable:!0,get:function(){return uR.SentinelIterator}});we.ReplyError=Mi().ReplyError;Object.defineProperty(we,"Promise",{get(){return console.warn("ioredis v5 does not support plugging third-party Promise library anymore. Native Promise will be used."),Promise},set(r){console.warn("ioredis v5 does not support plugging third-party Promise library anymore. Native Promise will be used.")}});function gQ(r,e){console.log(r?"Error: "+r:"Reply: "+e)}we.print=gQ});var ca=h((qfe,pR)=>{"use strict";var vQ="2.0.0",xQ=Number.MAX_SAFE_INTEGER||9007199254740991,EQ=16,SQ=250,wQ=["major","premajor","minor","preminor","patch","prepatch","prerelease"];pR.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:EQ,MAX_SAFE_BUILD_LENGTH:SQ,MAX_SAFE_INTEGER:xQ,RELEASE_TYPES:wQ,SEMVER_SPEC_VERSION:vQ,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Fo=h((Ffe,fR)=>{"use strict";var IQ=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};fR.exports=IQ});var la=h((zr,mR)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:mv,MAX_SAFE_BUILD_LENGTH:_Q,MAX_LENGTH:kQ}=ca(),TQ=Fo();zr=mR.exports={};var AQ=zr.re=[],KQ=zr.safeRe=[],D=zr.src=[],jQ=zr.safeSrc=[],P=zr.t={},OQ=0,hv="[a-zA-Z0-9-]",RQ=[["\\s",1],["\\d",kQ],[hv,_Q]],CQ=r=>{for(let[e,t]of RQ)r=r.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return r},Y=(r,e,t)=>{let n=CQ(e),i=OQ++;TQ(r,i,e),P[r]=i,D[i]=e,jQ[i]=n,AQ[i]=new RegExp(e,t?"g":void 0),KQ[i]=new RegExp(n,t?"g":void 0)};Y("NUMERICIDENTIFIER","0|[1-9]\\d*");Y("NUMERICIDENTIFIERLOOSE","\\d+");Y("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${hv}*`);Y("MAINVERSION",`(${D[P.NUMERICIDENTIFIER]})\\.(${D[P.NUMERICIDENTIFIER]})\\.(${D[P.NUMERICIDENTIFIER]})`);Y("MAINVERSIONLOOSE",`(${D[P.NUMERICIDENTIFIERLOOSE]})\\.(${D[P.NUMERICIDENTIFIERLOOSE]})\\.(${D[P.NUMERICIDENTIFIERLOOSE]})`);Y("PRERELEASEIDENTIFIER",`(?:${D[P.NONNUMERICIDENTIFIER]}|${D[P.NUMERICIDENTIFIER]})`);Y("PRERELEASEIDENTIFIERLOOSE",`(?:${D[P.NONNUMERICIDENTIFIER]}|${D[P.NUMERICIDENTIFIERLOOSE]})`);Y("PRERELEASE",`(?:-(${D[P.PRERELEASEIDENTIFIER]}(?:\\.${D[P.PRERELEASEIDENTIFIER]})*))`);Y("PRERELEASELOOSE",`(?:-?(${D[P.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${D[P.PRERELEASEIDENTIFIERLOOSE]})*))`);Y("BUILDIDENTIFIER",`${hv}+`);Y("BUILD",`(?:\\+(${D[P.BUILDIDENTIFIER]}(?:\\.${D[P.BUILDIDENTIFIER]})*))`);Y("FULLPLAIN",`v?${D[P.MAINVERSION]}${D[P.PRERELEASE]}?${D[P.BUILD]}?`);Y("FULL",`^${D[P.FULLPLAIN]}$`);Y("LOOSEPLAIN",`[v=\\s]*${D[P.MAINVERSIONLOOSE]}${D[P.PRERELEASELOOSE]}?${D[P.BUILD]}?`);Y("LOOSE",`^${D[P.LOOSEPLAIN]}$`);Y("GTLT","((?:<|>)?=?)");Y("XRANGEIDENTIFIERLOOSE",`${D[P.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Y("XRANGEIDENTIFIER",`${D[P.NUMERICIDENTIFIER]}|x|X|\\*`);Y("XRANGEPLAIN",`[v=\\s]*(${D[P.XRANGEIDENTIFIER]})(?:\\.(${D[P.XRANGEIDENTIFIER]})(?:\\.(${D[P.XRANGEIDENTIFIER]})(?:${D[P.PRERELEASE]})?${D[P.BUILD]}?)?)?`);Y("XRANGEPLAINLOOSE",`[v=\\s]*(${D[P.XRANGEIDENTIFIERLOOSE]})(?:\\.(${D[P.XRANGEIDENTIFIERLOOSE]})(?:\\.(${D[P.XRANGEIDENTIFIERLOOSE]})(?:${D[P.PRERELEASELOOSE]})?${D[P.BUILD]}?)?)?`);Y("XRANGE",`^${D[P.GTLT]}\\s*${D[P.XRANGEPLAIN]}$`);Y("XRANGELOOSE",`^${D[P.GTLT]}\\s*${D[P.XRANGEPLAINLOOSE]}$`);Y("COERCEPLAIN",`(^|[^\\d])(\\d{1,${mv}})(?:\\.(\\d{1,${mv}}))?(?:\\.(\\d{1,${mv}}))?`);Y("COERCE",`${D[P.COERCEPLAIN]}(?:$|[^\\d])`);Y("COERCEFULL",D[P.COERCEPLAIN]+`(?:${D[P.PRERELEASE]})?(?:${D[P.BUILD]})?(?:$|[^\\d])`);Y("COERCERTL",D[P.COERCE],!0);Y("COERCERTLFULL",D[P.COERCEFULL],!0);Y("LONETILDE","(?:~>?)");Y("TILDETRIM",`(\\s*)${D[P.LONETILDE]}\\s+`,!0);zr.tildeTrimReplace="$1~";Y("TILDE",`^${D[P.LONETILDE]}${D[P.XRANGEPLAIN]}$`);Y("TILDELOOSE",`^${D[P.LONETILDE]}${D[P.XRANGEPLAINLOOSE]}$`);Y("LONECARET","(?:\\^)");Y("CARETTRIM",`(\\s*)${D[P.LONECARET]}\\s+`,!0);zr.caretTrimReplace="$1^";Y("CARET",`^${D[P.LONECARET]}${D[P.XRANGEPLAIN]}$`);Y("CARETLOOSE",`^${D[P.LONECARET]}${D[P.XRANGEPLAINLOOSE]}$`);Y("COMPARATORLOOSE",`^${D[P.GTLT]}\\s*(${D[P.LOOSEPLAIN]})$|^$`);Y("COMPARATOR",`^${D[P.GTLT]}\\s*(${D[P.FULLPLAIN]})$|^$`);Y("COMPARATORTRIM",`(\\s*)${D[P.GTLT]}\\s*(${D[P.LOOSEPLAIN]}|${D[P.XRANGEPLAIN]})`,!0);zr.comparatorTrimReplace="$1$2$3";Y("HYPHENRANGE",`^\\s*(${D[P.XRANGEPLAIN]})\\s+-\\s+(${D[P.XRANGEPLAIN]})\\s*$`);Y("HYPHENRANGELOOSE",`^\\s*(${D[P.XRANGEPLAINLOOSE]})\\s+-\\s+(${D[P.XRANGEPLAINLOOSE]})\\s*$`);Y("STAR","(<|>)?=?\\s*\\*");Y("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Y("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Vu=h((Jfe,hR)=>{"use strict";var DQ=Object.freeze({loose:!0}),PQ=Object.freeze({}),MQ=r=>r?typeof r!="object"?DQ:r:PQ;hR.exports=MQ});var yv=h((Ufe,gR)=>{"use strict";var yR=/^[0-9]+$/,bR=(r,e)=>{if(typeof r=="number"&&typeof e=="number")return r===e?0:r<e?-1:1;let t=yR.test(r),n=yR.test(e);return t&&n&&(r=+r,e=+e),r===e?0:t&&!n?-1:n&&!t?1:r<e?-1:1},LQ=(r,e)=>bR(e,r);gR.exports={compareIdentifiers:bR,rcompareIdentifiers:LQ}});var mt=h((Gfe,xR)=>{"use strict";var Hu=Fo(),{MAX_LENGTH:vR,MAX_SAFE_INTEGER:zu}=ca(),{safeRe:Yu,t:Wu}=la(),NQ=Vu(),{compareIdentifiers:bv}=yv(),gv=class r{constructor(e,t){if(t=NQ(t),e instanceof r){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>vR)throw new TypeError(`version is longer than ${vR} characters`);Hu("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let n=e.trim().match(t.loose?Yu[Wu.LOOSE]:Yu[Wu.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>zu||this.major<0)throw new TypeError("Invalid major version");if(this.minor>zu||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>zu||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&s<zu)return s}return i}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(Hu("SemVer.compare",this.version,this.options,e),!(e instanceof r)){if(typeof e=="string"&&e===this.version)return 0;e=new r(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof r||(e=new r(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof r||(e=new r(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let n=this.prerelease[t],i=e.prerelease[t];if(Hu("prerelease compare",t,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return bv(n,i)}while(++t)}compareBuild(e){e instanceof r||(e=new r(e,this.options));let t=0;do{let n=this.build[t],i=e.build[t];if(Hu("build compare",t,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return bv(n,i)}while(++t)}inc(e,t,n){if(e.startsWith("pre")){if(!t&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let i=`-${t}`.match(this.options.loose?Yu[Wu.PRERELEASELOOSE]:Yu[Wu.PRERELEASE]);if(!i||i[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,n),this.inc("pre",t,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,n),this.inc("pre",t,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(t===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(t){let s=[t,i];n===!1&&(s=[t]),bv(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};xR.exports=gv});var ni=h((Bfe,SR)=>{"use strict";var ER=mt(),qQ=(r,e,t=!1)=>{if(r instanceof ER)return r;try{return new ER(r,e)}catch(n){if(!t)return null;throw n}};SR.exports=qQ});var IR=h(($fe,wR)=>{"use strict";var FQ=ni(),JQ=(r,e)=>{let t=FQ(r,e);return t?t.version:null};wR.exports=JQ});var kR=h((Vfe,_R)=>{"use strict";var UQ=ni(),GQ=(r,e)=>{let t=UQ(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};_R.exports=GQ});var KR=h((Hfe,AR)=>{"use strict";var TR=mt(),BQ=(r,e,t,n,i)=>{typeof t=="string"&&(i=n,n=t,t=void 0);try{return new TR(r instanceof TR?r.version:r,t).inc(e,n,i).version}catch{return null}};AR.exports=BQ});var RR=h((zfe,OR)=>{"use strict";var jR=ni(),$Q=(r,e)=>{let t=jR(r,null,!0),n=jR(e,null,!0),i=t.compare(n);if(i===0)return null;let s=i>0,a=s?t:n,o=s?n:t,c=!!a.prerelease.length;if(!!o.prerelease.length&&!c){if(!o.patch&&!o.minor)return"major";if(o.compareMain(a)===0)return o.minor&&!o.patch?"minor":"patch"}let u=c?"pre":"";return t.major!==n.major?u+"major":t.minor!==n.minor?u+"minor":t.patch!==n.patch?u+"patch":"prerelease"};OR.exports=$Q});var DR=h((Yfe,CR)=>{"use strict";var VQ=mt(),HQ=(r,e)=>new VQ(r,e).major;CR.exports=HQ});var MR=h((Wfe,PR)=>{"use strict";var zQ=mt(),YQ=(r,e)=>new zQ(r,e).minor;PR.exports=YQ});var NR=h((Qfe,LR)=>{"use strict";var WQ=mt(),QQ=(r,e)=>new WQ(r,e).patch;LR.exports=QQ});var FR=h((Xfe,qR)=>{"use strict";var XQ=ni(),ZQ=(r,e)=>{let t=XQ(r,e);return t&&t.prerelease.length?t.prerelease:null};qR.exports=ZQ});var yr=h((Zfe,UR)=>{"use strict";var JR=mt(),eX=(r,e,t)=>new JR(r,t).compare(new JR(e,t));UR.exports=eX});var BR=h((eme,GR)=>{"use strict";var tX=yr(),rX=(r,e,t)=>tX(e,r,t);GR.exports=rX});var VR=h((tme,$R)=>{"use strict";var nX=yr(),iX=(r,e)=>nX(r,e,!0);$R.exports=iX});var Qu=h((rme,zR)=>{"use strict";var HR=mt(),sX=(r,e,t)=>{let n=new HR(r,t),i=new HR(e,t);return n.compare(i)||n.compareBuild(i)};zR.exports=sX});var WR=h((nme,YR)=>{"use strict";var aX=Qu(),oX=(r,e)=>r.sort((t,n)=>aX(t,n,e));YR.exports=oX});var XR=h((ime,QR)=>{"use strict";var cX=Qu(),lX=(r,e)=>r.sort((t,n)=>cX(n,t,e));QR.exports=lX});var Jo=h((sme,ZR)=>{"use strict";var uX=yr(),dX=(r,e,t)=>uX(r,e,t)>0;ZR.exports=dX});var Xu=h((ame,eC)=>{"use strict";var pX=yr(),fX=(r,e,t)=>pX(r,e,t)<0;eC.exports=fX});var vv=h((ome,tC)=>{"use strict";var mX=yr(),hX=(r,e,t)=>mX(r,e,t)===0;tC.exports=hX});var xv=h((cme,rC)=>{"use strict";var yX=yr(),bX=(r,e,t)=>yX(r,e,t)!==0;rC.exports=bX});var Zu=h((lme,nC)=>{"use strict";var gX=yr(),vX=(r,e,t)=>gX(r,e,t)>=0;nC.exports=vX});var ed=h((ume,iC)=>{"use strict";var xX=yr(),EX=(r,e,t)=>xX(r,e,t)<=0;iC.exports=EX});var Ev=h((dme,sC)=>{"use strict";var SX=vv(),wX=xv(),IX=Jo(),_X=Zu(),kX=Xu(),TX=ed(),AX=(r,e,t,n)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return SX(r,t,n);case"!=":return wX(r,t,n);case">":return IX(r,t,n);case">=":return _X(r,t,n);case"<":return kX(r,t,n);case"<=":return TX(r,t,n);default:throw new TypeError(`Invalid operator: ${e}`)}};sC.exports=AX});var oC=h((pme,aC)=>{"use strict";var KX=mt(),jX=ni(),{safeRe:td,t:rd}=la(),OX=(r,e)=>{if(r instanceof KX)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?td[rd.COERCEFULL]:td[rd.COERCE]);else{let c=e.includePrerelease?td[rd.COERCERTLFULL]:td[rd.COERCERTL],l;for(;(l=c.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||l.index+l[0].length!==t.index+t[0].length)&&(t=l),c.lastIndex=l.index+l[1].length+l[2].length;c.lastIndex=-1}if(t===null)return null;let n=t[2],i=t[3]||"0",s=t[4]||"0",a=e.includePrerelease&&t[5]?`-${t[5]}`:"",o=e.includePrerelease&&t[6]?`+${t[6]}`:"";return jX(`${n}.${i}.${s}${a}${o}`,e)};aC.exports=OX});var lC=h((fme,cC)=>{"use strict";var RX=ni(),CX=ca(),DX=mt(),PX=(r,e,t)=>{if(!CX.RELEASE_TYPES.includes(e))return null;let n=MX(r,t);return n&&LX(n,e)},MX=(r,e)=>{let t=r instanceof DX?r.version:r;return RX(t,e)},LX=(r,e)=>{if(NX(e))return r.version;switch(r.prerelease=[],e){case"major":r.minor=0,r.patch=0;break;case"minor":r.patch=0;break}return r.format()},NX=r=>r.startsWith("pre");cC.exports=PX});var dC=h((mme,uC)=>{"use strict";var Sv=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(e,t)}return this}};uC.exports=Sv});var br=h((hme,hC)=>{"use strict";var qX=/\s+/g,wv=class r{constructor(e,t){if(t=JX(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof Iv)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(qX," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!fC(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&zX(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let t=this.set[e];for(let n=0;n<t.length;n++)n>0&&(this.formatted+=" "),this.formatted+=t[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let n=((this.options.includePrerelease&&VX)|(this.options.loose&&HX))+":"+e,i=pC.get(n);if(i)return i;let s=this.options.loose,a=s?Kt[bt.HYPHENRANGELOOSE]:Kt[bt.HYPHENRANGE];e=e.replace(a,iZ(this.options.includePrerelease)),Ie("hyphen replace",e),e=e.replace(Kt[bt.COMPARATORTRIM],GX),Ie("comparator trim",e),e=e.replace(Kt[bt.TILDETRIM],BX),Ie("tilde trim",e),e=e.replace(Kt[bt.CARETTRIM],$X),Ie("caret trim",e);let o=e.split(" ").map(d=>YX(d,this.options)).join(" ").split(/\s+/).map(d=>nZ(d,this.options));s&&(o=o.filter(d=>(Ie("loose invalid filter",d,this.options),!!d.match(Kt[bt.COMPARATORLOOSE])))),Ie("range list",o);let c=new Map,l=o.map(d=>new Iv(d,this.options));for(let d of l){if(fC(d))return[d];c.set(d.value,d)}c.size>1&&c.has("")&&c.delete("");let u=[...c.values()];return pC.set(n,u),u}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some(n=>mC(n,t)&&e.set.some(i=>mC(i,t)&&n.every(s=>i.every(a=>s.intersects(a,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new UX(e,this.options)}catch{return!1}for(let t=0;t<this.set.length;t++)if(sZ(this.set[t],e,this.options))return!0;return!1}};hC.exports=wv;var FX=dC(),pC=new FX,JX=Vu(),Iv=Uo(),Ie=Fo(),UX=mt(),{safeRe:Kt,t:bt,comparatorTrimReplace:GX,tildeTrimReplace:BX,caretTrimReplace:$X}=la(),{FLAG_INCLUDE_PRERELEASE:VX,FLAG_LOOSE:HX}=ca(),fC=r=>r.value==="<0.0.0-0",zX=r=>r.value==="",mC=(r,e)=>{let t=!0,n=r.slice(),i=n.pop();for(;t&&n.length;)t=n.every(s=>i.intersects(s,e)),i=n.pop();return t},YX=(r,e)=>(r=r.replace(Kt[bt.BUILD],""),Ie("comp",r,e),r=XX(r,e),Ie("caret",r),r=WX(r,e),Ie("tildes",r),r=eZ(r,e),Ie("xrange",r),r=rZ(r,e),Ie("stars",r),r),jt=r=>!r||r.toLowerCase()==="x"||r==="*",WX=(r,e)=>r.trim().split(/\s+/).map(t=>QX(t,e)).join(" "),QX=(r,e)=>{let t=e.loose?Kt[bt.TILDELOOSE]:Kt[bt.TILDE];return r.replace(t,(n,i,s,a,o)=>{Ie("tilde",r,n,i,s,a,o);let c;return jt(i)?c="":jt(s)?c=`>=${i}.0.0 <${+i+1}.0.0-0`:jt(a)?c=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:o?(Ie("replaceTilde pr",o),c=`>=${i}.${s}.${a}-${o} <${i}.${+s+1}.0-0`):c=`>=${i}.${s}.${a} <${i}.${+s+1}.0-0`,Ie("tilde return",c),c})},XX=(r,e)=>r.trim().split(/\s+/).map(t=>ZX(t,e)).join(" "),ZX=(r,e)=>{Ie("caret",r,e);let t=e.loose?Kt[bt.CARETLOOSE]:Kt[bt.CARET],n=e.includePrerelease?"-0":"";return r.replace(t,(i,s,a,o,c)=>{Ie("caret",r,i,s,a,o,c);let l;return jt(s)?l="":jt(a)?l=`>=${s}.0.0${n} <${+s+1}.0.0-0`:jt(o)?s==="0"?l=`>=${s}.${a}.0${n} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.0${n} <${+s+1}.0.0-0`:c?(Ie("replaceCaret pr",c),s==="0"?a==="0"?l=`>=${s}.${a}.${o}-${c} <${s}.${a}.${+o+1}-0`:l=`>=${s}.${a}.${o}-${c} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.${o}-${c} <${+s+1}.0.0-0`):(Ie("no pr"),s==="0"?a==="0"?l=`>=${s}.${a}.${o}${n} <${s}.${a}.${+o+1}-0`:l=`>=${s}.${a}.${o}${n} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.${o} <${+s+1}.0.0-0`),Ie("caret return",l),l})},eZ=(r,e)=>(Ie("replaceXRanges",r,e),r.split(/\s+/).map(t=>tZ(t,e)).join(" ")),tZ=(r,e)=>{r=r.trim();let t=e.loose?Kt[bt.XRANGELOOSE]:Kt[bt.XRANGE];return r.replace(t,(n,i,s,a,o,c)=>{Ie("xRange",r,n,i,s,a,o,c);let l=jt(s),u=l||jt(a),d=u||jt(o),p=d;return i==="="&&p&&(i=""),c=e.includePrerelease?"-0":"",l?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&p?(u&&(a=0),o=0,i===">"?(i=">=",u?(s=+s+1,a=0,o=0):(a=+a+1,o=0)):i==="<="&&(i="<",u?s=+s+1:a=+a+1),i==="<"&&(c="-0"),n=`${i+s}.${a}.${o}${c}`):u?n=`>=${s}.0.0${c} <${+s+1}.0.0-0`:d&&(n=`>=${s}.${a}.0${c} <${s}.${+a+1}.0-0`),Ie("xRange return",n),n})},rZ=(r,e)=>(Ie("replaceStars",r,e),r.trim().replace(Kt[bt.STAR],"")),nZ=(r,e)=>(Ie("replaceGTE0",r,e),r.trim().replace(Kt[e.includePrerelease?bt.GTE0PRE:bt.GTE0],"")),iZ=r=>(e,t,n,i,s,a,o,c,l,u,d,p)=>(jt(n)?t="":jt(i)?t=`>=${n}.0.0${r?"-0":""}`:jt(s)?t=`>=${n}.${i}.0${r?"-0":""}`:a?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,jt(l)?c="":jt(u)?c=`<${+l+1}.0.0-0`:jt(d)?c=`<${l}.${+u+1}.0-0`:p?c=`<=${l}.${u}.${d}-${p}`:r?c=`<${l}.${u}.${+d+1}-0`:c=`<=${c}`,`${t} ${c}`.trim()),sZ=(r,e,t)=>{for(let n=0;n<r.length;n++)if(!r[n].test(e))return!1;if(e.prerelease.length&&!t.includePrerelease){for(let n=0;n<r.length;n++)if(Ie(r[n].semver),r[n].semver!==Iv.ANY&&r[n].semver.prerelease.length>0){let i=r[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Uo=h((yme,EC)=>{"use strict";var Go=Symbol("SemVer ANY"),Tv=class r{static get ANY(){return Go}constructor(e,t){if(t=yC(t),e instanceof r){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),kv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Go?this.value="":this.value=this.operator+this.semver.version,kv("comp",this)}parse(e){let t=this.options.loose?bC[gC.COMPARATORLOOSE]:bC[gC.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new vC(n[2],this.options.loose):this.semver=Go}toString(){return this.value}test(e){if(kv("Comparator.test",e,this.options.loose),this.semver===Go||e===Go)return!0;if(typeof e=="string")try{e=new vC(e,this.options)}catch{return!1}return _v(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new xC(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new xC(this.value,t).test(e.semver):(t=yC(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||_v(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||_v(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};EC.exports=Tv;var yC=Vu(),{safeRe:bC,t:gC}=la(),_v=Ev(),kv=Fo(),vC=mt(),xC=br()});var Bo=h((bme,SC)=>{"use strict";var aZ=br(),oZ=(r,e,t)=>{try{e=new aZ(e,t)}catch{return!1}return e.test(r)};SC.exports=oZ});var IC=h((gme,wC)=>{"use strict";var cZ=br(),lZ=(r,e)=>new cZ(r,e).set.map(t=>t.map(n=>n.value).join(" ").trim().split(" "));wC.exports=lZ});var kC=h((vme,_C)=>{"use strict";var uZ=mt(),dZ=br(),pZ=(r,e,t)=>{let n=null,i=null,s=null;try{s=new dZ(e,t)}catch{return null}return r.forEach(a=>{s.test(a)&&(!n||i.compare(a)===-1)&&(n=a,i=new uZ(n,t))}),n};_C.exports=pZ});var AC=h((xme,TC)=>{"use strict";var fZ=mt(),mZ=br(),hZ=(r,e,t)=>{let n=null,i=null,s=null;try{s=new mZ(e,t)}catch{return null}return r.forEach(a=>{s.test(a)&&(!n||i.compare(a)===1)&&(n=a,i=new fZ(n,t))}),n};TC.exports=hZ});var OC=h((Eme,jC)=>{"use strict";var Av=mt(),yZ=br(),KC=Jo(),bZ=(r,e)=>{r=new yZ(r,e);let t=new Av("0.0.0");if(r.test(t)||(t=new Av("0.0.0-0"),r.test(t)))return t;t=null;for(let n=0;n<r.set.length;++n){let i=r.set[n],s=null;i.forEach(a=>{let o=new Av(a.semver.version);switch(a.operator){case">":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!s||KC(o,s))&&(s=o);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${a.operator}`)}}),s&&(!t||KC(t,s))&&(t=s)}return t&&r.test(t)?t:null};jC.exports=bZ});var CC=h((Sme,RC)=>{"use strict";var gZ=br(),vZ=(r,e)=>{try{return new gZ(r,e).range||"*"}catch{return null}};RC.exports=vZ});var nd=h((wme,LC)=>{"use strict";var xZ=mt(),MC=Uo(),{ANY:EZ}=MC,SZ=br(),wZ=Bo(),DC=Jo(),PC=Xu(),IZ=ed(),_Z=Zu(),kZ=(r,e,t,n)=>{r=new xZ(r,n),e=new SZ(e,n);let i,s,a,o,c;switch(t){case">":i=DC,s=IZ,a=PC,o=">",c=">=";break;case"<":i=PC,s=_Z,a=DC,o="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(wZ(r,e,n))return!1;for(let l=0;l<e.set.length;++l){let u=e.set[l],d=null,p=null;if(u.forEach(f=>{f.semver===EZ&&(f=new MC(">=0.0.0")),d=d||f,p=p||f,i(f.semver,d.semver,n)?d=f:a(f.semver,p.semver,n)&&(p=f)}),d.operator===o||d.operator===c||(!p.operator||p.operator===o)&&s(r,p.semver))return!1;if(p.operator===c&&a(r,p.semver))return!1}return!0};LC.exports=kZ});var qC=h((Ime,NC)=>{"use strict";var TZ=nd(),AZ=(r,e,t)=>TZ(r,e,">",t);NC.exports=AZ});var JC=h((_me,FC)=>{"use strict";var KZ=nd(),jZ=(r,e,t)=>KZ(r,e,"<",t);FC.exports=jZ});var BC=h((kme,GC)=>{"use strict";var UC=br(),OZ=(r,e,t)=>(r=new UC(r,t),e=new UC(e,t),r.intersects(e,t));GC.exports=OZ});var VC=h((Tme,$C)=>{"use strict";var RZ=Bo(),CZ=yr();$C.exports=(r,e,t)=>{let n=[],i=null,s=null,a=r.sort((u,d)=>CZ(u,d,t));for(let u of a)RZ(u,e,t)?(s=u,i||(i=u)):(s&&n.push([i,s]),s=null,i=null);i&&n.push([i,null]);let o=[];for(let[u,d]of n)u===d?o.push(u):!d&&u===a[0]?o.push("*"):d?u===a[0]?o.push(`<=${d}`):o.push(`${u} - ${d}`):o.push(`>=${u}`);let c=o.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return c.length<l.length?c:e}});var XC=h((Ame,QC)=>{"use strict";var HC=br(),jv=Uo(),{ANY:Kv}=jv,$o=Bo(),Ov=yr(),DZ=(r,e,t={})=>{if(r===e)return!0;r=new HC(r,t),e=new HC(e,t);let n=!1;e:for(let i of r.set){for(let s of e.set){let a=MZ(i,s,t);if(n=n||a!==null,a)continue e}if(n)return!1}return!0},PZ=[new jv(">=0.0.0-0")],zC=[new jv(">=0.0.0")],MZ=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Kv){if(e.length===1&&e[0].semver===Kv)return!0;t.includePrerelease?r=PZ:r=zC}if(e.length===1&&e[0].semver===Kv){if(t.includePrerelease)return!0;e=zC}let n=new Set,i,s;for(let f of r)f.operator===">"||f.operator===">="?i=YC(i,f,t):f.operator==="<"||f.operator==="<="?s=WC(s,f,t):n.add(f.semver);if(n.size>1)return null;let a;if(i&&s){if(a=Ov(i.semver,s.semver,t),a>0)return null;if(a===0&&(i.operator!==">="||s.operator!=="<="))return null}for(let f of n){if(i&&!$o(f,String(i),t)||s&&!$o(f,String(s),t))return null;for(let m of e)if(!$o(f,String(m),t))return!1;return!0}let o,c,l,u,d=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,p=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let f of e){if(u=u||f.operator===">"||f.operator===">=",l=l||f.operator==="<"||f.operator==="<=",i){if(p&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===p.major&&f.semver.minor===p.minor&&f.semver.patch===p.patch&&(p=!1),f.operator===">"||f.operator===">="){if(o=YC(i,f,t),o===f&&o!==i)return!1}else if(i.operator===">="&&!$o(i.semver,String(f),t))return!1}if(s){if(d&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===d.major&&f.semver.minor===d.minor&&f.semver.patch===d.patch&&(d=!1),f.operator==="<"||f.operator==="<="){if(c=WC(s,f,t),c===f&&c!==s)return!1}else if(s.operator==="<="&&!$o(s.semver,String(f),t))return!1}if(!f.operator&&(s||i)&&a!==0)return!1}return!(i&&l&&!s&&a!==0||s&&u&&!i&&a!==0||p||d)},YC=(r,e,t)=>{if(!r)return e;let n=Ov(r.semver,e.semver,t);return n>0?r:n<0||e.operator===">"&&r.operator===">="?e:r},WC=(r,e,t)=>{if(!r)return e;let n=Ov(r.semver,e.semver,t);return n<0?r:n>0||e.operator==="<"&&r.operator==="<="?e:r};QC.exports=DZ});var rD=h((Kme,tD)=>{"use strict";var Rv=la(),ZC=ca(),LZ=mt(),eD=yv(),NZ=ni(),qZ=IR(),FZ=kR(),JZ=KR(),UZ=RR(),GZ=DR(),BZ=MR(),$Z=NR(),VZ=FR(),HZ=yr(),zZ=BR(),YZ=VR(),WZ=Qu(),QZ=WR(),XZ=XR(),ZZ=Jo(),eee=Xu(),tee=vv(),ree=xv(),nee=Zu(),iee=ed(),see=Ev(),aee=oC(),oee=lC(),cee=Uo(),lee=br(),uee=Bo(),dee=IC(),pee=kC(),fee=AC(),mee=OC(),hee=CC(),yee=nd(),bee=qC(),gee=JC(),vee=BC(),xee=VC(),Eee=XC();tD.exports={parse:NZ,valid:qZ,clean:FZ,inc:JZ,diff:UZ,major:GZ,minor:BZ,patch:$Z,prerelease:VZ,compare:HZ,rcompare:zZ,compareLoose:YZ,compareBuild:WZ,sort:QZ,rsort:XZ,gt:ZZ,lt:eee,eq:tee,neq:ree,gte:nee,lte:iee,cmp:see,coerce:aee,truncate:oee,Comparator:cee,Range:lee,satisfies:uee,toComparators:dee,maxSatisfying:pee,minSatisfying:fee,minVersion:mee,validRange:hee,outside:yee,gtr:bee,ltr:gee,intersects:vee,simplifyRange:xee,subset:Eee,SemVer:LZ,re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:ZC.SEMVER_SPEC_VERSION,RELEASE_TYPES:ZC.RELEASE_TYPES,compareIdentifiers:eD.compareIdentifiers,rcompareIdentifiers:eD.rcompareIdentifiers}});var $t=h(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.QUEUE_EVENT_SUFFIX=J.toString=J.errorToJSON=J.parseObjectValues=J.isRedisVersionLowerThan=J.childSend=J.asyncSend=J.DELAY_TIME_1=J.DELAY_TIME_5=J.clientCommandMessageReg=J.optsEncodeMap=J.optsDecodeMap=J.errorObject=void 0;J.tryCatch=Iee;J.lengthInUtf8Bytes=_ee;J.isEmpty=kee;J.array2obj=Tee;J.objectToFlatArray=Aee;J.delay=Kee;J.increaseMaxListeners=nD;J.invertObject=iD;J.isRedisInstance=sD;J.isRedisCluster=jee;J.decreaseMaxListeners=Oee;J.removeAllQueueData=Ree;J.getParentKey=Cee;J.isNotConnectionError=aD;J.removeUndefinedFields=Uee;J.trace=Gee;J.randomUUID=Bee;var See=fv(),Cv=require("crypto"),wee=Ye(),Dv=rD(),Pv=Mt();J.errorObject={value:null};function Iee(r,e,t){try{return r.apply(e,t)}catch(n){return J.errorObject.value=n,J.errorObject}}function _ee(r){return Buffer.byteLength(r,"utf8")}function kee(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function Tee(r){let e={};for(let t=0;t<r.length;t+=2)e[r[t]]=r[t+1];return e}function Aee(r){let e=[];for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&r[t]!==void 0&&(e[e.length]=t,e[e.length]=r[t]);return e}function Kee(r,e){return new Promise(t=>{let n,i=()=>{e?.signal.removeEventListener("abort",i),clearTimeout(n),t()};n=setTimeout(i,r),e?.signal.addEventListener("abort",i)})}function nD(r,e){let t=r.getMaxListeners();r.setMaxListeners(t+e)}function iD(r){return Object.entries(r).reduce((e,[t,n])=>(e[n]=t,e),{})}J.optsDecodeMap={de:"deduplication",fpof:"failParentOnFailure",cpof:"continueParentOnFailure",idof:"ignoreDependencyOnFailure",kl:"keepLogs",rdof:"removeDependencyOnFailure"};J.optsEncodeMap=Object.assign(Object.assign({},iD(J.optsDecodeMap)),{debounce:"de"});function sD(r){return r?["connect","disconnect","duplicate"].every(t=>typeof r[t]=="function"):!1}function jee(r){return sD(r)&&r.isCluster}function Oee(r,e){nD(r,-e)}async function Ree(r,e,t=process.env.BULLMQ_TEST_PREFIX||"bull"){if(r instanceof See.Cluster)return Promise.resolve(!1);let n=`${t}:${e}:*`,i=[];await new Promise((s,a)=>{let o=r.scanStream({match:n});o.on("data",c=>{if(c.length){let l=r.pipeline();c.forEach(d=>{l.del(d)});let u=l.exec().catch(d=>{throw a(d),d});i.push(u)}}),o.on("end",()=>s()),o.on("error",c=>a(c))}),await Promise.all(i);try{await r.quit()}catch(s){if(aD(s))throw s}}function Cee(r){if(r)return`${r.queue}:${r.id}`}J.clientCommandMessageReg=/ERR unknown command ['`]\s*client\s*['`]/;J.DELAY_TIME_5=5e3;J.DELAY_TIME_1=100;function aD(r){let{code:e,message:t}=r;return t!==wee.CONNECTION_CLOSED_ERROR_MSG&&!t.includes("ECONNREFUSED")&&e!=="ECONNREFUSED"}var Dee=(r,e)=>new Promise((t,n)=>{typeof r.send=="function"?r.send(e,i=>{i?n(i):t()}):typeof r.postMessage=="function"?t(r.postMessage(e)):t()});J.asyncSend=Dee;var Pee=(r,e)=>(0,J.asyncSend)(r,e);J.childSend=Pee;var Mee=(r,e,t,n="redis")=>{if(t===n){let i=Dv.valid(Dv.coerce(r));return Dv.lt(i,e)}return!1};J.isRedisVersionLowerThan=Mee;var Lee=r=>{let e={};for(let t of Object.entries(r))e[t[0]]=JSON.parse(t[1]);return e};J.parseObjectValues=Lee;var Nee=r=>{let e=new WeakSet;return e.add(r),(t,n)=>{if(typeof n=="object"&&n!==null){if(e.has(n))return"[Circular]";e.add(n)}return n}},qee=r=>{let e={};return Object.getOwnPropertyNames(r).forEach(function(t){e[t]=r[t]}),JSON.parse(JSON.stringify(e,Nee(r)))};J.errorToJSON=qee;var Fee=1/0,Jee=r=>{if(r==null)return"";if(typeof r=="string")return r;if(Array.isArray(r))return`${r.map(t=>t==null?t:(0,J.toString)(t))}`;if(typeof r=="symbol"||Object.prototype.toString.call(r)=="[object Symbol]")return r.toString();let e=`${r}`;return e==="0"&&1/r===-Fee?"-0":e};J.toString=Jee;J.QUEUE_EVENT_SUFFIX=":qe";function Uee(r){let e={};for(let t in r)r[t]!==void 0&&(e[t]=r[t]);return e}async function Gee(r,e,t,n,i,s,a){if(r){let{tracer:o,contextManager:c}=r,l=c.active(),u;a&&(u=c.fromMetadata(l,a));let d=i?`${n} ${i}`:n,p=o.startSpan(d,{kind:e},u);try{p.setAttributes({[Pv.TelemetryAttributes.QueueName]:t,[Pv.TelemetryAttributes.QueueOperation]:n});let f,m;return e===Pv.SpanKind.CONSUMER&&u?f=p.setSpanOnContext(u):f=p.setSpanOnContext(l),s.length==2&&(m=c.getMetadata(f)),await c.with(f,()=>s(p,m))}catch(f){throw p.recordException(f),f}finally{p.end()}}else return s()}function Bee(){if(typeof Cv.randomUUID=="function")return(0,Cv.randomUUID)();let r=(0,Cv.randomBytes)(16);return r[6]=r[6]&15|64,r[8]=r[8]&63|128,[r.toString("hex",0,4),r.toString("hex",4,6),r.toString("hex",6,8),r.toString("hex",8,10),r.toString("hex",10,16)].join("-")}});var oD=h(id=>{"use strict";Object.defineProperty(id,"__esModule",{value:!0});id.ChildProcessor=void 0;var $ee=_u(),Ot=Mt(),Mv=$t(),ii;(function(r){r[r.Idle=0]="Idle",r[r.Started=1]="Started",r[r.Terminating=2]="Terminating",r[r.Errored=3]="Errored"})(ii||(ii={}));var Vo=process.env.NODE_ENV==="test"?500:5e3,Lv=class{constructor(e,t){this.send=e,this.receiver=t}async init(e){let t;try{let{default:i}=await import(e);if(t=i,t.default&&(t=t.default),typeof t!="function")throw new Error("No function is exported in processor file")}catch(i){return this.status=ii.Errored,this.send({cmd:Ot.ParentCommand.InitFailed,err:(0,Mv.errorToJSON)(i)})}let n=t;t=function(i,s,a){try{return Promise.resolve(n(i,s,a))}catch(o){return Promise.reject(o)}},this.processor=t,this.status=ii.Idle,await this.send({cmd:Ot.ParentCommand.InitCompleted})}async start(e,t){if(this.status!==ii.Idle)return this.send({cmd:Ot.ParentCommand.Error,err:(0,Mv.errorToJSON)(new Error("cannot start a not idling child process"))});this.status=ii.Started,this.abortController=new $ee.AbortController,this.currentJobPromise=(async()=>{try{let n=this.wrapJob(e,this.send),i=await this.processor(n,t,this.abortController.signal);await this.send({cmd:Ot.ParentCommand.Completed,value:typeof i>"u"?null:i})}catch(n){await this.send({cmd:Ot.ParentCommand.Failed,value:(0,Mv.errorToJSON)(n.message?n:new Error(n))})}finally{this.status=ii.Idle,this.currentJobPromise=void 0,this.abortController=void 0}})()}cancel(e){this.abortController&&this.abortController.abort(e)}async stop(){}async waitForCurrentJobAndExit(){this.status=ii.Terminating;try{await this.currentJobPromise}finally{process.exit(process.exitCode||0)}}wrapJob(e,t){let n=Object.assign(Object.assign({},e),{queueQualifiedName:e.queueQualifiedName,data:JSON.parse(e.data||"{}"),opts:e.opts,returnValue:JSON.parse(e.returnvalue||"{}"),async updateProgress(i){this.progress=i,await t({cmd:Ot.ParentCommand.Progress,value:i})},log:async i=>{await t({cmd:Ot.ParentCommand.Log,value:i})},moveToDelayed:async(i,s)=>{await t({cmd:Ot.ParentCommand.MoveToDelayed,value:{timestamp:i,token:s}})},moveToWait:async i=>{await t({cmd:Ot.ParentCommand.MoveToWait,value:{token:i}})},moveToWaitingChildren:async(i,s)=>{let a=Math.random().toString(36).substring(2,15);return await t({requestId:a,cmd:Ot.ParentCommand.MoveToWaitingChildren,value:{token:i,opts:s}}),Ho(a,this.receiver,Vo,"moveToWaitingChildren")},updateData:async i=>{await t({cmd:Ot.ParentCommand.Update,value:i}),n.data=i},getChildrenValues:async()=>{let i=Math.random().toString(36).substring(2,15);return await t({requestId:i,cmd:Ot.ParentCommand.GetChildrenValues}),Ho(i,this.receiver,Vo,"getChildrenValues")},getIgnoredChildrenFailures:async()=>{let i=Math.random().toString(36).substring(2,15);return await t({requestId:i,cmd:Ot.ParentCommand.GetIgnoredChildrenFailures}),Ho(i,this.receiver,Vo,"getIgnoredChildrenFailures")},getDependenciesCount:async i=>{let s=Math.random().toString(36).substring(2,15);return await t({requestId:s,cmd:Ot.ParentCommand.GetDependenciesCount,value:i}),Ho(s,this.receiver,Vo,"getDependenciesCount")},getDependencies:async i=>{let s=Math.random().toString(36).substring(2,15);return await t({requestId:s,cmd:Ot.ParentCommand.GetDependencies,value:i}),Ho(s,this.receiver,Vo,"getDependencies")}});return n}};id.ChildProcessor=Lv;var Ho=async(r,e,t,n)=>new Promise((i,s)=>{let a=o=>{o.requestId===r&&(i(o.value),e.off("message",a))};e.on("message",a),setTimeout(()=>{e.off("message",a),s(new Error(`TimeoutError: ${n} timed out in (${t}ms)`))},t)})});var cD=h(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.DelayedError=Fi.DELAYED_ERROR=void 0;Fi.DELAYED_ERROR="bullmq:movedToDelayed";var Nv=class extends Error{constructor(e=Fi.DELAYED_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Fi.DelayedError=Nv});var lD=h(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.RateLimitError=Ji.RATE_LIMIT_ERROR=void 0;Ji.RATE_LIMIT_ERROR="bullmq:rateLimitExceeded";var qv=class extends Error{constructor(e=Ji.RATE_LIMIT_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Ji.RateLimitError=qv});var Jv=h(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.UnrecoverableError=Ui.UNRECOVERABLE_ERROR=void 0;Ui.UNRECOVERABLE_ERROR="bullmq:unrecoverable";var Fv=class extends Error{constructor(e=Ui.UNRECOVERABLE_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Ui.UnrecoverableError=Fv});var uD=h(Gi=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.WaitingChildrenError=Gi.WAITING_CHILDREN_ERROR=void 0;Gi.WAITING_CHILDREN_ERROR="bullmq:movedToWaitingChildren";var Uv=class extends Error{constructor(e=Gi.WAITING_CHILDREN_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Gi.WaitingChildrenError=Uv});var dD=h(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.WaitingError=Bi.WAITING_ERROR=void 0;Bi.WAITING_ERROR="bullmq:movedToWait";var Gv=class extends Error{constructor(e=Bi.WAITING_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Bi.WaitingError=Gv});var sd=h($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});var zo=(Tt(),ht(kt));zo.__exportStar(cD(),$i);zo.__exportStar(lD(),$i);zo.__exportStar(Jv(),$i);zo.__exportStar(uD(),$i);zo.__exportStar(dD(),$i)});var mD=h((Nme,fD)=>{"use strict";var pD=()=>process.platform==="linux",ad=null,Vee=()=>{if(!ad)if(pD()&&process.report){let r=process.report.excludeNetwork;process.report.excludeNetwork=!0,ad=process.report.getReport(),process.report.excludeNetwork=r}else ad={};return ad};fD.exports={isLinux:pD,getReport:Vee}});var yD=h((qme,hD)=>{"use strict";var ua=require("fs"),Hee="/usr/bin/ldd",zee="/proc/self/exe",od=2048,Yee=r=>{let e=ua.openSync(r,"r"),t=Buffer.alloc(od),n=ua.readSync(e,t,0,od,0);return ua.close(e,()=>{}),t.subarray(0,n)},Wee=r=>new Promise((e,t)=>{ua.open(r,"r",(n,i)=>{if(n)t(n);else{let s=Buffer.alloc(od);ua.read(i,s,0,od,0,(a,o)=>{e(s.subarray(0,o)),ua.close(i,()=>{})})}})});hD.exports={LDD_PATH:Hee,SELF_PATH:zee,readFileSync:Yee,readFile:Wee}});var gD=h((Fme,bD)=>{"use strict";var Qee=r=>{if(r.length<64||r.readUInt32BE(0)!==2135247942||r.readUInt8(4)!==2||r.readUInt8(5)!==1)return null;let e=r.readUInt32LE(32),t=r.readUInt16LE(54),n=r.readUInt16LE(56);for(let i=0;i<n;i++){let s=e+i*t;if(r.readUInt32LE(s)===3){let o=r.readUInt32LE(s+8),c=r.readUInt32LE(s+32);return r.subarray(o,o+c).toString().replace(/\0.*$/g,"")}}return null};bD.exports={interpreterPath:Qee}});var LD=h((Jme,MD)=>{"use strict";var xD=require("child_process"),{isLinux:da,getReport:ED}=mD(),{LDD_PATH:cd,SELF_PATH:SD,readFile:Bv,readFileSync:$v}=yD(),{interpreterPath:wD}=gD(),Yr,Wr,Qr,ID="getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true",si="",_D=()=>si||new Promise(r=>{xD.exec(ID,(e,t)=>{si=e?" ":t,r(si)})}),kD=()=>{if(!si)try{si=xD.execSync(ID,{encoding:"utf8"})}catch{si=" "}return si},xn="glibc",TD=/LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i,Vi="musl",Xee=r=>r.includes("libc.musl-")||r.includes("ld-musl-"),AD=()=>{let r=ED();return r.header&&r.header.glibcVersionRuntime?xn:Array.isArray(r.sharedObjects)&&r.sharedObjects.some(Xee)?Vi:null},KD=r=>{let[e,t]=r.split(/[\r\n]+/);return e&&e.includes(xn)?xn:t&&t.includes(Vi)?Vi:null},jD=r=>{if(r){if(r.includes("/ld-musl-"))return Vi;if(r.includes("/ld-linux-"))return xn}return null},OD=r=>(r=r.toString(),r.includes("musl")?Vi:r.includes("GNU C Library")?xn:null),Zee=async()=>{if(Wr!==void 0)return Wr;Wr=null;try{let r=await Bv(cd);Wr=OD(r)}catch{}return Wr},ete=()=>{if(Wr!==void 0)return Wr;Wr=null;try{let r=$v(cd);Wr=OD(r)}catch{}return Wr},tte=async()=>{if(Yr!==void 0)return Yr;Yr=null;try{let r=await Bv(SD),e=wD(r);Yr=jD(e)}catch{}return Yr},rte=()=>{if(Yr!==void 0)return Yr;Yr=null;try{let r=$v(SD),e=wD(r);Yr=jD(e)}catch{}return Yr},RD=async()=>{let r=null;if(da()&&(r=await tte(),!r&&(r=await Zee(),r||(r=AD()),!r))){let e=await _D();r=KD(e)}return r},CD=()=>{let r=null;if(da()&&(r=rte(),!r&&(r=ete(),r||(r=AD()),!r))){let e=kD();r=KD(e)}return r},nte=async()=>da()&&await RD()!==xn,ite=()=>da()&&CD()!==xn,ste=async()=>{if(Qr!==void 0)return Qr;Qr=null;try{let e=(await Bv(cd)).match(TD);e&&(Qr=e[1])}catch{}return Qr},ate=()=>{if(Qr!==void 0)return Qr;Qr=null;try{let e=$v(cd).match(TD);e&&(Qr=e[1])}catch{}return Qr},DD=()=>{let r=ED();return r.header&&r.header.glibcVersionRuntime?r.header.glibcVersionRuntime:null},vD=r=>r.trim().split(/\s+/)[1],PD=r=>{let[e,t,n]=r.split(/[\r\n]+/);return e&&e.includes(xn)?vD(e):t&&n&&t.includes(Vi)?vD(n):null},ote=async()=>{let r=null;if(da()&&(r=await ste(),r||(r=DD()),!r)){let e=await _D();r=PD(e)}return r},cte=()=>{let r=null;if(da()&&(r=ate(),r||(r=DD()),!r)){let e=kD();r=PD(e)}return r};MD.exports={GLIBC:xn,MUSL:Vi,family:RD,familySync:CD,isNonGlibcLinux:nte,isNonGlibcLinuxSync:ite,version:ote,versionSync:cte}});var QD=h((Ume,WD)=>{var lte=require("fs"),Ar=require("path"),ute=require("url"),FD=require("os"),JD=typeof __webpack_require__=="function"?__non_webpack_require__:require,dte=process.config&&process.config.variables||{},pte=!!process.env.PREBUILDS_ONLY,Wv=process.versions,Hv=Wv.modules;(Wv.deno||process.isBun)&&(Hv="unsupported");var Vv=hte()?"electron":mte()?"node-webkit":"node",ld=process.env.npm_config_arch||FD.arch(),ud=process.env.npm_config_platform||FD.platform(),UD=process.env.LIBC||(yte(ud)?"musl":"glibc"),zv=process.env.ARM_VERSION||(ld==="arm64"?"8":dte.arm_version)||"",GD=(Wv.uv||"").split(".")[0];WD.exports=Xr;function Xr(r){return JD(Xr.resolve(r))}Xr.resolve=Xr.path=function(r){r=Ar.resolve(r||".");var e="",t;try{e=JD(Ar.join(r,"package.json")).name;var n=e.toUpperCase().replace(/-/g,"_");process.env[n+"_PREBUILD"]&&(r=process.env[n+"_PREBUILD"])}catch(y){t=y}if(!pte){var i=ND(Ar.join(r,"build/Release"),qD);if(i)return i;var s=ND(Ar.join(r,"build/Debug"),qD);if(s)return s}var a=f(r);if(a)return a;var o=f(Ar.dirname(process.execPath));if(o)return o;var c=(e[0]=="@"?"":"@"+e+"/")+e+"-"+ud+"-"+ld,l;try{var u=Ar.dirname(require("module").createRequire(ute.pathToFileURL(Ar.join(r,"package.json"))).resolve(c));return m(u)}catch(y){l=y}var d=["platform="+ud,"arch="+ld,"runtime="+Vv,"abi="+Hv,"uv="+GD,zv?"armv="+zv:"","libc="+UD,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");let p="No native build was found for "+d+`
attempted loading from: `+r+" and package: "+c+`
`;throw t&&(p+="Error finding package.json: "+t.message+`
`),l&&(p+="Error resolving package: "+l.message+`
`),new Error(p);function f(y){var b=Yv(Ar.join(y,"prebuilds")).map(BD),g=b.filter($D(ud,ld)).sort(VD)[0];if(g)return m(Ar.join(y,"prebuilds",g.name))}function m(y){var b=Yv(y).map(HD),g=b.filter(zD(Vv,Hv)),x=g.sort(YD(Vv))[0];if(x)return Ar.join(y,x.file)}};function Yv(r){try{return lte.readdirSync(r)}catch{return[]}}function ND(r,e){var t=Yv(r).filter(e);return t[0]&&Ar.join(r,t[0])}function qD(r){return/\.node$/.test(r)}function BD(r){var e=r.split("-");if(e.length===2){var t=e[0],n=e[1].split("+");if(t&&n.length&&n.every(Boolean))return{name:r,platform:t,architectures:n}}}function $D(r,e){return function(t){return t==null||t.platform!==r?!1:t.architectures.includes(e)}}function VD(r,e){return r.architectures.length-e.architectures.length}function HD(r){var e=r.split("."),t=e.pop(),n={file:r,specificity:0};if(t==="node"){for(var i=0;i<e.length;i++){var s=e[i];if(s==="node"||s==="electron"||s==="node-webkit")n.runtime=s;else if(s==="napi")n.napi=!0;else if(s.slice(0,3)==="abi")n.abi=s.slice(3);else if(s.slice(0,2)==="uv")n.uv=s.slice(2);else if(s.slice(0,4)==="armv")n.armv=s.slice(4);else if(s==="glibc"||s==="musl")n.libc=s;else continue;n.specificity++}return n}}function zD(r,e){return function(t){return!(t==null||t.runtime!==r&&!fte(t)||t.abi!==e&&!t.napi||t.uv&&t.uv!==GD||t.armv&&t.armv!==zv||t.libc&&t.libc!==UD)}}function fte(r){return r.runtime==="node"&&r.napi}function YD(r){return function(e,t){return e.runtime!==t.runtime?e.runtime===r?-1:1:e.abi!==t.abi?e.abi?-1:1:e.specificity!==t.specificity?e.specificity>t.specificity?-1:1:0}}function mte(){return!!(process.versions&&process.versions.nw)}function hte(){return process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE?!0:typeof window<"u"&&window.process&&window.process.type==="renderer"}function yte(r){if(r!=="linux")return!1;let{familySync:e,MUSL:t}=LD();return e()===t}Xr.parseTags=HD;Xr.matchTags=zD;Xr.compareTags=YD;Xr.parseTuple=BD;Xr.matchTuple=$D;Xr.compareTuples=VD});var XD=h((Gme,Xv)=>{var Qv=typeof __webpack_require__=="function"?__non_webpack_require__:require;typeof Qv.addon=="function"?Xv.exports=Qv.addon.bind(Qv):Xv.exports=QD()});var eP=h((Bme,ZD)=>{ZD.exports=XD()(__dirname)});var RP=h(ue=>{"use strict";var hP=require("stream"),bte=require("module"),r0;try{r0=new TextDecoder}catch{}var O,Ht,v=0,n0=[],zi=n0,Wo=0,pe={},oe,En,Vt=0,gr=0,Ze,Sn,vt=[],ne,tP={useRecords:!1,mapsAsObjects:!0},md=class{},i0=new md;i0.name="MessagePack 0xC1";var ai=!1,rP=2,wn=class r{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.sequential&&e.trusted!==!1&&(e.trusted=!0,!e.structures&&e.useRecords!=!1&&(e.structures=[],e.maxSharedStructures||(e.maxSharedStructures=0))),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0),e.int64AsNumber&&(e.int64AsType="number")),Object.assign(this,e)}unpack(e,t){if(O)return IP(()=>(yd(),this?this.unpack(e,t):r.prototype.unpack.call(tP,e,t)));!e.buffer&&e.constructor===ArrayBuffer&&(e=typeof Buffer<"u"?Buffer.from(e):new Uint8Array(e)),typeof t=="object"?(Ht=t.end||e.length,v=t.start||0):(v=0,Ht=t>-1?t:e.length),Wo=0,gr=0,En=null,zi=n0,Ze=null,O=e;try{ne=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(n){throw O=null,e instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof r){if(pe=this,this.structures)return oe=this.structures,dd(t);(!oe||oe.length>0)&&(oe=[])}else pe=tP,(!oe||oe.length>0)&&(oe=[]);return dd(t)}unpackMultiple(e,t){let n,i=0;try{ai=!0;let s=e.length,a=this?this.unpack(e,s):Sd.unpack(e,s);if(t){if(t(a,i,v)===!1)return;for(;v<s;)if(i=v,t(dd(),i,v)===!1)return}else{for(n=[a];v<s;)i=v,n.push(dd());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{ai=!1,yd()}}_mergeStructures(e,t){this._onLoadedStructures&&(e=this._onLoadedStructures(e)),e=e||[],Object.isFrozen(e)&&(e=e.map(n=>n.slice(0)));for(let n=0,i=e.length;n<i;n++){let s=e[n];s&&(s.isShared=!0,n>=32&&(s.highByte=n-32>>5))}e.sharedLength=e.length;for(let n in t||[])if(n>=0){let i=e[n],s=t[n];s&&(i&&((e.restoreStructures||(e.restoreStructures=[]))[n]=i),e[n]=s)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function dd(r){try{if(!pe.trusted&&!ai){let t=oe.sharedLength||0;t<oe.length&&(oe.length=t)}let e;if(pe._readStruct&&O[v]<64&&O[v]>=32?(e=pe._readStruct(O,v,Ht),O=null,!(r&&r.lazy)&&e&&(e=e.toJSON()),v=Ht):e=Ve(),Ze&&(v=Ze.postBundlePosition,Ze=null),ai&&(oe.restoreStructures=null),v==Ht)oe&&oe.restoreStructures&&nP(),oe=null,O=null,Sn&&(Sn=null);else{if(v>Ht)throw new Error("Unexpected end of MessagePack data");if(!ai){let t;try{t=JSON.stringify(e,(n,i)=>typeof i=="bigint"?`${i}n`:i).slice(0,100)}catch(n){t="(JSON view not available "+n+")"}throw new Error("Data read, but end of buffer not reached "+t)}}return e}catch(e){throw oe&&oe.restoreStructures&&nP(),yd(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer")||v>Ht)&&(e.incomplete=!0),e}}function nP(){for(let r in oe.restoreStructures)oe[r]=oe.restoreStructures[r];oe.restoreStructures=null}function Ve(){let r=O[v++];if(r<160)if(r<128){if(r<64)return r;{let e=oe[r&63]||pe.getStructures&&yP()[r&63];return e?(e.read||(e.read=s0(e,r&63)),e.read()):r}}else if(r<144)if(r-=128,pe.mapsAsObjects){let e={};for(let t=0;t<r;t++){let n=EP();n==="__proto__"&&(n="__proto_"),e[n]=Ve()}return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Ve(),Ve());return e}else{r-=144;let e=new Array(r);for(let t=0;t<r;t++)e[t]=Ve();return pe.freezeData?Object.freeze(e):e}else if(r<192){let e=r-160;if(gr>=v)return En.slice(v-Vt,(v+=e)-Vt);if(gr==0&&Ht<140){let t=e<16?a0(e):xP(e);if(t!=null)return t}return hd(e)}else{let e;switch(r){case 192:return null;case 193:return Ze?(e=Ve(),e>0?Ze[1].slice(Ze.position1,Ze.position1+=e):Ze[0].slice(Ze.position0,Ze.position0-=e)):i0;case 194:return!1;case 195:return!0;case 196:if(e=O[v++],e===void 0)throw new Error("Unexpected end of buffer");return Zv(e);case 197:return e=ne.getUint16(v),v+=2,Zv(e);case 198:return e=ne.getUint32(v),v+=4,Zv(e);case 199:return Hi(O[v++]);case 200:return e=ne.getUint16(v),v+=2,Hi(e);case 201:return e=ne.getUint32(v),v+=4,Hi(e);case 202:if(e=ne.getFloat32(v),pe.useFloat32>2){let t=Ed[(O[v]&127)<<1|O[v+1]>>7];return v+=4,(t*e+(e>0?.5:-.5)>>0)/t}return v+=4,e;case 203:return e=ne.getFloat64(v),v+=8,e;case 204:return O[v++];case 205:return e=ne.getUint16(v),v+=2,e;case 206:return e=ne.getUint32(v),v+=4,e;case 207:return pe.int64AsType==="number"?(e=ne.getUint32(v)*4294967296,e+=ne.getUint32(v+4)):pe.int64AsType==="string"?e=ne.getBigUint64(v).toString():pe.int64AsType==="auto"?(e=ne.getBigUint64(v),e<=BigInt(2)<<BigInt(52)&&(e=Number(e))):e=ne.getBigUint64(v),v+=8,e;case 208:return ne.getInt8(v++);case 209:return e=ne.getInt16(v),v+=2,e;case 210:return e=ne.getInt32(v),v+=4,e;case 211:return pe.int64AsType==="number"?(e=ne.getInt32(v)*4294967296,e+=ne.getUint32(v+4)):pe.int64AsType==="string"?e=ne.getBigInt64(v).toString():pe.int64AsType==="auto"?(e=ne.getBigInt64(v),e>=BigInt(-2)<<BigInt(52)&&e<=BigInt(2)<<BigInt(52)&&(e=Number(e))):e=ne.getBigInt64(v),v+=8,e;case 212:if(e=O[v++],e==114)return lP(O[v++]&63);{let t=vt[e];if(t)return t.read?(v++,t.read(Ve())):t.noBuffer?(v++,t()):t(O.subarray(v,++v));throw new Error("Unknown extension "+e)}case 213:return e=O[v],e==114?(v++,lP(O[v++]&63,O[v++])):Hi(2);case 214:return Hi(4);case 215:return Hi(8);case 216:return Hi(16);case 217:return e=O[v++],gr>=v?En.slice(v-Vt,(v+=e)-Vt):bP(e);case 218:return e=ne.getUint16(v),v+=2,gr>=v?En.slice(v-Vt,(v+=e)-Vt):gP(e);case 219:return e=ne.getUint32(v),v+=4,gr>=v?En.slice(v-Vt,(v+=e)-Vt):vP(e);case 220:return e=ne.getUint16(v),v+=2,sP(e);case 221:return e=ne.getUint32(v),v+=4,sP(e);case 222:return e=ne.getUint16(v),v+=2,aP(e);case 223:return e=ne.getUint32(v),v+=4,aP(e);default:if(r>=224)return r-256;if(r===void 0){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}throw new Error("Unknown MessagePack token "+r)}}}var gte=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function s0(r,e){function t(){if(t.count++>rP){let i;try{i=r.read=new Function("r","return function(){return "+(pe.freezeData?"Object.freeze":"")+"({"+r.map(s=>s==="__proto__"?"__proto_:r()":gte.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"})}")(Ve)}catch{return rP=1/0,t()}return r.highByte===0&&(r.read=iP(e,r.read)),i()}let n={};for(let i=0,s=r.length;i<s;i++){let a=r[i];a==="__proto__"&&(a="__proto_"),n[a]=Ve()}return pe.freezeData?Object.freeze(n):n}return t.count=0,r.highByte===0?iP(e,t):t}var iP=(r,e)=>function(){let t=O[v++];if(t===0)return e();let n=r<32?-(r+(t<<5)):r+(t<<5),i=oe[n]||yP()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=s0(i,r)),i.read()};function yP(){let r=IP(()=>(O=null,pe.getStructures()));return oe=pe._mergeStructures(r,oe)}var hd=ma,bP=ma,gP=ma,vP=ma;ue.isNativeAccelerationEnabled=!1;function vte(r){ue.isNativeAccelerationEnabled=!0,hd=e(1),bP=e(2),gP=e(3),vP=e(5);function e(t){return function(i){let s=zi[Wo++];if(s==null){if(Ze)return ma(i);let o=O.byteOffset,c=r(v-t+o,Ht+o,O.buffer);if(typeof c=="string")s=c,zi=n0;else if(zi=c,Wo=1,gr=1,s=zi[0],s===void 0)throw new Error("Unexpected end of buffer")}let a=s.length;return a<=i?(v+=i,s):(En=s,Vt=v,gr=v+a,v+=i,s.slice(0,i))}}}function ma(r){let e;if(r<16&&(e=a0(r)))return e;if(r>64&&r0)return r0.decode(O.subarray(v,v+=r));let t=v+r,n=[];for(e="";v<t;){let i=O[v++];if((i&128)===0)n.push(i);else if((i&224)===192){let s=O[v++]&63,a=(i&31)<<6|s;a<128?n.push(65533):n.push(a)}else if((i&240)===224){let s=O[v++]&63,a=O[v++]&63,o=(i&31)<<12|s<<6|a;o<2048||o>=55296&&o<=57343?n.push(65533):n.push(o)}else if((i&248)===240){let s=O[v++]&63,a=O[v++]&63,o=O[v++]&63,c=(i&7)<<18|s<<12|a<<6|o;c<65536||c>1114111?n.push(65533):(c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|c&1023),n.push(c))}else n.push(65533);n.length>=4096&&(e+=at.apply(String,n),n.length=0)}return n.length>0&&(e+=at.apply(String,n)),e}function sP(r){let e=new Array(r);for(let t=0;t<r;t++)e[t]=Ve();return pe.freezeData?Object.freeze(e):e}function aP(r){if(pe.mapsAsObjects){let e={};for(let t=0;t<r;t++){let n=EP();n==="__proto__"&&(n="__proto_"),e[n]=Ve()}return e}else{let e=new Map;for(let t=0;t<r;t++)e.set(Ve(),Ve());return e}}var at=String.fromCharCode;function xP(r){let e=v,t=new Array(r);for(let n=0;n<r;n++){let i=O[v++];if((i&128)>0){v=e;return}t[n]=i}return at.apply(String,t)}function a0(r){if(r<4)if(r<2){if(r===0)return"";{let e=O[v++];if((e&128)>1){v-=1;return}return at(e)}}else{let e=O[v++],t=O[v++];if((e&128)>0||(t&128)>0){v-=2;return}if(r<3)return at(e,t);let n=O[v++];if((n&128)>0){v-=3;return}return at(e,t,n)}else{let e=O[v++],t=O[v++],n=O[v++],i=O[v++];if((e&128)>0||(t&128)>0||(n&128)>0||(i&128)>0){v-=4;return}if(r<6){if(r===4)return at(e,t,n,i);{let s=O[v++];if((s&128)>0){v-=5;return}return at(e,t,n,i,s)}}else if(r<8){let s=O[v++],a=O[v++];if((s&128)>0||(a&128)>0){v-=6;return}if(r<7)return at(e,t,n,i,s,a);let o=O[v++];if((o&128)>0){v-=7;return}return at(e,t,n,i,s,a,o)}else{let s=O[v++],a=O[v++],o=O[v++],c=O[v++];if((s&128)>0||(a&128)>0||(o&128)>0||(c&128)>0){v-=8;return}if(r<10){if(r===8)return at(e,t,n,i,s,a,o,c);{let l=O[v++];if((l&128)>0){v-=9;return}return at(e,t,n,i,s,a,o,c,l)}}else if(r<12){let l=O[v++],u=O[v++];if((l&128)>0||(u&128)>0){v-=10;return}if(r<11)return at(e,t,n,i,s,a,o,c,l,u);let d=O[v++];if((d&128)>0){v-=11;return}return at(e,t,n,i,s,a,o,c,l,u,d)}else{let l=O[v++],u=O[v++],d=O[v++],p=O[v++];if((l&128)>0||(u&128)>0||(d&128)>0||(p&128)>0){v-=12;return}if(r<14){if(r===12)return at(e,t,n,i,s,a,o,c,l,u,d,p);{let f=O[v++];if((f&128)>0){v-=13;return}return at(e,t,n,i,s,a,o,c,l,u,d,p,f)}}else{let f=O[v++],m=O[v++];if((f&128)>0||(m&128)>0){v-=14;return}if(r<15)return at(e,t,n,i,s,a,o,c,l,u,d,p,f,m);let y=O[v++];if((y&128)>0){v-=15;return}return at(e,t,n,i,s,a,o,c,l,u,d,p,f,m,y)}}}}}function oP(){let r=O[v++],e;if(r<192)e=r-160;else switch(r){case 217:e=O[v++];break;case 218:e=ne.getUint16(v),v+=2;break;case 219:e=ne.getUint32(v),v+=4;break;default:throw new Error("Expected string")}return ma(e)}function Zv(r){return pe.copyBuffers?Uint8Array.prototype.slice.call(O,v,v+=r):O.subarray(v,v+=r)}function Hi(r){let e=O[v++];if(vt[e]){let t;return vt[e](O.subarray(v,t=v+=r),n=>{v=n;try{return Ve()}finally{v=t}})}else throw new Error("Unknown extension type "+e)}var cP=new Array(4096);function EP(){let r=O[v++];if(r>=160&&r<192){if(r=r-160,gr>=v)return En.slice(v-Vt,(v+=r)-Vt);if(!(gr==0&&Ht<180))return hd(r)}else return v--,SP(Ve());let e=(r<<5^(r>1?ne.getUint16(v):r>0?O[v]:0))&4095,t=cP[e],n=v,i=v+r-3,s,a=0;if(t&&t.bytes==r){for(;n<i;){if(s=ne.getUint32(n),s!=t[a++]){n=1879048192;break}n+=4}for(i+=3;n<i;)if(s=O[n++],s!=t[a++]){n=1879048192;break}if(n===i)return v=n,t.string;i-=3,n=v}for(t=[],cP[e]=t,t.bytes=r;n<i;)s=ne.getUint32(n),t.push(s),n+=4;for(i+=3;n<i;)s=O[n++],t.push(s);let o=r<16?a0(r):xP(r);return o!=null?t.string=o:t.string=hd(r)}function SP(r){if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean"||typeof r=="bigint")return r.toString();if(r==null)return r+"";if(pe.allowArraysInMapKeys&&Array.isArray(r)&&r.flat().every(e=>["string","number","boolean","bigint"].includes(typeof e)))return r.flat().toString();throw new Error(`Invalid property type for record: ${typeof r}`)}var lP=(r,e)=>{let t=Ve().map(SP),n=r;e!==void 0&&(r=r<32?-((e<<5)+r):(e<<5)+r,t.highByte=e);let i=oe[r];return i&&(i.isShared||ai)&&((oe.restoreStructures||(oe.restoreStructures=[]))[r]=i),oe[r]=t,t.read=s0(t,n),t.read()};vt[0]=()=>{};vt[0].noBuffer=!0;vt[66]=r=>{let e=r.byteLength%8||8,t=BigInt(r[0]&128?r[0]-256:r[0]);for(let n=1;n<e;n++)t<<=BigInt(8),t+=BigInt(r[n]);if(r.byteLength!==e){let n=new DataView(r.buffer,r.byteOffset,r.byteLength),i=(s,a)=>{let o=a-s;if(o<=40){let d=n.getBigUint64(s);for(let p=s+8;p<a;p+=8)d<<=BigInt(64),d|=n.getBigUint64(p);return d}let c=s+(o>>4<<3),l=i(s,c),u=i(c,a);return l<<BigInt((a-c)*8)|u};t=t<<BigInt((n.byteLength-e)*8)|i(e,n.byteLength)}return t};var uP={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError:typeof AggregateError=="function"?AggregateError:null};vt[101]=()=>{let r=Ve();if(!uP[r[0]]){let e=Error(r[1],{cause:r[2]});return e.name=r[0],e}return uP[r[0]](r[1],{cause:r[2]})};vt[105]=r=>{if(pe.structuredClone===!1)throw new Error("Structured clone extension is disabled");let e=ne.getUint32(v-4);Sn||(Sn=new Map);let t=O[v],n;t>=144&&t<160||t==220||t==221?n=[]:t>=128&&t<144||t==222||t==223?n=new Map:(t>=199&&t<=201||t>=212&&t<=216)&&O[v+1]===115?n=new Set:n={};let i={target:n};Sn.set(e,i);let s=Ve();if(i.used)Object.assign(n,s);else return i.target=s;if(n instanceof Map)for(let[a,o]of s.entries())n.set(a,o);if(n instanceof Set)for(let a of Array.from(s))n.add(a);return n};vt[112]=r=>{if(pe.structuredClone===!1)throw new Error("Structured clone extension is disabled");let e=ne.getUint32(v-4),t=Sn.get(e);return t.used=!0,t.target};vt[115]=()=>new Set(Ve());var wP=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array"),xte=typeof globalThis=="object"?globalThis:window;vt[116]=r=>{let e=r[0],t=Uint8Array.prototype.slice.call(r,1).buffer,n=wP[e];if(!n){if(e===16)return t;if(e===17)return new DataView(t);throw new Error("Could not find typed array for code "+e)}return new xte[n](t)};vt[120]=()=>{let r=Ve();return new RegExp(r[0],r[1])};var Ete=[];vt[98]=r=>{let e=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],t=v;return v+=e-r.length,Ze=Ete,Ze=[oP(),oP()],Ze.position0=0,Ze.position1=0,Ze.postBundlePosition=v,v=t,Ve()};vt[255]=r=>r.length==4?new Date((r[0]*16777216+(r[1]<<16)+(r[2]<<8)+r[3])*1e3):r.length==8?new Date(((r[0]<<22)+(r[1]<<14)+(r[2]<<6)+(r[3]>>2))/1e6+((r[3]&3)*4294967296+r[4]*16777216+(r[5]<<16)+(r[6]<<8)+r[7])*1e3):r.length==12?new Date(((r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3])/1e6+((r[4]&128?-281474976710656:0)+r[6]*1099511627776+r[7]*4294967296+r[8]*16777216+(r[9]<<16)+(r[10]<<8)+r[11])*1e3):new Date("invalid");function IP(r){pe&&pe._onSaveState&&pe._onSaveState();let e=Ht,t=v,n=Wo,i=Vt,s=gr,a=En,o=zi,c=Sn,l=Ze,u=new Uint8Array(O.slice(0,Ht)),d=oe,p=oe.slice(0,oe.length),f=pe,m=ai,y=r();return Ht=e,v=t,Wo=n,Vt=i,gr=s,En=a,zi=o,Sn=c,Ze=l,O=u,ai=m,oe=d,oe.splice(0,oe.length,...p),pe=f,ne=new DataView(O.buffer,O.byteOffset,O.byteLength),y}function yd(){O=null,Sn=null,oe=null}function Ste(r){r.unpack?vt[r.type]=r.unpack:vt[r.type]=r}var Ed=new Array(147);for(let r=0;r<256;r++)Ed[r]=+("1e"+Math.floor(45.15-r*.30103));var wte=wn,Sd=new wn({useRecords:!1}),Ite=Sd.unpack,_te=Sd.unpackMultiple,kte=Sd.unpack,_P={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},kP=new Float32Array(1),dP=new Uint8Array(kP.buffer,0,4);function Tte(r){kP[0]=r;let e=Ed[(dP[3]&127)<<1|dP[2]>>7];return(e*r+(r>0?.5:-.5)>>0)/e}wn.SUPPORTS_STRUCT_HOOKS=!0;var fd;try{fd=new TextEncoder}catch{}var bd,gd,fa=typeof Buffer<"u",pd=fa?function(r){return Buffer.allocUnsafeSlow(r)}:Uint8Array,TP=fa?Buffer:Uint8Array,pP=fa?4294967296:2144337920,w,Yo,xe,E=0,gt,Me=null,Ate=21760,Kte=/[\u0080-\uFFFF]/,pa=Symbol("record-id"),In=class extends wn{constructor(e){super(e),this.offset=0;let t,n,i,s,a=TP.prototype.utf8Write?function(S,j){return w.utf8Write(S,j,w.byteLength-j)}:fd&&fd.encodeInto?function(S,j){return fd.encodeInto(S,w.subarray(j)).written}:!1,o=this;e||(e={});let c=e&&e.sequential,l=e.structures||e.saveStructures,u=e.maxSharedStructures;if(u==null&&(u=l?32:0),u>8160)throw new Error("Maximum maxSharedStructure is 8160");e.structuredClone&&e.moreTypes==null&&(this.moreTypes=!0);let d=e.maxOwnStructures;d==null&&(d=l?32:64),!this.structures&&e.useRecords!=!1&&(this.structures=[]);let p=u>32||d+u>64,f=u+64,m=u+d+64;if(m>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let y=[],b=0,g=0;this.pack=this.encode=function(S,j){if(w||(w=new pd(8192),xe=w.dataView||(w.dataView=new DataView(w.buffer,0,8192)),E=0),gt=w.length-10,gt-E<2048?(w=new pd(w.length),xe=w.dataView||(w.dataView=new DataView(w.buffer,0,w.length)),gt=w.length-10,E=0):E=E+7&2147483640,t=E,j&OP&&(E+=j&255),s=o.structuredClone?new Map:null,o.bundleStrings&&typeof S!="string"?(Me=[],Me.size=1/0):Me=null,i=o.structures,i){i.uninitialized&&(i=o._mergeStructures(o.getStructures()));let T=i.sharedLength||0;if(T>u)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let K=0;K<T;K++){let B=i[K];if(!B)continue;let G,N=i.transitions;for(let he=0,ye=B.length;he<ye;he++){let Pr=B[he];G=N[Pr],G||(G=N[Pr]=Object.create(null)),N=G}N[pa]=K+64}this.lastNamedStructuresLength=T}c||(i.nextId=T+64)}n&&(n=!1);let A;try{o._writeStruct&&S&&typeof S=="object"?S.constructor===Object?ie(S):S.constructor!==Map&&!Array.isArray(S)&&!gd.some(K=>S instanceof K)?ie(S.toJSON?S.toJSON():S):k(S):k(S);let T=Me;if(Me&&mP(t,k,0),s&&s.idsToInsert){let K=s.idsToInsert.sort((he,ye)=>he.offset>ye.offset?1:-1),B=K.length,G=-1;for(;T&&B>0;){let he=K[--B].offset+t;he<T.stringsPosition+t&&G===-1&&(G=0),he>T.position+t?G>=0&&(G+=6):(G>=0&&(xe.setUint32(T.position+t,xe.getUint32(T.position+t)+G),G=-1),T=T.previous,B++)}G>=0&&T&&xe.setUint32(T.position+t,xe.getUint32(T.position+t)+G),E+=K.length*6,E>gt&&ee(E),o.offset=E;let N=jte(w.subarray(t,E),K);return s=null,N}return o.offset=E,j&KP?(w.start=t,w.end=E,w):w.subarray(t,E)}catch(T){throw A=T,T}finally{if(i&&(x(),n&&o.saveStructures)){let T=i.sharedLength||0,K=w.subarray(t,E),B=(o._prepareStructures||Rte)(i,o);if(!A)return o.saveStructures(B,B.isCompatible)===!1?o.pack(S,j):(o.lastNamedStructuresLength=T,w.length>1073741824&&(w=null),K)}w.length>1073741824&&(w=null),j&jP&&(E=t)}};let x=()=>{g<10&&g++;let S=i.sharedLength||0;if(i.length>S&&!c&&(i.length=S),b>1e4)i.transitions=null,g=0,b=0,y.length>0&&(y=[]);else if(y.length>0&&!c){for(let j=0,A=y.length;j<A;j++)y[j][pa]=0;y=[]}},I=S=>{var j=S.length;j<16?w[E++]=144|j:j<65536?(w[E++]=220,w[E++]=j>>8,w[E++]=j&255):(w[E++]=221,xe.setUint32(E,j),E+=4);for(let A=0;A<j;A++)k(S[A])},k=S=>{E>gt&&(w=ee(E));var j=typeof S,A;if(j==="string"){let T=S.length;if(Me&&T>=4&&T<4096){if((Me.size+=T)>Ate){let N,he=(Me[0]?Me[0].length*3+Me[1].length:0)+10;E+he>gt&&(w=ee(E+he));let ye;Me.position?(ye=Me,w[E]=200,E+=3,w[E++]=98,N=E-t,E+=4,mP(t,k,0),xe.setUint16(N+t-3,E-t-N)):(w[E++]=214,w[E++]=98,N=E-t,E+=4),Me=["",""],Me.previous=ye,Me.size=0,Me.position=N}let G=Kte.test(S);Me[G?0:1]+=S,w[E++]=193,k(G?-T:T);return}let K;T<32?K=1:T<256?K=2:T<65536?K=3:K=5;let B=T*3;if(E+B>gt&&(w=ee(E+B)),T<64||!a){let G,N,he,ye=E+K;for(G=0;G<T;G++)N=S.charCodeAt(G),N<128?w[ye++]=N:N<2048?(w[ye++]=N>>6|192,w[ye++]=N&63|128):(N&64512)===55296&&((he=S.charCodeAt(G+1))&64512)===56320?(N=65536+((N&1023)<<10)+(he&1023),G++,w[ye++]=N>>18|240,w[ye++]=N>>12&63|128,w[ye++]=N>>6&63|128,w[ye++]=N&63|128):(w[ye++]=N>>12|224,w[ye++]=N>>6&63|128,w[ye++]=N&63|128);A=ye-E-K}else A=a(S,E+K);A<32?w[E++]=160|A:A<256?(K<2&&w.copyWithin(E+2,E+1,E+1+A),w[E++]=217,w[E++]=A):A<65536?(K<3&&w.copyWithin(E+3,E+2,E+2+A),w[E++]=218,w[E++]=A>>8,w[E++]=A&255):(K<5&&w.copyWithin(E+5,E+3,E+3+A),w[E++]=219,xe.setUint32(E,A),E+=4),E+=A}else if(j==="number")if(S>>>0===S)S<32||S<128&&this.useRecords===!1||S<64&&!this._writeStruct?w[E++]=S:S<256?(w[E++]=204,w[E++]=S):S<65536?(w[E++]=205,w[E++]=S>>8,w[E++]=S&255):(w[E++]=206,xe.setUint32(E,S),E+=4);else if(S>>0===S)S>=-32?w[E++]=256+S:S>=-128?(w[E++]=208,w[E++]=S+256):S>=-32768?(w[E++]=209,xe.setInt16(E,S),E+=2):(w[E++]=210,xe.setInt32(E,S),E+=4);else{let T;if((T=this.useFloat32)>0&&S<4294967296&&S>=-2147483648){w[E++]=202,xe.setFloat32(E,S);let K;if(T<4||(K=S*Ed[(w[E]&127)<<1|w[E+1]>>7])>>0===K){E+=4;return}else E--}w[E++]=203,xe.setFloat64(E,S),E+=8}else if(j==="object"||j==="function")if(!S)w[E++]=192;else{if(s){let K=s.get(S);if(K){if(!K.id){let B=s.idsToInsert||(s.idsToInsert=[]);K.id=B.push(K)}w[E++]=214,w[E++]=112,xe.setUint32(E,K.id),E+=4;return}else s.set(S,{offset:E-t})}let T=S.constructor;if(T===Object)Ke(S);else if(T===Array)I(S);else if(T===Map)if(this.mapAsEmptyObject)w[E++]=128;else{A=S.size,A<16?w[E++]=128|A:A<65536?(w[E++]=222,w[E++]=A>>8,w[E++]=A&255):(w[E++]=223,xe.setUint32(E,A),E+=4);for(let[K,B]of S)k(K),k(B)}else{for(let K=0,B=bd.length;K<B;K++){let G=gd[K];if(S instanceof G){let N=bd[K];if(N.write){N.type&&(w[E++]=212,w[E++]=N.type,w[E++]=0);let Pa=N.write.call(this,S);Pa===S?Array.isArray(S)?I(S):Ke(S):k(Pa);return}let he=w,ye=xe,Pr=E;w=null;let On;try{On=N.pack.call(this,S,Pa=>(w=he,he=null,E+=Pa,E>gt&&ee(E),{target:w,targetView:xe,position:E-Pa}),k)}finally{he&&(w=he,xe=ye,E=Pr,gt=w.length-10)}On&&(On.length+E>gt&&ee(On.length+E),E=fP(On,w,E,N.type));return}}if(Array.isArray(S))I(S);else{if(S.toJSON){let K=S.toJSON();if(K!==S)return k(K)}if(j==="function")return k(this.writeFunction&&this.writeFunction(S));Ke(S)}}}else if(j==="boolean")w[E++]=S?195:194;else if(j==="bigint"){if(S<9223372036854776e3&&S>=-9223372036854776e3)w[E++]=211,xe.setBigInt64(E,S);else if(S<18446744073709552e3&&S>0)w[E++]=207,xe.setBigUint64(E,S);else if(this.largeBigIntToFloat)w[E++]=203,xe.setFloat64(E,Number(S));else{if(this.largeBigIntToString)return k(S.toString());if(this.useBigIntExtension||this.moreTypes){let T=S<0?BigInt(-1):BigInt(0),K;if(S>>BigInt(65536)===T){let B=BigInt(18446744073709552e3)-BigInt(1),G=[];for(;G.push(S&B),S>>BigInt(63)!==T;)S>>=BigInt(64);K=new Uint8Array(new BigUint64Array(G).buffer),K.reverse()}else{let B=S<0,G=(B?~S:S).toString(16);if(G.length%2?G="0"+G:parseInt(G.charAt(0),16)>=8&&(G="00"+G),fa)K=Buffer.from(G,"hex");else{K=new Uint8Array(G.length/2);for(let N=0;N<K.length;N++)K[N]=parseInt(G.slice(N*2,N*2+2),16)}if(B)for(let N=0;N<K.length;N++)K[N]=~K[N]}K.length+E>gt&&ee(K.length+E),E=fP(K,w,E,66);return}else throw new RangeError(S+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set largeBigIntToString to convert to string")}E+=8}else if(j==="undefined")this.encodeUndefinedAsNil?w[E++]=192:(w[E++]=212,w[E++]=0,w[E++]=0);else throw new Error("Unknown type: "+j)},M=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?S=>{let j;if(this.skipValues){j=[];for(let K in S)(typeof S.hasOwnProperty!="function"||S.hasOwnProperty(K))&&!this.skipValues.includes(S[K])&&j.push(K)}else j=Object.keys(S);let A=j.length;A<16?w[E++]=128|A:A<65536?(w[E++]=222,w[E++]=A>>8,w[E++]=A&255):(w[E++]=223,xe.setUint32(E,A),E+=4);let T;if(this.coercibleKeyAsNumber)for(let K=0;K<A;K++){T=j[K];let B=Number(T);k(isNaN(B)?T:B),k(S[T])}else for(let K=0;K<A;K++)k(T=j[K]),k(S[T])}:S=>{w[E++]=222;let j=E-t;E+=2;let A=0;for(let T in S)(typeof S.hasOwnProperty!="function"||S.hasOwnProperty(T))&&(k(T),k(S[T]),A++);if(A>65535)throw new Error('Object is too large to serialize with fast 16-bit map size, use the "variableMapSize" option to serialize this object');w[j+++t]=A>>8,w[j+t]=A&255},U=this.useRecords===!1?M:e.progressiveRecords&&!p?S=>{let j,A=i.transitions||(i.transitions=Object.create(null)),T=E++-t,K;for(let B in S)if(typeof S.hasOwnProperty!="function"||S.hasOwnProperty(B)){if(j=A[B],j)A=j;else{let G=Object.keys(S),N=A;A=i.transitions;let he=0;for(let ye=0,Pr=G.length;ye<Pr;ye++){let On=G[ye];j=A[On],j||(j=A[On]=Object.create(null),he++),A=j}T+t+1==E?(E--,Je(A,G,he)):Sr(A,G,T,he),K=!0,A=N[B]}k(S[B])}if(!K){let B=A[pa];B?w[T+t]=B:Sr(A,Object.keys(S),T,0)}}:S=>{let j,A=i.transitions||(i.transitions=Object.create(null)),T=0;for(let B in S)(typeof S.hasOwnProperty!="function"||S.hasOwnProperty(B))&&(j=A[B],j||(j=A[B]=Object.create(null),T++),A=j);let K=A[pa];K?K>=96&&p?(w[E++]=((K-=96)&31)+96,w[E++]=K>>5):w[E++]=K:Je(A,A.__keys__||Object.keys(S),T);for(let B in S)(typeof S.hasOwnProperty!="function"||S.hasOwnProperty(B))&&k(S[B])},re=typeof this.useRecords=="function"&&this.useRecords,Ke=re?S=>{re(S)?U(S):M(S)}:U,ie=S=>{let j=o._writeStruct(S,w,t,E,i,ee,(A,T,K)=>{if(K)return n=!0;E=T;let B=w;return k(A),x(),B!==w?{position:E,targetView:xe,target:w}:E});if(j===0)return Ke(S);E=j},ee=S=>{let j;if(S>16777216){if(S-t>pP)throw new Error("Packed buffer would be larger than maximum buffer size");j=Math.min(pP,Math.round(Math.max((S-t)*(S>67108864?1.25:2),4194304)/4096)*4096)}else j=(Math.max(S-t<<2,w.length-1)>>12)+1<<12;let A=new pd(j);return xe=A.dataView||(A.dataView=new DataView(A.buffer,0,j)),S=Math.min(S,w.length),w.copy?w.copy(A,0,t,S):A.set(w.slice(t,S)),E-=t,t=0,gt=A.length-10,w=A},Je=(S,j,A)=>{let T=i.nextId;T||(T=64),T<f&&this.shouldShareStructure&&!this.shouldShareStructure(j)?(T=i.nextOwnId,T<m||(T=f),i.nextOwnId=T+1):(T>=m&&(T=f),i.nextId=T+1);let K=j.highByte=T>=96&&p?T-96>>5:-1;S[pa]=T,S.__keys__=j,i[T-64]=j,T<f?(j.isShared=!0,i.sharedLength=T-63,n=!0,K>=0?(w[E++]=(T&31)+96,w[E++]=K):w[E++]=T):(K>=0?(w[E++]=213,w[E++]=114,w[E++]=(T&31)+96,w[E++]=K):(w[E++]=212,w[E++]=114,w[E++]=T),A&&(b+=g*A),y.length>=d&&(y.shift()[pa]=0),y.push(S),k(j))},Sr=(S,j,A,T)=>{let K=w,B=E,G=gt,N=t;w=Yo,E=0,t=0,w||(Yo=w=new pd(8192)),gt=w.length-10,Je(S,j,T),Yo=w;let he=E;if(w=K,E=B,gt=G,t=N,he>1){let ye=E+he-1;ye>gt&&ee(ye);let Pr=A+t;w.copyWithin(Pr+he,Pr+1,E),w.set(Yo.slice(0,he),Pr),E=ye}else w[A+t]=Yo[0]}}useBuffer(e){w=e,w.dataView||(w.dataView=new DataView(w.buffer,w.byteOffset,w.byteLength)),xe=w.dataView,E=0}set position(e){E=e}get position(){return E}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}};gd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,DataView,md];bd=[{pack(r,e,t){let n=r.getTime()/1e3;if((this.useTimestamp32||r.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:i,targetView:s,position:a}=e(6);i[a++]=214,i[a++]=255,s.setUint32(a,n)}else if(n>0&&n<4294967296){let{target:i,targetView:s,position:a}=e(10);i[a++]=215,i[a++]=255,s.setUint32(a,r.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),s.setUint32(a+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return e(0),t(this.onInvalidDate());let{target:i,targetView:s,position:a}=e(3);i[a++]=212,i[a++]=255,i[a++]=255}else{let{target:i,targetView:s,position:a}=e(15);i[a++]=199,i[a++]=12,i[a++]=255,s.setUint32(a,r.getMilliseconds()*1e6),s.setBigInt64(a+4,BigInt(Math.floor(n)))}}},{pack(r,e,t){if(this.setAsEmptyObject)return e(0),t({});let n=Array.from(r),{target:i,position:s}=e(this.moreTypes?3:0);this.moreTypes&&(i[s++]=212,i[s++]=115,i[s++]=0),t(n)}},{pack(r,e,t){let{target:n,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(n[i++]=212,n[i++]=101,n[i++]=0),t([r.name,r.message,r.cause])}},{pack(r,e,t){let{target:n,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(n[i++]=212,n[i++]=120,n[i++]=0),t([r.source,r.flags])}},{pack(r,e){this.moreTypes?e0(r,16,e):t0(fa?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let t=r.constructor;t!==TP&&this.moreTypes?e0(r,wP.indexOf(t.name),e):t0(r,e)}},{pack(r,e){this.moreTypes?e0(r,17,e):t0(fa?Buffer.from(r):new Uint8Array(r),e)}},{pack(r,e){let{target:t,position:n}=e(1);t[n]=193}}];function e0(r,e,t,n){let i=r.byteLength;if(i+1<256){var{target:s,position:a}=t(4+i);s[a++]=199,s[a++]=i+1}else if(i+1<65536){var{target:s,position:a}=t(5+i);s[a++]=200,s[a++]=i+1>>8,s[a++]=i+1&255}else{var{target:s,position:a,targetView:o}=t(7+i);s[a++]=201,o.setUint32(a,i+1),a+=4}s[a++]=116,s[a++]=e,r.buffer||(r=new Uint8Array(r)),s.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),a)}function t0(r,e){let t=r.byteLength;var n,i;if(t<256){var{target:n,position:i}=e(t+2);n[i++]=196,n[i++]=t}else if(t<65536){var{target:n,position:i}=e(t+3);n[i++]=197,n[i++]=t>>8,n[i++]=t&255}else{var{target:n,position:i,targetView:s}=e(t+5);n[i++]=198,s.setUint32(i,t),i+=4}n.set(r,i)}function fP(r,e,t,n){let i=r.length;switch(i){case 1:e[t++]=212;break;case 2:e[t++]=213;break;case 4:e[t++]=214;break;case 8:e[t++]=215;break;case 16:e[t++]=216;break;default:i<256?(e[t++]=199,e[t++]=i):i<65536?(e[t++]=200,e[t++]=i>>8,e[t++]=i&255):(e[t++]=201,e[t++]=i>>24,e[t++]=i>>16&255,e[t++]=i>>8&255,e[t++]=i&255)}return e[t++]=n,e.set(r,t),t+=i,t}function jte(r,e){let t,n=e.length*6,i=r.length-n;for(;t=e.pop();){let s=t.offset,a=t.id;r.copyWithin(s+n,s,i),n-=6;let o=s+n;r[o++]=214,r[o++]=105,r[o++]=a>>24,r[o++]=a>>16&255,r[o++]=a>>8&255,r[o++]=a&255,i=s}return r}function mP(r,e,t){if(Me.length>0){xe.setUint32(Me.position+r,E+t-Me.position-r),Me.stringsPosition=E-r;let n=Me;Me=null,e(n[0]),e(n[1])}}function Ote(r){if(r.Class){if(!r.pack&&!r.write)throw new Error("Extension has no pack or write function");if(r.pack&&!r.type)throw new Error("Extension has no type (numeric code to identify the extension)");gd.unshift(r.Class),bd.unshift(r)}Ste(r)}function Rte(r,e){return r.isCompatible=t=>{let n=!t||(e.lastNamedStructuresLength||0)===t.length;return n||e._mergeStructures(t),n},r}In.SUPPORTS_STRUCT_HOOKS=!0;var AP=new In({useRecords:!1}),Cte=AP.pack,Dte=AP.pack,Pte=In,{NEVER:Mte,ALWAYS:Lte,DECIMAL_ROUND:Nte,DECIMAL_FIT:qte}=_P,KP=512,jP=1024,OP=2048,vd=class extends hP.Transform{constructor(e){e||(e={}),e.writableObjectMode=!0,super(e),e.sequential=!0,this.packr=e.packr||new In(e)}_transform(e,t,n){this.push(this.packr.pack(e)),n()}},xd=class extends hP.Transform{constructor(e){e||(e={}),e.objectMode=!0,super(e),e.structures=[],this.maxIncompleteBufferSize=e.maxIncompleteBufferSize!==void 0?e.maxIncompleteBufferSize:67108864,this.unpackr=e.unpackr||new wn(e)}_transform(e,t,n){this.incompleteBuffer&&(e=Buffer.concat([this.incompleteBuffer,e]),this.incompleteBuffer=null);let i;try{i=this.unpackr.unpackMultiple(e)}catch(s){if(s.incomplete){let a=e.slice(s.lastPosition);if(a.length>this.maxIncompleteBufferSize)return this.incompleteBuffer=null,n(new Error("Maximum incomplete buffer size exceeded"));this.incompleteBuffer=a,i=s.values}else return n(s)}for(let s of i||[])s===null&&(s=this.getNullValue()),this.push(s);n()}getNullValue(){return Symbol.for(null)}};function Fte(r,e={}){if(!r||typeof r!="object")throw new Error("first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable");if(typeof r[Symbol.iterator]=="function")return Jte(r,e);if(typeof r.then=="function"||typeof r[Symbol.asyncIterator]=="function")return Ute(r,e);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}function*Jte(r,e){let t=new In(e);for(let n of r)yield t.pack(n)}async function*Ute(r,e){let t=new In(e);for await(let n of r)yield t.pack(n)}function Gte(r,e={}){if(!r||typeof r!="object")throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise");let t=new wn(e),n,i=s=>{let a;n&&(s=Buffer.concat([n,s]),n=void 0);try{a=t.unpackMultiple(s)}catch(o){if(o.incomplete)n=s.slice(o.lastPosition),a=o.values;else throw o}return a};if(typeof r[Symbol.iterator]=="function")return(function*(){for(let a of r)yield*i(a)})();if(typeof r[Symbol.asyncIterator]=="function")return(async function*(){for await(let a of r)yield*i(a)})()}var Bte=Gte,$te=Fte,Vte=!1,Hte=!0,zte=process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED!==void 0&&process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED.toLowerCase()==="true";if(!zte){let r;try{typeof require=="function"?r=eP():r=bte.createRequire(typeof document>"u"?new(require("url")).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("node.cjs",document.baseURI).href)("msgpackr-extract"),r&&vte(r.extractStrings)}catch{}}ue.ALWAYS=Lte;ue.C1=i0;ue.DECIMAL_FIT=qte;ue.DECIMAL_ROUND=Nte;ue.Decoder=wte;ue.DecoderStream=xd;ue.Encoder=Pte;ue.EncoderStream=vd;ue.FLOAT32_OPTIONS=_P;ue.NEVER=Mte;ue.Packr=In;ue.PackrStream=vd;ue.RESERVE_START_SPACE=OP;ue.RESET_BUFFER_MODE=jP;ue.REUSE_BUFFER_MODE=KP;ue.Unpackr=wn;ue.UnpackrStream=xd;ue.addExtension=Ote;ue.clearSource=yd;ue.decode=kte;ue.decodeIter=Bte;ue.encode=Dte;ue.encodeIter=$te;ue.mapsAsObjects=Hte;ue.pack=Cte;ue.roundFloat32=Tte;ue.unpack=Ite;ue.unpackMultiple=_te;ue.useRecords=Vte});var Id=h(wd=>{"use strict";Object.defineProperty(wd,"__esModule",{value:!0});wd.version=void 0;wd.version="5.76.10"});var c0=h(Qo=>{"use strict";Object.defineProperty(Qo,"__esModule",{value:!0});Qo.Scripts=void 0;Qo.raw2NextJobData=_d;var Yte=RP(),Wte=new Yte.Packr({useRecords:!1,encodeUndefinedAsNil:!0}),et=Wte.pack,Kr=Mt(),oi=$t(),Qte=Id(),Xte=sd(),o0=class{constructor(e){this.queue=e,this.version=Qte.version;let t=this.queue.keys;this.moveToFinishedKeys=[t.wait,t.active,t.prioritized,t.events,t.stalled,t.limiter,t.delayed,t.paused,t.meta,t.pc,void 0,void 0,void 0,void 0]}execCommand(e,t,n){let i=`${t}:${this.version}`;return e[i](n)}async isJobInList(e,t){let n=await this.queue.client,i;return(0,oi.isRedisVersionLowerThan)(this.queue.redisVersion,"6.0.6",this.queue.databaseType)?i=await this.execCommand(n,"isJobInList",[e,t]):i=await n.lpos(e,t),Number.isInteger(i)}addDelayedJobArgs(e,t,n){let i=this.queue.keys,s=[i.marker,i.meta,i.id,i.delayed,i.completed,i.events];return s.push(et(n),e.data,t),s}addDelayedJob(e,t,n,i){let s=this.addDelayedJobArgs(t,n,i);return this.execCommand(e,"addDelayedJob",s)}addPrioritizedJobArgs(e,t,n){let i=this.queue.keys,s=[i.marker,i.meta,i.id,i.prioritized,i.delayed,i.completed,i.active,i.events,i.pc];return s.push(et(n),e.data,t),s}addPrioritizedJob(e,t,n,i){let s=this.addPrioritizedJobArgs(t,n,i);return this.execCommand(e,"addPrioritizedJob",s)}addParentJobArgs(e,t,n){let i=this.queue.keys,s=[i.meta,i.id,i.delayed,i["waiting-children"],i.completed,i.events];return s.push(et(n),e.data,t),s}addParentJob(e,t,n,i){let s=this.addParentJobArgs(t,n,i);return this.execCommand(e,"addParentJob",s)}addStandardJobArgs(e,t,n){let i=this.queue.keys,s=[i.wait,i.paused,i.meta,i.id,i.completed,i.delayed,i.active,i.events,i.marker];return s.push(et(n),e.data,t),s}addStandardJob(e,t,n,i){let s=this.addStandardJobArgs(t,n,i);return this.execCommand(e,"addStandardJob",s)}async addJob(e,t,n,i,s={}){let a=this.queue.keys,o=t.parent,c=[a[""],typeof i<"u"?i:"",t.name,t.timestamp,t.parentKey||null,s.parentDependenciesKey||null,o,t.repeatJobKey,t.deduplicationId?`${a.de}:${t.deduplicationId}`:null],l;if(n.repeat){let d=Object.assign({},n.repeat);d.startDate&&(d.startDate=+new Date(d.startDate)),d.endDate&&(d.endDate=+new Date(d.endDate)),l=et(Object.assign(Object.assign({},n),{repeat:d}))}else l=et(n);let u;if(s.addToWaitingChildren?u=await this.addParentJob(e,t,l,c):typeof n.delay=="number"&&n.delay>0?u=await this.addDelayedJob(e,t,l,c):n.priority?u=await this.addPrioritizedJob(e,t,l,c):u=await this.addStandardJob(e,t,l,c),u<0)throw this.finishedErrors({code:u,parentKey:s.parentKey,command:"addJob"});return u}pauseArgs(e){let t="wait",n="paused";e||(t="paused",n="wait");let i=[t,n,"meta","prioritized"].map(a=>this.queue.toKey(a));i.push(this.queue.keys.events,this.queue.keys.delayed,this.queue.keys.marker);let s=[e?"paused":"resumed"];return i.concat(s)}async pause(e){let t=await this.queue.client,n=this.pauseArgs(e);return this.execCommand(t,"pause",n)}addRepeatableJobArgs(e,t,n,i){let s=this.queue.keys,a=[s.repeat,s.delayed],o=[t,et(n),i,e,s[""]];return a.concat(o)}async addRepeatableJob(e,t,n,i){let s=await this.queue.client,a=this.addRepeatableJobArgs(e,t,n,i);return this.execCommand(s,"addRepeatableJob",a)}async removeDeduplicationKey(e,t){let n=await this.queue.client,s=[`${this.queue.keys.de}:${e}`],a=[t];return this.execCommand(n,"removeDeduplicationKey",s.concat(a))}async addJobScheduler(e,t,n,i,s,a,o){let c=await this.queue.client,l=this.queue.keys,u=[l.repeat,l.delayed,l.wait,l.paused,l.meta,l.prioritized,l.marker,l.id,l.events,l.pc,l.active],d=[t,et(s),e,n,et(i),et(a),Date.now(),l[""],o?this.queue.toKey(o):""],p=await this.execCommand(c,"addJobScheduler",u.concat(d));if(typeof p=="number"&&p<0)throw this.finishedErrors({code:p,command:"addJobScheduler"});return p}async updateRepeatableJobMillis(e,t,n,i){let s=[this.queue.keys.repeat,n,t,i];return this.execCommand(e,"updateRepeatableJobMillis",s)}async updateJobSchedulerNextMillis(e,t,n,i,s){let a=await this.queue.client,o=this.queue.keys,c=[o.repeat,o.delayed,o.wait,o.paused,o.meta,o.prioritized,o.marker,o.id,o.events,o.pc,s?this.queue.toKey(s):"",o.active],l=[t,e,n,et(i),Date.now(),o[""],s];return this.execCommand(a,"updateJobScheduler",c.concat(l))}removeRepeatableArgs(e,t,n){let i=this.queue.keys,s=[i.repeat,i.delayed,i.events],a=[e,this.getRepeatConcatOptions(t,n),n,i[""]];return s.concat(a)}getRepeatConcatOptions(e,t){return t&&t.split(":").length>2?t:e}async removeRepeatable(e,t,n){let i=await this.queue.client,s=this.removeRepeatableArgs(e,t,n);return this.execCommand(i,"removeRepeatable",s)}async removeJobScheduler(e){let t=await this.queue.client,n=this.queue.keys,i=[n.repeat,n.delayed,n.events],s=[e,n[""]];return this.execCommand(t,"removeJobScheduler",i.concat(s))}removeArgs(e,t){let n=[e,"repeat"].map(s=>this.queue.toKey(s)),i=[e,t?1:0,this.queue.toKey("")];return n.concat(i)}async remove(e,t){let n=await this.queue.client,i=this.removeArgs(e,t),s=await this.execCommand(n,"removeJob",i);if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"removeJob"});return s}async removeUnprocessedChildren(e){let t=await this.queue.client,n=[this.queue.toKey(e),this.queue.keys.meta,this.queue.toKey(""),e];await this.execCommand(t,"removeUnprocessedChildren",n)}async extendLock(e,t,n,i){i=i||await this.queue.client;let s=[this.queue.toKey(e)+":lock",this.queue.keys.stalled,t,n,e];return this.execCommand(i,"extendLock",s)}async extendLocks(e,t,n){let i=await this.queue.client,s=[this.queue.keys.stalled,this.queue.toKey(""),et(t),et(e),n];return this.execCommand(i,"extendLocks",s)}async updateData(e,t){let n=await this.queue.client,i=[this.queue.toKey(e.id)],s=JSON.stringify(t),a=await this.execCommand(n,"updateData",i.concat([s]));if(a<0)throw this.finishedErrors({code:a,jobId:e.id,command:"updateData"})}async updateProgress(e,t){let n=await this.queue.client,i=[this.queue.toKey(e),this.queue.keys.events,this.queue.keys.meta],s=JSON.stringify(t),a=await this.execCommand(n,"updateProgress",i.concat([e,s]));if(a<0)throw this.finishedErrors({code:a,jobId:e,command:"updateProgress"})}async addLog(e,t,n){let i=await this.queue.client,s=[this.queue.toKey(e),this.queue.toKey(e)+":logs"],a=await this.execCommand(i,"addLog",s.concat([e,t,n||""]));if(a<0)throw this.finishedErrors({code:a,jobId:e,command:"addLog"});return a}moveToFinishedArgs(e,t,n,i,s,a,o,c=!0,l){var u,d,p,f,m,y,b;let g=this.queue.keys,x=this.queue.opts,I=s==="completed"?x.removeOnComplete:x.removeOnFail,k=this.queue.toKey(`metrics:${s}`),M=this.moveToFinishedKeys;M[10]=g[s],M[11]=this.queue.toKey((u=e.id)!==null&&u!==void 0?u:""),M[12]=k,M[13]=this.queue.keys.marker;let U=this.getKeepJobs(i,I),re=[e.id,o,n,typeof t>"u"?"null":t,s,!c||this.queue.closing?0:1,g[""],et({token:a,name:x.name,keepJobs:U,limiter:x.limiter,lockDuration:x.lockDuration,attempts:e.opts.attempts,maxMetricsSize:!((d=x.metrics)===null||d===void 0)&&d.maxDataPoints?(p=x.metrics)===null||p===void 0?void 0:p.maxDataPoints:"",fpof:!!(!((f=e.opts)===null||f===void 0)&&f.failParentOnFailure),cpof:!!(!((m=e.opts)===null||m===void 0)&&m.continueParentOnFailure),idof:!!(!((y=e.opts)===null||y===void 0)&&y.ignoreDependencyOnFailure),rdof:!!(!((b=e.opts)===null||b===void 0)&&b.removeDependencyOnFailure)}),l?et((0,oi.objectToFlatArray)(l)):void 0];return M.concat(re)}getKeepJobs(e,t){return typeof e>"u"?t||{count:e?0:-1}:typeof e=="object"?e:typeof e=="number"?{count:e}:{count:e?0:-1}}async moveToFinished(e,t){let n=await this.queue.client,i=await this.execCommand(n,"moveToFinished",t);if(i<0)throw this.finishedErrors({code:i,jobId:e,command:"moveToFinished",state:"active"});if(typeof i<"u")return _d(i)}drainArgs(e){let t=this.queue.keys,n=[t.wait,t.paused,t.delayed,t.prioritized,t.repeat],i=[t[""],e?"1":"0"];return n.concat(i)}async drain(e){let t=await this.queue.client,n=this.drainArgs(e);return this.execCommand(t,"drain",n)}removeChildDependencyArgs(e,t){let i=[this.queue.keys[""]],s=[this.queue.toKey(e),t];return i.concat(s)}async removeChildDependency(e,t){let n=await this.queue.client,i=this.removeChildDependencyArgs(e,t),s=await this.execCommand(n,"removeChildDependency",i);switch(s){case 0:return!0;case 1:return!1;default:throw this.finishedErrors({code:s,jobId:e,parentKey:t,command:"removeChildDependency"})}}getRangesArgs(e,t,n,i){let s=this.queue.keys,a=e.map(l=>l==="waiting"?"wait":l),o=[s[""]],c=[t,n,i?"1":"0",...a];return o.concat(c)}async getRanges(e,t=0,n=1,i=!1){let s=await this.queue.client,a=this.getRangesArgs(e,t,n,i);return await this.execCommand(s,"getRanges",a)}getCountsArgs(e){let t=this.queue.keys,n=e.map(a=>a==="waiting"?"wait":a),i=[t[""]],s=[...n];return i.concat(s)}async getCounts(e){let t=await this.queue.client,n=this.getCountsArgs(e);return await this.execCommand(t,"getCounts",n)}getCountsPerPriorityArgs(e){let t=[this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized],n=e;return t.concat(n)}async getCountsPerPriority(e){let t=await this.queue.client,n=this.getCountsPerPriorityArgs(e);return await this.execCommand(t,"getCountsPerPriority",n)}getDependencyCountsArgs(e,t){let n=[`${e}:processed`,`${e}:dependencies`,`${e}:failed`,`${e}:unsuccessful`].map(s=>this.queue.toKey(s)),i=t;return n.concat(i)}async getDependencyCounts(e,t){let n=await this.queue.client,i=this.getDependencyCountsArgs(e,t);return await this.execCommand(n,"getDependencyCounts",i)}moveToCompletedArgs(e,t,n,i,s=!1){let a=Date.now();return this.moveToFinishedArgs(e,t,"returnvalue",n,"completed",i,a,s)}moveToFailedArgs(e,t,n,i,s=!1,a){let o=Date.now();return this.moveToFinishedArgs(e,t,"failedReason",n,"failed",i,o,s,a)}async isFinished(e,t=!1){let n=await this.queue.client,i=["completed","failed",e].map(s=>this.queue.toKey(s));return this.execCommand(n,"isFinished",i.concat([e,t?"1":""]))}async getState(e){let t=await this.queue.client,n=["completed","failed","delayed","active","wait","paused","waiting-children","prioritized"].map(i=>this.queue.toKey(i));return(0,oi.isRedisVersionLowerThan)(this.queue.redisVersion,"6.0.6",this.queue.databaseType)?this.execCommand(t,"getState",n.concat([e])):this.execCommand(t,"getStateV2",n.concat([e]))}async changeDelay(e,t){let n=await this.queue.client,i=this.changeDelayArgs(e,t),s=await this.execCommand(n,"changeDelay",i);if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"changeDelay",state:"delayed"})}changeDelayArgs(e,t){let n=Date.now();return[this.queue.keys.delayed,this.queue.keys.meta,this.queue.keys.marker,this.queue.keys.events].concat([t,JSON.stringify(n),e,this.queue.toKey(e)])}async changePriority(e,t=0,n=!1){let i=await this.queue.client,s=this.changePriorityArgs(e,t,n),a=await this.execCommand(i,"changePriority",s);if(a<0)throw this.finishedErrors({code:a,jobId:e,command:"changePriority"})}changePriorityArgs(e,t=0,n=!1){return[this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized,this.queue.keys.active,this.queue.keys.pc,this.queue.keys.marker].concat([t,this.queue.toKey(""),e,n?1:0])}moveToDelayedArgs(e,t,n,i,s={}){let a=this.queue.keys,o=this.queue.opts,c=[a.marker,a.active,a.prioritized,a.delayed,this.queue.toKey(e),a.events,a.meta,a.stalled,a.wait,a.limiter,a.paused,a.pc],l=s.fetchNext&&!this.queue.closing?1:0;return c.concat([this.queue.keys[""],t,e,n,i,s.skipAttempt?"1":"0",s.fieldsToUpdate?et((0,oi.objectToFlatArray)(s.fieldsToUpdate)):void 0,l,l?et({token:n,lockDuration:o.lockDuration,limiter:o.limiter,name:o.name}):void 0])}moveToWaitingChildrenArgs(e,t,n){let i=Date.now(),s=(0,oi.getParentKey)(n.child);return["active","waiting-children",e,`${e}:dependencies`,`${e}:unsuccessful`,"stalled","events"].map(o=>this.queue.toKey(o)).concat([t,s??"",JSON.stringify(i),e,this.queue.toKey("")])}isMaxedArgs(){let e=this.queue.keys;return[e.meta,e.active]}async isMaxed(){let e=await this.queue.client,t=this.isMaxedArgs();return!!await this.execCommand(e,"isMaxed",t)}async moveToDelayed(e,t,n,i="0",s={}){let a=await this.queue.client,o=this.moveToDelayedArgs(e,t,i,n,s),c=await this.execCommand(a,"moveToDelayed",o);if(c<0)throw this.finishedErrors({code:c,jobId:e,command:"moveToDelayed",state:"active"});if(typeof c<"u")return _d(c)}async moveToWaitingChildren(e,t,n={}){let i=await this.queue.client,s=this.moveToWaitingChildrenArgs(e,t,n),a=await this.execCommand(i,"moveToWaitingChildren",s);switch(a){case 0:return!0;case 1:return!1;default:throw this.finishedErrors({code:a,jobId:e,command:"moveToWaitingChildren",state:"active"})}}getRateLimitTtlArgs(e){return[this.queue.keys.limiter,this.queue.keys.meta].concat([e??"0"])}async getRateLimitTtl(e){let t=await this.queue.client,n=this.getRateLimitTtlArgs(e);return this.execCommand(t,"getRateLimitTtl",n)}async cleanJobsInSet(e,t,n=0){let i=await this.queue.client;return this.execCommand(i,"cleanJobsInSet",[this.queue.toKey(e),this.queue.toKey("events"),this.queue.toKey("repeat"),this.queue.toKey(""),t,n,e])}getJobSchedulerArgs(e){return[this.queue.keys.repeat].concat([e])}async getJobScheduler(e){let t=await this.queue.client,n=this.getJobSchedulerArgs(e);return this.execCommand(t,"getJobScheduler",n)}retryJobArgs(e,t,n,i={}){let s=[this.queue.keys.active,this.queue.keys.wait,this.queue.keys.paused,this.queue.toKey(e),this.queue.keys.meta,this.queue.keys.events,this.queue.keys.delayed,this.queue.keys.prioritized,this.queue.keys.pc,this.queue.keys.marker,this.queue.keys.stalled],a=(t?"R":"L")+"PUSH";return s.concat([this.queue.toKey(""),Date.now(),a,e,n,i.fieldsToUpdate?et((0,oi.objectToFlatArray)(i.fieldsToUpdate)):void 0])}async retryJob(e,t,n="0",i={}){let s=await this.queue.client,a=this.retryJobArgs(e,t,n,i),o=await this.execCommand(s,"retryJob",a);if(o<0)throw this.finishedErrors({code:o,jobId:e,command:"retryJob",state:"active"})}moveJobsToWaitArgs(e,t,n){let i=[this.queue.toKey(""),this.queue.keys.events,this.queue.toKey(e),this.queue.toKey("wait"),this.queue.toKey("paused"),this.queue.keys.meta,this.queue.keys.active,this.queue.keys.marker],s=[t,n,e];return i.concat(s)}async retryJobs(e="failed",t=1e3,n=new Date().getTime()){let i=await this.queue.client,s=this.moveJobsToWaitArgs(e,t,n);return this.execCommand(i,"moveJobsToWait",s)}async promoteJobs(e=1e3){let t=await this.queue.client,n=this.moveJobsToWaitArgs("delayed",e,Number.MAX_VALUE);return this.execCommand(t,"moveJobsToWait",n)}async reprocessJob(e,t,n={}){let i=await this.queue.client,s=[this.queue.toKey(e.id),this.queue.keys.events,this.queue.toKey(t),this.queue.keys.wait,this.queue.keys.meta,this.queue.keys.paused,this.queue.keys.active,this.queue.keys.marker],a=[e.id,(e.opts.lifo?"R":"L")+"PUSH",t==="failed"?"failedReason":"returnvalue",t,n.resetAttemptsMade?"1":"0",n.resetAttemptsStarted?"1":"0"],o=await this.execCommand(i,"reprocessJob",s.concat(a));if(o!==1)throw this.finishedErrors({code:o,jobId:e.id,command:"reprocessJob",state:t})}async getMetrics(e,t=0,n=-1){let i=await this.queue.client,s=[this.queue.toKey(`metrics:${e}`),this.queue.toKey(`metrics:${e}:data`)],a=[t,n];return await this.execCommand(i,"getMetrics",s.concat(a))}async moveToActive(e,t,n){let i=this.queue.opts,s=this.queue.keys,a=[s.wait,s.active,s.prioritized,s.events,s.stalled,s.limiter,s.delayed,s.paused,s.meta,s.pc,s.marker],o=[s[""],Date.now(),et({token:t,lockDuration:i.lockDuration,limiter:i.limiter,name:n})],c=await this.execCommand(e,"moveToActive",a.concat(o));return _d(c)}async promote(e){let t=await this.queue.client,n=[this.queue.keys.delayed,this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized,this.queue.keys.active,this.queue.keys.pc,this.queue.keys.events,this.queue.keys.marker],i=[this.queue.toKey(""),e],s=await this.execCommand(t,"promote",n.concat(i));if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"promote",state:"delayed"})}moveStalledJobsToWaitArgs(){let e=this.queue.opts,t=[this.queue.keys.stalled,this.queue.keys.wait,this.queue.keys.active,this.queue.keys["stalled-check"],this.queue.keys.meta,this.queue.keys.paused,this.queue.keys.marker,this.queue.keys.events],n=[e.maxStalledCount,this.queue.toKey(""),Date.now(),e.stalledInterval];return t.concat(n)}async moveStalledJobsToWait(){let e=await this.queue.client,t=this.moveStalledJobsToWaitArgs();return this.execCommand(e,"moveStalledJobsToWait",t)}async moveJobFromActiveToWait(e,t="0"){let n=await this.queue.client,i=[this.queue.keys.active,this.queue.keys.wait,this.queue.keys.stalled,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.limiter,this.queue.keys.prioritized,this.queue.keys.marker,this.queue.keys.events],s=[e,t,this.queue.toKey(e)],a=await this.execCommand(n,"moveJobFromActiveToWait",i.concat(s));if(a<0)throw this.finishedErrors({code:a,jobId:e,command:"moveJobFromActiveToWait",state:"active"});return a}async obliterate(e){let t=await this.queue.client,n=[this.queue.keys.meta,this.queue.toKey("")],i=[e.count,e.force?"force":null],s=await this.execCommand(t,"obliterate",n.concat(i));if(s<0)switch(s){case-1:throw new Error("Cannot obliterate non-paused queue");case-2:throw new Error("Cannot obliterate queue with active jobs")}return s}async paginate(e,t){let n=await this.queue.client,i=[e],s=5,a=t.end>=0?t.end-t.start+1:1/0,o="0",c=0,l,u,d,p=[],f=[];do{let m=[t.start+p.length,t.end,o,c,s];t.fetchJobs&&m.push(1),[o,c,l,u,d]=await this.execCommand(n,"paginate",i.concat(m)),p=p.concat(l),d&&d.length&&(f=f.concat(d.map(oi.array2obj)))}while(o!="0"&&p.length<a);if(p.length&&Array.isArray(p[0])){let m=[];for(let y=0;y<p.length;y++){let[b,g]=p[y];try{m.push({id:b,v:JSON.parse(g)})}catch(x){m.push({id:b,err:x.message})}}return{cursor:o,items:m,total:u,jobs:f}}else return{cursor:o,items:p.map(m=>({id:m})),total:u,jobs:f}}finishedErrors({code:e,jobId:t,parentKey:n,command:i,state:s}){let a;switch(e){case Kr.ErrorCode.JobNotExist:a=new Error(`Missing key for job ${t}. ${i}`);break;case Kr.ErrorCode.JobLockNotExist:a=new Error(`Missing lock for job ${t}. ${i}`);break;case Kr.ErrorCode.JobNotInState:a=new Error(`Job ${t} is not in the ${s} state. ${i}`);break;case Kr.ErrorCode.JobPendingChildren:a=new Error(`Job ${t} has pending dependencies. ${i}`);break;case Kr.ErrorCode.ParentJobNotExist:a=new Error(`Missing key for parent job ${n}. ${i}`);break;case Kr.ErrorCode.JobLockMismatch:a=new Error(`Lock mismatch for job ${t}. Cmd ${i} from ${s}`);break;case Kr.ErrorCode.ParentJobCannotBeReplaced:a=new Error(`The parent job ${n} cannot be replaced. ${i}`);break;case Kr.ErrorCode.JobBelongsToJobScheduler:a=new Error(`Job ${t} belongs to a job scheduler and cannot be removed directly. ${i}`);break;case Kr.ErrorCode.JobHasFailedChildren:a=new Xte.UnrecoverableError(`Cannot complete job ${t} because it has at least one failed child. ${i}`);break;case Kr.ErrorCode.SchedulerJobIdCollision:a=new Error(`Cannot create job scheduler iteration - job ID already exists. ${i}`);break;case Kr.ErrorCode.SchedulerJobSlotsBusy:a=new Error(`Cannot create job scheduler iteration - current and next time slots already have jobs. ${i}`);break;default:a=new Error(`Unknown code ${e} error for ${t}. ${i}`)}return a.code=e,a}async removeOrphanedJobs(e,t,n){let i=await this.queue.client,s=[this.queue.toKey(""),t.length,...t,n.length,...n,...e];return this.execCommand(i,"removeOrphanedJobs",s)}};Qo.Scripts=o0;function _d(r){if(r){let e=[null,r[1],r[2],r[3]];return r[0]&&(e[0]=(0,oi.array2obj)(r[0])),e}return[]}});var Td=h(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});kd.createScripts=void 0;var Zte=c0(),ere=r=>new Zte.Scripts({keys:r.keys,client:r.client,get redisVersion(){return r.redisVersion},toKey:r.toKey,opts:r.opts,closing:r.closing,databaseType:r.databaseType});kd.createScripts=ere});var ha=h(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.Job=ci.PRIORITY_LIMIT=void 0;var CP=(Tt(),ht(kt)),tre=require("util"),Rt=$t(),rre=Td(),DP=Nb(),nre=Jv(),Lt=Mt(),ire=(0,tre.debuglog)("bull");ci.PRIORITY_LIMIT=2**21;var l0=class r{constructor(e,t,n,i={},s){this.queue=e,this.name=t,this.data=n,this.opts=i,this.id=s,this.progress=0,this.returnvalue=null,this.stacktrace=null,this.delay=0,this.priority=0,this.attemptsStarted=0,this.attemptsMade=0,this.stalledCounter=0;let a=this.opts,{repeatJobKey:o}=a,c=CP.__rest(a,["repeatJobKey"]);this.opts=Object.assign({attempts:0},c),this.delay=this.opts.delay,this.priority=this.opts.priority||0,this.repeatJobKey=o,this.timestamp=i.timestamp?i.timestamp:Date.now(),this.opts.backoff=DP.Backoffs.normalize(i.backoff),this.parentKey=(0,Rt.getParentKey)(i.parent),i.parent&&(this.parent={id:i.parent.id,queueKey:i.parent.queue},i.failParentOnFailure&&(this.parent.fpof=!0),i.removeDependencyOnFailure&&(this.parent.rdof=!0),i.ignoreDependencyOnFailure&&(this.parent.idof=!0),i.continueParentOnFailure&&(this.parent.cpof=!0)),this.debounceId=i.debounce?i.debounce.id:void 0,this.deduplicationId=i.deduplication?i.deduplication.id:this.debounceId,this.toKey=e.toKey.bind(e),this.createScripts(),this.queueQualifiedName=e.qualifiedName}static async create(e,t,n,i){let s=await e.client,a=new this(e,t,n,i,i&&i.jobId);return a.id=await a.addJob(s,{parentKey:a.parentKey,parentDependenciesKey:a.parentKey?`${a.parentKey}:dependencies`:""}),a}static async createBulk(e,t){let n=await e.client,i=t.map(o=>{var c;return new this(e,o.name,o.data,o.opts,(c=o.opts)===null||c===void 0?void 0:c.jobId)}),s=n.pipeline();for(let o of i)o.addJob(s,{parentKey:o.parentKey,parentDependenciesKey:o.parentKey?`${o.parentKey}:dependencies`:""});let a=await s.exec();for(let o=0;o<a.length;++o){let[c,l]=a[o];if(c)throw c;i[o].id=l}return i}static fromJSON(e,t,n){let i=JSON.parse(t.data||"{}"),s=r.optsFromJSON(t.opts),a=new this(e,t.name,i,s,t.id||n);return a.progress=JSON.parse(t.progress||"0"),a.delay=parseInt(t.delay),a.priority=parseInt(t.priority),a.timestamp=parseInt(t.timestamp),t.finishedOn&&(a.finishedOn=parseInt(t.finishedOn)),t.processedOn&&(a.processedOn=parseInt(t.processedOn)),t.rjk&&(a.repeatJobKey=t.rjk),t.deid&&(a.debounceId=t.deid,a.deduplicationId=t.deid),t.failedReason&&(a.failedReason=t.failedReason),a.attemptsStarted=parseInt(t.ats||"0"),a.attemptsMade=parseInt(t.attemptsMade||t.atm||"0"),a.stalledCounter=parseInt(t.stc||"0"),t.defa&&(a.deferredFailure=t.defa),a.stacktrace=sre(t.stacktrace),typeof t.returnvalue=="string"&&(a.returnvalue=PP(t.returnvalue)),t.parentKey?a.parentKey=t.parentKey:a.parentKey=void 0,t.parent?a.parent=JSON.parse(t.parent):a.parent=void 0,t.pb&&(a.processedBy=t.pb),t.nrjid&&(a.nextRepeatableJobId=t.nrjid),a}createScripts(){this.scripts=(0,rre.createScripts)(this.queue)}static optsFromJSON(e,t=Rt.optsDecodeMap){let n=JSON.parse(e||"{}"),i=Object.entries(n),s={};for(let a of i){let[o,c]=a;t[o]?s[t[o]]=c:o==="tm"?s.telemetry=Object.assign(Object.assign({},s.telemetry),{metadata:c}):o==="omc"?s.telemetry=Object.assign(Object.assign({},s.telemetry),{omitContext:c}):s[o]=c}return s}static async fromId(e,t){if(t){let i=await(await e.client).hgetall(e.toKey(t));return(0,Rt.isEmpty)(i)?void 0:this.fromJSON(e,i,t)}}static addJobLog(e,t,n,i){return e.scripts.addLog(t,n,i)}toJSON(){let e=this,{queue:t,scripts:n}=e;return CP.__rest(e,["queue","scripts"])}asJSON(){return(0,Rt.removeUndefinedFields)({id:this.id,name:this.name,data:JSON.stringify(typeof this.data>"u"?{}:this.data),opts:r.optsAsJSON(this.opts),parent:this.parent?Object.assign({},this.parent):void 0,parentKey:this.parentKey,progress:this.progress,attemptsMade:this.attemptsMade,attemptsStarted:this.attemptsStarted,stalledCounter:this.stalledCounter,finishedOn:this.finishedOn,processedOn:this.processedOn,timestamp:this.timestamp,failedReason:JSON.stringify(this.failedReason),stacktrace:JSON.stringify(this.stacktrace),debounceId:this.debounceId,deduplicationId:this.deduplicationId,repeatJobKey:this.repeatJobKey,returnvalue:JSON.stringify(this.returnvalue),nrjid:this.nextRepeatableJobId})}static optsAsJSON(e={},t=Rt.optsEncodeMap){let n=Object.entries(e),i={};for(let[s,a]of n)if(!(typeof a>"u"))if(s in t){let c=t[s];i[c]=a}else s==="telemetry"?(a.metadata!==void 0&&(i.tm=a.metadata),a.omitContext!==void 0&&(i.omc=a.omitContext)):i[s]=a;return i}asJSONSandbox(){return Object.assign(Object.assign({},this.asJSON()),{queueName:this.queueName,queueQualifiedName:this.queueQualifiedName,prefix:this.prefix})}updateData(e){return this.data=e,this.scripts.updateData(this,e)}async updateProgress(e){this.progress=e,await this.scripts.updateProgress(this.id,e),this.queue.emit("progress",this,e)}async log(e){return r.addJobLog(this.queue,this.id,e,this.opts.keepLogs)}async removeChildDependency(){return await this.scripts.removeChildDependency(this.id,this.parentKey)?(this.parent=void 0,this.parentKey=void 0,!0):!1}async clearLogs(e){let t=await this.queue.client,n=this.toKey(this.id)+":logs";e?await t.ltrim(n,-e,-1):await t.del(n)}async remove({removeChildren:e=!0}={}){await this.queue.waitUntilReady();let t=this.queue,n=this;if(await this.scripts.remove(n.id,e))t.emit("removed",n);else throw new Error(`Job ${this.id} could not be removed because it is locked by another worker`)}async removeUnprocessedChildren(){let e=this.id;await this.scripts.removeUnprocessedChildren(e)}extendLock(e,t){return this.scripts.extendLock(this.id,e,t)}async moveToCompleted(e,t,n=!0){return this.queue.trace(Lt.SpanKind.INTERNAL,"complete",this.queue.name,async i=>{this.setSpanJobAttributes(i),await this.queue.waitUntilReady(),this.returnvalue=e||void 0;let s=(0,Rt.tryCatch)(JSON.stringify,JSON,[e]);if(s===Rt.errorObject)throw Rt.errorObject.value;let a=this.scripts.moveToCompletedArgs(this,s,this.opts.removeOnComplete,t,n),o=await this.scripts.moveToFinished(this.id,a);return this.finishedOn=a[this.scripts.moveToFinishedKeys.length+1],this.attemptsMade+=1,this.recordJobMetrics("completed"),o})}async moveToWait(e){let t=await this.scripts.moveJobFromActiveToWait(this.id,e);return this.recordJobMetrics("waiting"),t}async shouldRetryJob(e){if(this.attemptsMade+1<this.opts.attempts&&!this.discarded&&!(e instanceof nre.UnrecoverableError||e.name=="UnrecoverableError")){let t=this.queue.opts,n=await DP.Backoffs.calculate(this.opts.backoff,this.attemptsMade+1,e,this,t.settings&&t.settings.backoffStrategy);return[n!=-1,n==-1?0:n]}else return[!1,0]}async moveToFailed(e,t,n=!1){this.failedReason=e?.message;let[i,s]=await this.shouldRetryJob(e);return this.queue.trace(Lt.SpanKind.INTERNAL,this.getSpanOperation(i,s),this.queue.name,async(a,o)=>{var c,l;this.setSpanJobAttributes(a);let u;!(!((l=(c=this.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0)&&l.omitContext)&&o&&(u=o);let d;this.updateStacktrace(e);let p={failedReason:this.failedReason,stacktrace:JSON.stringify(this.stacktrace),tm:u},f;if(i)s?(d=await this.scripts.moveToDelayed(this.id,Date.now(),s,t,{fieldsToUpdate:p,fetchNext:n}),this.recordJobMetrics("delayed")):(d=await this.scripts.retryJob(this.id,this.opts.lifo,t,{fieldsToUpdate:p}),this.recordJobMetrics("retried"));else{let m=this.scripts.moveToFailedArgs(this,this.failedReason,this.opts.removeOnFail,t,n,p);d=await this.scripts.moveToFinished(this.id,m),f=m[this.scripts.moveToFinishedKeys.length+1],this.recordJobMetrics("failed")}return f&&typeof f=="number"&&(this.finishedOn=f),s&&typeof s=="number"&&(this.delay=s),this.attemptsMade+=1,d})}getSpanOperation(e,t){return e?t?"delay":"retry":"fail"}recordJobMetrics(e){var t,n;let i=(n=(t=this.queue.opts)===null||t===void 0?void 0:t.telemetry)===null||n===void 0?void 0:n.meter;if(!i)return;let s={[Lt.TelemetryAttributes.QueueName]:this.queue.name,[Lt.TelemetryAttributes.JobName]:this.name,[Lt.TelemetryAttributes.JobStatus]:e},o={completed:Lt.MetricNames.JobsCompleted,failed:Lt.MetricNames.JobsFailed,delayed:Lt.MetricNames.JobsDelayed,retried:Lt.MetricNames.JobsRetried,waiting:Lt.MetricNames.JobsWaiting,"waiting-children":Lt.MetricNames.JobsWaitingChildren}[e];if(i.createCounter(o,{description:`Number of jobs ${e}`,unit:"1"}).add(1,s),this.processedOn){let l=Date.now()-this.processedOn;i.createHistogram(Lt.MetricNames.JobDuration,{description:"Job processing duration",unit:"ms"}).record(l,s)}}isCompleted(){return this.isInZSet("completed")}isFailed(){return this.isInZSet("failed")}isDelayed(){return this.isInZSet("delayed")}isWaitingChildren(){return this.isInZSet("waiting-children")}isActive(){return this.isInList("active")}async isWaiting(){return await this.isInList("wait")||await this.isInList("paused")}get queueName(){return this.queue.name}get prefix(){return this.queue.opts.prefix}getState(){return this.scripts.getState(this.id)}async changeDelay(e){await this.scripts.changeDelay(this.id,e),this.delay=e}async changePriority(e){await this.scripts.changePriority(this.id,e.priority,e.lifo),this.priority=e.priority||0}async getChildrenValues(){let t=await(await this.queue.client).hgetall(this.toKey(`${this.id}:processed`));if(t)return(0,Rt.parseObjectValues)(t)}async getIgnoredChildrenFailures(){return(await this.queue.client).hgetall(this.toKey(`${this.id}:failed`))}async getFailedChildrenValues(){return(await this.queue.client).hgetall(this.toKey(`${this.id}:failed`))}async getDependencies(e={}){let n=(await this.queue.client).multi();if(!e.processed&&!e.unprocessed&&!e.ignored&&!e.failed){n.hgetall(this.toKey(`${this.id}:processed`)),n.smembers(this.toKey(`${this.id}:dependencies`)),n.hgetall(this.toKey(`${this.id}:failed`)),n.zrange(this.toKey(`${this.id}:unsuccessful`),0,-1);let[[i,s],[a,o],[c,l],[u,d]]=await n.exec();return{processed:(0,Rt.parseObjectValues)(s),unprocessed:o,failed:d,ignored:l}}else{let i={cursor:0,count:20},s=[];if(e.processed){s.push("processed");let y=Object.assign(Object.assign({},i),e.processed);n.hscan(this.toKey(`${this.id}:processed`),y.cursor,"COUNT",y.count)}if(e.unprocessed){s.push("unprocessed");let y=Object.assign(Object.assign({},i),e.unprocessed);n.sscan(this.toKey(`${this.id}:dependencies`),y.cursor,"COUNT",y.count)}if(e.ignored){s.push("ignored");let y=Object.assign(Object.assign({},i),e.ignored);n.hscan(this.toKey(`${this.id}:failed`),y.cursor,"COUNT",y.count)}let a;if(e.failed){s.push("failed");let y=Object.assign(Object.assign({},i),e.failed);a=y.cursor+y.count,n.zrange(this.toKey(`${this.id}:unsuccessful`),y.cursor,y.count-1)}let o=await n.exec(),c,l,u,d,p,f,m;return s.forEach((y,b)=>{switch(y){case"processed":{c=o[b][1][0];let g=o[b][1][1],x={};for(let I=0;I<g.length;++I)I%2&&(x[g[I-1]]=JSON.parse(g[I]));l=x;break}case"failed":{p=o[b][1];break}case"ignored":{f=o[b][1][0];let g=o[b][1][1],x={};for(let I=0;I<g.length;++I)I%2&&(x[g[I-1]]=g[I]);m=x;break}case"unprocessed":{u=o[b][1][0],d=o[b][1][1];break}}}),Object.assign(Object.assign(Object.assign(Object.assign({},c?{processed:l,nextProcessedCursor:Number(c)}:{}),f?{ignored:m,nextIgnoredCursor:Number(f)}:{}),a?{failed:p,nextFailedCursor:a}:{}),u?{unprocessed:d,nextUnprocessedCursor:Number(u)}:{})}}async getDependenciesCount(e={}){let t=[];Object.entries(e).forEach(([a,o])=>{o&&t.push(a)});let n=t.length?t:["processed","unprocessed","ignored","failed"],i=await this.scripts.getDependencyCounts(this.id,n),s={};return i.forEach((a,o)=>{s[`${n[o]}`]=a||0}),s}async waitUntilFinished(e,t){await this.queue.waitUntilReady();let n=this.id;return new Promise(async(i,s)=>{let a;t&&(a=setTimeout(()=>c(`Job wait ${this.name} timed out before finishing, no finish notification arrived after ${t}ms (id=${n})`),t));function o(y){d(),i(y.returnvalue)}function c(y){d(),s(new Error(y.failedReason||y))}let l=`completed:${n}`,u=`failed:${n}`;e.on(l,o),e.on(u,c),this.queue.on("closing",c);let d=()=>{clearInterval(a),e.removeListener(l,o),e.removeListener(u,c),this.queue.removeListener("closing",c)};await e.waitUntilReady();let[p,f]=await this.scripts.isFinished(n,!0);p!=0&&(p==-1||p==2?c({failedReason:f}):o({returnvalue:PP(f)}))})}async moveToDelayed(e,t){let n=Date.now(),i=e-n,s=i>0?i:0;await this.scripts.moveToDelayed(this.id,n,s,t,{skipAttempt:!0}),this.delay=s,this.recordJobMetrics("delayed")}async moveToWaitingChildren(e,t={}){let n=await this.scripts.moveToWaitingChildren(this.id,e,t);return n&&this.recordJobMetrics("waiting-children"),n}async promote(){let e=this.id;await this.scripts.promote(e),this.delay=0}async retry(e="failed",t={}){await this.scripts.reprocessJob(this,e,t),this.failedReason=null,this.finishedOn=null,this.processedOn=null,this.returnvalue=null,t.resetAttemptsMade&&(this.attemptsMade=0),t.resetAttemptsStarted&&(this.attemptsStarted=0)}discard(){this.discarded=!0}async isInZSet(e){return await(await this.queue.client).zscore(this.queue.toKey(e),this.id)!==null}async isInList(e){return this.scripts.isJobInList(this.queue.toKey(e),this.id)}addJob(e,t){let n=this.asJSON();return this.validateOptions(n),this.scripts.addJob(e,n,n.opts,this.id,t)}async removeDeduplicationKey(){return this.deduplicationId?await this.scripts.removeDeduplicationKey(this.deduplicationId,this.id)>0:!1}validateOptions(e){var t,n,i,s,a,o,c,l;let u=["removeDependencyOnFailure","failParentOnFailure","continueParentOnFailure","ignoreDependencyOnFailure"];if(this.opts.sizeLimit&&(0,Rt.lengthInUtf8Bytes)(e.data)>this.opts.sizeLimit)throw new Error(`The size of job ${this.name} exceeds the limit ${this.opts.sizeLimit} bytes`);if(this.opts.delay&&this.opts.repeat&&!(!((t=this.opts.repeat)===null||t===void 0)&&t.count))throw new Error("Delay and repeat options cannot be used together");let p=u.filter(f=>this.opts[f]);if(p.length>1){let f=p.join(", ");throw new Error(`The following options cannot be used together: ${f}`)}if(!((n=this.opts)===null||n===void 0)&&n.jobId){if(`${parseInt(this.opts.jobId,10)}`===((i=this.opts)===null||i===void 0?void 0:i.jobId))throw new Error("Custom Id cannot be integers");if(!((s=this.opts)===null||s===void 0)&&s.jobId.includes(":")&&((o=(a=this.opts)===null||a===void 0?void 0:a.jobId)===null||o===void 0?void 0:o.split(":").length)!==3)throw new Error("Custom Id cannot contain :")}if(this.opts.priority){if(Math.trunc(this.opts.priority)!==this.opts.priority)throw new Error("Priority should not be float");if(this.opts.priority>ci.PRIORITY_LIMIT)throw new Error(`Priority should be between 0 and ${ci.PRIORITY_LIMIT}`)}if(this.opts.deduplication){if(!(!((c=this.opts.deduplication)===null||c===void 0)&&c.id))throw new Error("Deduplication id must be provided");if(this.parentKey)throw new Error("Deduplication and parent options cannot be used together")}if(this.opts.debounce){if(!(!((l=this.opts.debounce)===null||l===void 0)&&l.id))throw new Error("Debounce id must be provided");if(this.parentKey)throw new Error("Debounce and parent options cannot be used together")}if(typeof this.opts.backoff=="object"&&typeof this.opts.backoff.jitter=="number"&&(this.opts.backoff.jitter<0||this.opts.backoff.jitter>1))throw new Error("Jitter should be between 0 and 1")}updateStacktrace(e){this.stacktrace=this.stacktrace||[],e?.stack&&(this.stacktrace.push(e.stack),this.opts.stackTraceLimit===0?this.stacktrace=[]:this.opts.stackTraceLimit&&(this.stacktrace=this.stacktrace.slice(-this.opts.stackTraceLimit)))}setSpanJobAttributes(e){e?.setAttributes({[Lt.TelemetryAttributes.JobName]:this.name,[Lt.TelemetryAttributes.JobId]:this.id})}};ci.Job=l0;function sre(r){if(!r)return[];let e=(0,Rt.tryCatch)(JSON.parse,JSON,[r]);return e===Rt.errorObject||!(e instanceof Array)?[]:e}function PP(r){let e=(0,Rt.tryCatch)(JSON.parse,JSON,[r]);if(e!==Rt.errorObject)return e;ire("corrupted returnvalue: "+r,e)}});var Kd=h(Ad=>{"use strict";Object.defineProperty(Ad,"__esModule",{value:!0});Ad.QueueKeys=void 0;var u0=class{constructor(e="bull"){this.prefix=e}getKeys(e){let t={};return["","active","wait","waiting-children","paused","id","delayed","prioritized","stalled-check","completed","failed","stalled","repeat","limiter","meta","events","pc","marker","de"].forEach(n=>{t[n]=this.toKey(e,n)}),t}toKey(e,t){return`${this.getQueueQualifiedName(e)}:${t}`}getQueueQualifiedName(e){return`${this.prefix}:${e}`}};Ad.QueueKeys=u0});var MP=h(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});jd.addDelayedJob=void 0;var are=`--[[
Adds a delayed job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- computes timestamp.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
Input:
KEYS[1] 'marker',
KEYS[2] 'meta'
KEYS[3] 'id'
KEYS[4] 'delayed'
KEYS[5] 'completed'
KEYS[6] events stream key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (use custom instead of one generated automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[2]
local idKey = KEYS[3]
local delayedKey = KEYS[4]
local completedKey = KEYS[5]
local eventsKey = KEYS[6]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts)}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local opts = cmsgpack.unpack(ARGV[3])
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2],
opts, timestamp, parentKey, parentData, repeatJobKey)
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, KEYS[1], delay)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId .. "" -- convert to string
`;jd.addDelayedJob={name:"addDelayedJob",content:are,keys:6}});var LP=h(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});Od.addJobScheduler=void 0;var ore=`--[[
Adds a job scheduler, i.e. a job factory that creates jobs based on a given schedule (repeat options).
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed' key
KEYS[3] 'wait' key
KEYS[4] 'paused' key
KEYS[5] 'meta' key
KEYS[6] 'prioritized' key
KEYS[7] 'marker' key
KEYS[8] 'id' key
KEYS[9] 'events' key
KEYS[10] 'pc' priority counter
KEYS[11] 'active' key
ARGV[1] next milliseconds
ARGV[2] msgpacked options
[1] name
[2] tz?
[3] pattern?
[4] endDate?
[5] every?
ARGV[3] jobs scheduler id
ARGV[4] Json stringified template data
ARGV[5] mspacked template opts
ARGV[6] msgpacked delayed opts
ARGV[7] timestamp
ARGV[8] prefix key
ARGV[9] producer key
Output:
repeatableKey - OK
]] local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local waitKey = KEYS[3]
local pausedKey = KEYS[4]
local metaKey = KEYS[5]
local prioritizedKey = KEYS[6]
local eventsKey = KEYS[9]
local nextMillis = ARGV[1]
local jobSchedulerId = ARGV[3]
local templateOpts = cmsgpack.unpack(ARGV[5])
local now = tonumber(ARGV[7])
local prefixKey = ARGV[8]
local jobOpts = cmsgpack.unpack(ARGV[6])
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function addJobFromScheduler(jobKey, jobId, opts, waitKey, pausedKey, activeKey, metaKey,
prioritizedKey, priorityCounter, delayedKey, markerKey, eventsKey, name, maxEvents, timestamp,
data, jobSchedulerId, repeatDelay)
opts['delay'] = repeatDelay
opts['jobId'] = jobId
storeAndEnqueueJob(eventsKey, jobKey, jobId, name, data, opts,
timestamp, nil, nil, jobSchedulerId, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounter, delayedKey, markerKey)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePaused(queueMetaKey)
return rcall("HEXISTS", queueMetaKey, "paused") == 1
end
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
--[[
Function to store a job scheduler
]]
local function storeJobScheduler(schedulerId, schedulerKey, repeatKey, nextMillis, opts,
templateData, templateOpts)
rcall("ZADD", repeatKey, nextMillis, schedulerId)
local optionalValues = {}
if opts['tz'] then
table.insert(optionalValues, "tz")
table.insert(optionalValues, opts['tz'])
end
if opts['limit'] then
table.insert(optionalValues, "limit")
table.insert(optionalValues, opts['limit'])
end
if opts['pattern'] then
table.insert(optionalValues, "pattern")
table.insert(optionalValues, opts['pattern'])
end
if opts['startDate'] then
table.insert(optionalValues, "startDate")
table.insert(optionalValues, opts['startDate'])
end
if opts['endDate'] then
table.insert(optionalValues, "endDate")
table.insert(optionalValues, opts['endDate'])
end
if opts['every'] then
table.insert(optionalValues, "every")
table.insert(optionalValues, opts['every'])
end
if opts['offset'] then
table.insert(optionalValues, "offset")
table.insert(optionalValues, opts['offset'])
else
local offset = rcall("HGET", schedulerKey, "offset")
if offset then
table.insert(optionalValues, "offset")
table.insert(optionalValues, tonumber(offset))
end
end
local jsonTemplateOpts = cjson.encode(templateOpts)
if jsonTemplateOpts and jsonTemplateOpts ~= '{}' then
table.insert(optionalValues, "opts")
table.insert(optionalValues, jsonTemplateOpts)
end
if templateData and templateData ~= '{}' then
table.insert(optionalValues, "data")
table.insert(optionalValues, templateData)
end
table.insert(optionalValues, "ic")
table.insert(optionalValues, rcall("HGET", schedulerKey, "ic") or 1)
rcall("DEL", schedulerKey) -- remove all attributes and then re-insert new ones
rcall("HMSET", schedulerKey, "name", opts['name'], unpack(optionalValues))
end
local function getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
local nextMillis
if not prevMillis then
if startDate then
-- Assuming startDate is passed as milliseconds from JavaScript
nextMillis = tonumber(startDate)
nextMillis = nextMillis > now and nextMillis or now
else
nextMillis = now
-- For the first iteration with no startDate and an explicit
-- offset, align nextMillis to the next offset slot strictly
-- after now. Without this the user-supplied offset is
-- recorded but ignored, and the first job fires at now
-- instead of the next aligned timestamp (issue #3705).
if offset and offset > 0 then
local aligned = math.floor(nextMillis / every) * every + offset
if aligned <= nextMillis then
aligned = aligned + every
end
nextMillis = aligned
end
end
else
nextMillis = prevMillis + every
-- check if we may have missed some iterations
if nextMillis < now then
nextMillis = math.floor(now / every) * every + every + (offset or 0)
end
end
if not offset or offset == 0 then
local timeSlot = math.floor(nextMillis / every) * every;
offset = nextMillis - timeSlot;
end
-- Return a tuple nextMillis, offset
return math.floor(nextMillis), math.floor(offset)
end
-- If we are overriding a repeatable job we must delete the delayed job for
-- the next iteration.
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
local maxEvents = getOrSetMaxEvents(metaKey)
local templateData = ARGV[4]
local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
if prevMillis then
prevMillis = tonumber(prevMillis)
end
local schedulerOpts = cmsgpack.unpack(ARGV[2])
local every = schedulerOpts['every']
-- For backwards compatibility we also check the offset from the job itself.
-- could be removed in future major versions.
local jobOffset = jobOpts['repeat'] and jobOpts['repeat']['offset'] or 0
local offset = schedulerOpts['offset'] or jobOffset or 0
local newOffset = offset
local updatedEvery = false
if every then
-- if we changed the 'every' value we need to reset millis to nil
local millis = prevMillis
if prevMillis then
local prevEvery = tonumber(rcall("HGET", schedulerKey, "every"))
if prevEvery ~= every then
millis = nil
updatedEvery = true
end
end
local startDate = schedulerOpts['startDate']
nextMillis, newOffset = getJobSchedulerEveryNextMillis(millis, every, now, offset, startDate)
end
local function removeJobFromScheduler(prefixKey, delayedKey, prioritizedKey, waitKey, pausedKey, jobId, metaKey,
eventsKey)
if rcall("ZSCORE", delayedKey, jobId) then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
rcall("ZREM", delayedKey, jobId)
return true
elseif rcall("ZSCORE", prioritizedKey, jobId) then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
rcall("ZREM", prioritizedKey, jobId)
return true
else
local pausedOrWaitKey = waitKey
if isQueuePaused(metaKey) then
pausedOrWaitKey = pausedKey
end
if rcall("LREM", pausedOrWaitKey, 1, jobId) > 0 then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
return true
end
end
return false
end
local removedPrevJob = false
if prevMillis then
local currentJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
local currentJobKey = schedulerKey .. ":" .. prevMillis
-- In theory it should always exist the currentJobKey if there is a prevMillis unless something has
-- gone really wrong.
if rcall("EXISTS", currentJobKey) == 1 then
removedPrevJob = removeJobFromScheduler(prefixKey, delayedKey, prioritizedKey, waitKey, pausedKey, currentJobId,
metaKey, eventsKey)
end
end
if removedPrevJob then
-- The jobs has been removed and we want to replace it, so lets use the same millis.
if every and not updatedEvery then
nextMillis = prevMillis
end
else
-- Special case where no job was removed, and we need to add the next iteration.
schedulerOpts['offset'] = newOffset
end
-- Check for job ID collision with existing jobs (in any state)
local jobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
local jobKey = prefixKey .. jobId
-- If there's already a job with this ID, in a state
-- that is not updatable (active, completed, failed) we must
-- handle the collision
local hasCollision = false
if rcall("EXISTS", jobKey) == 1 then
if every then
-- For 'every' case: try next time slot to avoid collision
local nextSlotMillis = nextMillis + every
local nextSlotJobId = "repeat:" .. jobSchedulerId .. ":" .. nextSlotMillis
local nextSlotJobKey = prefixKey .. nextSlotJobId
if rcall("EXISTS", nextSlotJobKey) == 0 then
-- Next slot is free, use it
nextMillis = nextSlotMillis
jobId = nextSlotJobId
else
-- Next slot also has a job, return error code
return -11 -- SchedulerJobSlotsBusy
end
else
hasCollision = true
end
end
local delay = nextMillis - now
-- Fast Clamp delay to minimum of 0
if delay < 0 then
delay = 0
end
local nextJobKey = schedulerKey .. ":" .. nextMillis
if not hasCollision or removedPrevJob then
-- jobId already calculated above during collision check
storeJobScheduler(jobSchedulerId, schedulerKey, repeatKey, nextMillis, schedulerOpts, templateData, templateOpts)
rcall("INCR", KEYS[8])
addJobFromScheduler(nextJobKey, jobId, jobOpts, waitKey, pausedKey, KEYS[11], metaKey, prioritizedKey, KEYS[10],
delayedKey, KEYS[7], eventsKey, schedulerOpts['name'], maxEvents, now, templateData, jobSchedulerId, delay)
elseif hasCollision then
-- For 'pattern' case: return error code
return -10 -- SchedulerJobIdCollision
end
if ARGV[9] ~= "" then
rcall("HSET", ARGV[9], "nrjid", jobId)
end
return {jobId .. "", delay}
`;Od.addJobScheduler={name:"addJobScheduler",content:ore,keys:11}});var NP=h(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});Rd.addLog=void 0;var cre=`--[[
Add job log
Input:
KEYS[1] job id key
KEYS[2] job logs key
ARGV[1] id
ARGV[2] log
ARGV[3] keepLogs
Output:
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
local logCount = rcall("RPUSH", KEYS[2], ARGV[2])
if ARGV[3] ~= '' then
local keepLogs = tonumber(ARGV[3])
rcall("LTRIM", KEYS[2], -keepLogs, -1)
return math.min(keepLogs, logCount)
end
return logCount
else
return -1
end
`;Rd.addLog={name:"addLog",content:cre,keys:2}});var qP=h(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.addParentJob=void 0;var lre=`--[[
Adds a parent job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- adds the job to the waiting-children zset
Input:
KEYS[1] 'meta'
KEYS[2] 'id'
KEYS[3] 'delayed'
KEYS[4] 'waiting-children'
KEYS[5] 'completed'
KEYS[6] events stream key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[1]
local idKey = KEYS[2]
local delayedKey = KEYS[3]
local completedKey = KEYS[5]
local eventsKey = KEYS[6]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts)}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationId = opts['de'] and opts['de']['id']
if deduplicationId then
local deduplicationJobId = deduplicateJobWithoutReplace(deduplicationId, opts['de'],
jobId, deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
end
-- Store the job.
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
parentKey, parentData, repeatJobKey)
local waitChildrenKey = KEYS[4]
rcall("ZADD", waitChildrenKey, timestamp, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"waiting-children", "jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId .. "" -- convert to string
`;Cd.addParentJob={name:"addParentJob",content:lre,keys:6}});var FP=h(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});Dd.addPrioritizedJob=void 0;var ure=`--[[
Adds a prioritized job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- Adds the job to the "added" list so that workers gets notified.
Input:
KEYS[1] 'marker',
KEYS[2] 'meta'
KEYS[3] 'id'
KEYS[4] 'prioritized'
KEYS[5] 'delayed'
KEYS[6] 'completed'
KEYS[7] 'active'
KEYS[8] events stream key
KEYS[9] 'pc' priority counter
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[2]
local idKey = KEYS[3]
local priorityKey = KEYS[4]
local completedKey = KEYS[6]
local activeKey = KEYS[7]
local eventsKey = KEYS[8]
local priorityCounterKey = KEYS[9]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts)}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[5],
deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
-- Store the job.
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2],
opts, timestamp, parentKey, parentData,
repeatJobKey)
-- Add the job to the prioritized set
local isPausedOrMaxed = isQueuePausedOrMaxed(metaKey, activeKey)
addJobWithPriority( KEYS[1], priorityKey, priority, jobId, priorityCounterKey, isPausedOrMaxed)
-- Emit waiting event
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId .. "" -- convert to string
`;Dd.addPrioritizedJob={name:"addPrioritizedJob",content:ure,keys:9}});var JP=h(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.addRepeatableJob=void 0;var dre=`--[[
Adds a repeatable job
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed' key
ARGV[1] next milliseconds
ARGV[2] msgpacked options
[1] name
[2] tz?
[3] pattern?
[4] endDate?
[5] every?
ARGV[3] legacy custom key TODO: remove this logic in next breaking change
ARGV[4] custom key
ARGV[5] prefix key
Output:
repeatableKey - OK
]]
local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local nextMillis = ARGV[1]
local legacyCustomKey = ARGV[3]
local customKey = ARGV[4]
local prefixKey = ARGV[5]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function storeRepeatableJob(repeatKey, customKey, nextMillis, rawOpts)
rcall("ZADD", repeatKey, nextMillis, customKey)
local opts = cmsgpack.unpack(rawOpts)
local optionalValues = {}
if opts['tz'] then
table.insert(optionalValues, "tz")
table.insert(optionalValues, opts['tz'])
end
if opts['pattern'] then
table.insert(optionalValues, "pattern")
table.insert(optionalValues, opts['pattern'])
end
if opts['endDate'] then
table.insert(optionalValues, "endDate")
table.insert(optionalValues, opts['endDate'])
end
if opts['every'] then
table.insert(optionalValues, "every")
table.insert(optionalValues, opts['every'])
end
rcall("HMSET", repeatKey .. ":" .. customKey, "name", opts['name'],
unpack(optionalValues))
return customKey
end
-- If we are overriding a repeatable job we must delete the delayed job for
-- the next iteration.
local prevMillis = rcall("ZSCORE", repeatKey, customKey)
if prevMillis then
local delayedJobId = "repeat:" .. customKey .. ":" .. prevMillis
local nextDelayedJobId = repeatKey .. ":" .. customKey .. ":" .. nextMillis
if rcall("ZSCORE", delayedKey, delayedJobId)
and rcall("EXISTS", nextDelayedJobId) ~= 1 then
removeJob(delayedJobId, true, prefixKey, true --[[remove debounce key]])
rcall("ZREM", delayedKey, delayedJobId)
end
end
-- Keep backwards compatibility with old repeatable jobs (<= 3.0.0)
if rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
return storeRepeatableJob(repeatKey, legacyCustomKey, nextMillis, ARGV[2])
end
return storeRepeatableJob(repeatKey, customKey, nextMillis, ARGV[2])
`;Pd.addRepeatableJob={name:"addRepeatableJob",content:dre,keys:2}});var UP=h(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.addStandardJob=void 0;var pre=`--[[
Adds a job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- if delayed:
- computes timestamp.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
- if not delayed
- Adds the jobId to the wait/paused list in one of three ways:
- LIFO
- FIFO
- prioritized.
- Adds the job to the "added" list so that workers gets notified.
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'meta'
KEYS[4] 'id'
KEYS[5] 'completed'
KEYS[6] 'delayed'
KEYS[7] 'active'
KEYS[8] events stream key
KEYS[9] marker key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local eventsKey = KEYS[8]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts)}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", KEYS[4])
local metaKey = KEYS[3]
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, KEYS[5], eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[6],
deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
-- Store the job.
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
parentKey, parentData, repeatJobKey)
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[1], KEYS[2])
-- LIFO or FIFO
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, KEYS[9], pushCmd, isPausedOrMaxed, jobId)
-- Emit waiting event
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId .. "" -- convert to string
`;Md.addStandardJob={name:"addStandardJob",content:pre,keys:9}});var GP=h(Ld=>{"use strict";Object.defineProperty(Ld,"__esModule",{value:!0});Ld.changeDelay=void 0;var fre=`--[[
Change job delay when it is in delayed set.
Input:
KEYS[1] delayed key
KEYS[2] meta key
KEYS[3] marker key
KEYS[4] events stream
ARGV[1] delay
ARGV[2] timestamp
ARGV[3] the id of the job
ARGV[4] job key
Output:
0 - OK
-1 - Missing job.
-3 - Job not in delayed set.
Events:
- delayed key.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
if rcall("EXISTS", ARGV[4]) == 1 then
local jobId = ARGV[3]
local delay = tonumber(ARGV[1])
local score, delayedTimestamp = getDelayedScore(KEYS[1], ARGV[2], delay)
local numRemovedElements = rcall("ZREM", KEYS[1], jobId)
if numRemovedElements < 1 then
return -3
end
rcall("HSET", ARGV[4], "delay", delay)
rcall("ZADD", KEYS[1], score, jobId)
local maxEvents = getOrSetMaxEvents(KEYS[2])
rcall("XADD", KEYS[4], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(KEYS[3], KEYS[1])
return 0
else
return -1
end`;Ld.changeDelay={name:"changeDelay",content:fre,keys:4}});var BP=h(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});Nd.changePriority=void 0;var mre=`--[[
Change job priority
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'meta'
KEYS[4] 'prioritized'
KEYS[5] 'active'
KEYS[6] 'pc' priority counter
KEYS[7] 'marker'
ARGV[1] priority value
ARGV[2] prefix key
ARGV[3] job id
ARGV[4] lifo
Output:
0 - OK
-1 - Missing job
]]
local jobId = ARGV[3]
local jobKey = ARGV[2] .. jobId
local priority = tonumber(ARGV[1])
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to push back job considering priority in front of same prioritized jobs.
]]
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
-- in order to put it at front of same prioritized jobs
-- we consider prioritized counter as 0
local score = priority * 0x100000000
rcall("ZADD", prioritizedKey, score, jobId)
end
local function reAddJobWithNewPriority( prioritizedKey, markerKey, targetKey,
priorityCounter, lifo, priority, jobId, isPausedOrMaxed)
if priority == 0 then
local pushCmd = lifo and 'RPUSH' or 'LPUSH'
addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
else
if lifo then
pushBackJobWithPriority(prioritizedKey, priority, jobId)
else
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounter, isPausedOrMaxed)
end
end
end
if rcall("EXISTS", jobKey) == 1 then
local metaKey = KEYS[3]
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[5], KEYS[1], KEYS[2])
local prioritizedKey = KEYS[4]
local priorityCounterKey = KEYS[6]
local markerKey = KEYS[7]
-- Re-add with the new priority
if rcall("ZREM", prioritizedKey, jobId) > 0 then
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
elseif rcall("LREM", target, -1, jobId) > 0 then
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
end
rcall("HSET", jobKey, "priority", priority)
return 0
else
return -1
end
`;Nd.changePriority={name:"changePriority",content:mre,keys:7}});var $P=h(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.cleanJobsInSet=void 0;var hre=`--[[
Remove jobs from the specific set.
Input:
KEYS[1] set key,
KEYS[2] events stream key
KEYS[3] repeat key
ARGV[1] jobKey prefix
ARGV[2] timestamp
ARGV[3] limit the number of jobs to be removed. 0 is unlimited
ARGV[4] set name, can be any of 'wait', 'active', 'paused', 'delayed', 'completed', or 'failed'
]]
local rcall = redis.call
local repeatKey = KEYS[3]
local rangeStart = 0
local rangeEnd = -1
local limit = tonumber(ARGV[3])
-- If we're only deleting _n_ items, avoid retrieving all items
-- for faster performance
--
-- Start from the tail of the list, since that's where oldest elements
-- are generally added for FIFO lists
if limit > 0 then
rangeStart = -1 - limit + 1
rangeEnd = -1
end
-- Includes
--[[
Function to clean job list.
Returns jobIds and deleted count number.
]]
-- Includes
--[[
Function to get the latest saved timestamp.
]]
local function getTimestamp(jobKey, attributes)
if #attributes == 1 then
return rcall("HGET", jobKey, attributes[1])
end
local jobTs
for _, ts in ipairs(rcall("HMGET", jobKey, unpack(attributes))) do
if (ts) then
jobTs = ts
break
end
end
return jobTs
end
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd,
timestamp, isWaiting, jobSchedulersKey)
local jobs = rcall("LRANGE", listKey, rangeStart, rangeEnd)
local deleted = {}
local deletedCount = 0
local jobTS
local deletionMarker = ''
local jobIdsLen = #jobs
for i, job in ipairs(jobs) do
if limit > 0 and deletedCount >= limit then
break
end
local jobKey = jobKeyPrefix .. job
if (isWaiting or rcall("EXISTS", jobKey .. ":lock") == 0) and
not isJobSchedulerJob(job, jobKey, jobSchedulersKey) then
-- Find the right timestamp of the job to compare to maxTimestamp:
-- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
-- * processedOn represents when the job was last attempted, but it doesn't get populated until
-- the job is first tried
-- * timestamp is the original job submission time
-- Fetch all three of these (in that order) and use the first one that is set so that we'll leave jobs
-- that have been active within the grace period:
jobTS = getTimestamp(jobKey, {"finishedOn", "processedOn", "timestamp"})
if (not jobTS or jobTS <= timestamp) then
-- replace the entry with a deletion marker; the actual deletion will
-- occur at the end of the script
rcall("LSET", listKey, rangeEnd - jobIdsLen + i, deletionMarker)
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]])
deletedCount = deletedCount + 1
table.insert(deleted, job)
end
end
end
rcall("LREM", listKey, 0, deletionMarker)
return {deleted, deletedCount}
end
--[[
Function to clean job set.
Returns jobIds and deleted count number.
]]
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
We use ZRANGEBYSCORE to make the case where we're deleting a limited number
of items in a sorted set only run a single iteration. If we simply used
ZRANGE, we may take a long time traversing through jobs that are within the
grace period.
]]
local function getJobsInZset(zsetKey, rangeEnd, limit)
if limit > 0 then
return rcall("ZRANGEBYSCORE", zsetKey, 0, rangeEnd, "LIMIT", 0, limit)
else
return rcall("ZRANGEBYSCORE", zsetKey, 0, rangeEnd)
end
end
local function cleanSet(
setKey,
jobKeyPrefix,
rangeEnd,
timestamp,
limit,
attributes,
isFinished,
jobSchedulersKey)
local jobs = getJobsInZset(setKey, rangeEnd, limit)
local deleted = {}
local deletedCount = 0
local jobTS
for i, job in ipairs(jobs) do
if limit > 0 and deletedCount >= limit then
break
end
local jobKey = jobKeyPrefix .. job
-- Extract a Job Scheduler Id from jobId ("repeat:job-scheduler-id:millis")
-- and check if it is in the scheduled jobs
if not (jobSchedulersKey and isJobSchedulerJob(job, jobKey, jobSchedulersKey)) then
if isFinished then
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
deletedCount = deletedCount + 1
table.insert(deleted, job)
else
-- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
jobTS = getTimestamp(jobKey, attributes)
if (not jobTS or jobTS <= timestamp) then
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
deletedCount = deletedCount + 1
table.insert(deleted, job)
end
end
end
end
if (#deleted > 0) then
for from, to in batches(#deleted, 7000) do
rcall("ZREM", setKey, unpack(deleted, from, to))
end
end
return {deleted, deletedCount}
end
local result
if ARGV[4] == "active" then
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false --[[ hasFinished ]],
repeatKey)
elseif ARGV[4] == "delayed" then
rangeEnd = "+inf"
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"processedOn", "timestamp"}, false --[[ hasFinished ]], repeatKey)
elseif ARGV[4] == "prioritized" then
rangeEnd = "+inf"
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"timestamp"}, false --[[ hasFinished ]], repeatKey)
elseif ARGV[4] == "wait" or ARGV[4] == "paused" then
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true --[[ hasFinished ]],
repeatKey)
else
rangeEnd = ARGV[2]
-- No need to pass repeat key as in that moment job won't be related to a job scheduler
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"finishedOn"}, true --[[ hasFinished ]])
end
rcall("XADD", KEYS[2], "*", "event", "cleaned", "count", result[2])
return result[1]
`;qd.cleanJobsInSet={name:"cleanJobsInSet",content:hre,keys:3}});var VP=h(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});Fd.drain=void 0;var yre=`--[[
Drains the queue, removes all jobs that are waiting
or delayed, but not active, completed or failed
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'delayed'
KEYS[4] 'prioritized'
KEYS[5] 'jobschedulers' (repeat)
ARGV[1] queue key prefix
ARGV[2] should clean delayed jobs
]]
local rcall = redis.call
local queueBaseKey = ARGV[1]
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to filter out jobs to ignore from a table.
]]
local function filterOutJobsToIgnore(jobs, jobsToIgnore)
local filteredJobs = {}
for i = 1, #jobs do
if not jobsToIgnore[jobs[i]] then
table.insert(filteredJobs, jobs[i])
end
end
return filteredJobs
end
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobs(keys, hard, baseKey, max)
for i, key in ipairs(keys) do
removeJob(key, hard, baseKey, true --[[remove debounce key]])
end
return max - #keys
end
local function getListItems(keyName, max)
return rcall('LRANGE', keyName, 0, max - 1)
end
local function removeListJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getListItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
rcall("LTRIM", keyName, #jobs, -1)
return count
end
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get ZSet items.
]]
local function getZSetItems(keyName, max)
return rcall('ZRANGE', keyName, 0, max - 1)
end
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getZSetItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
if(#jobs > 0) then
for from, to in batches(#jobs, 7000) do
rcall("ZREM", keyName, unpack(jobs, from, to))
end
end
return count
end
-- We must not remove delayed jobs if they are associated to a job scheduler.
local scheduledJobs = {}
local jobSchedulers = rcall("ZRANGE", KEYS[5], 0, -1, "WITHSCORES")
-- For every job scheduler, get the current delayed job id.
for i = 1, #jobSchedulers, 2 do
local jobSchedulerId = jobSchedulers[i]
local jobSchedulerMillis = jobSchedulers[i + 1]
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. jobSchedulerMillis
scheduledJobs[delayedJobId] = true
end
removeListJobs(KEYS[1], true, queueBaseKey, 0, scheduledJobs) -- wait
removeListJobs(KEYS[2], true, queueBaseKey, 0, scheduledJobs) -- paused
if ARGV[2] == "1" then
removeZSetJobs(KEYS[3], true, queueBaseKey, 0, scheduledJobs) -- delayed
end
removeZSetJobs(KEYS[4], true, queueBaseKey, 0, scheduledJobs) -- prioritized
`;Fd.drain={name:"drain",content:yre,keys:5}});var HP=h(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.extendLock=void 0;var bre=`--[[
Extend lock and removes the job from the stalled set.
Input:
KEYS[1] 'lock',
KEYS[2] 'stalled'
ARGV[1] token
ARGV[2] lock duration in milliseconds
ARGV[3] jobid
Output:
"1" if lock extended successfully.
]]
local rcall = redis.call
if rcall("GET", KEYS[1]) == ARGV[1] then
-- if rcall("SET", KEYS[1], ARGV[1], "PX", ARGV[2], "XX") then
if rcall("SET", KEYS[1], ARGV[1], "PX", ARGV[2]) then
rcall("SREM", KEYS[2], ARGV[3])
return 1
end
end
return 0
`;Jd.extendLock={name:"extendLock",content:bre,keys:2}});var zP=h(Ud=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});Ud.extendLocks=void 0;var gre=`--[[
Extend locks for multiple jobs and remove them from the stalled set if successful.
Return the list of job IDs for which the operation failed.
KEYS[1] = stalled key
ARGV[1] = baseKey
ARGV[2] = tokens
ARGV[3] = jobIds
ARGV[4] = lockDuration (ms)
Output:
An array of failed job IDs. If empty, all succeeded.
]]
local rcall = redis.call
local stalledKey = KEYS[1]
local baseKey = ARGV[1]
local tokens = cmsgpack.unpack(ARGV[2])
local jobIds = cmsgpack.unpack(ARGV[3])
local lockDuration = ARGV[4]
local jobCount = #jobIds
local failedJobs = {}
for i = 1, jobCount, 1 do
local lockKey = baseKey .. jobIds[i] .. ':lock'
local jobId = jobIds[i]
local token = tokens[i]
local currentToken = rcall("GET", lockKey)
if currentToken then
if currentToken == token then
local setResult = rcall("SET", lockKey, token, "PX", lockDuration)
if setResult then
rcall("SREM", stalledKey, jobId)
else
table.insert(failedJobs, jobId)
end
else
table.insert(failedJobs, jobId)
end
else
table.insert(failedJobs, jobId)
end
end
return failedJobs
`;Ud.extendLocks={name:"extendLocks",content:gre,keys:1}});var YP=h(Gd=>{"use strict";Object.defineProperty(Gd,"__esModule",{value:!0});Gd.getCounts=void 0;var vre=`--[[
Get counts per provided states
Input:
KEYS[1] 'prefix'
ARGV[1...] types
]]
local rcall = redis.call;
local prefix = KEYS[1]
local results = {}
for i = 1, #ARGV do
local stateKey = prefix .. ARGV[i]
if ARGV[i] == "wait" or ARGV[i] == "paused" then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local marker = rcall("LINDEX", stateKey, -1)
if marker and string.sub(marker, 1, 2) == "0:" then
local count = rcall("LLEN", stateKey)
if count > 1 then
rcall("RPOP", stateKey)
results[#results+1] = count-1
else
results[#results+1] = 0
end
else
results[#results+1] = rcall("LLEN", stateKey)
end
elseif ARGV[i] == "active" then
results[#results+1] = rcall("LLEN", stateKey)
else
results[#results+1] = rcall("ZCARD", stateKey)
end
end
return results
`;Gd.getCounts={name:"getCounts",content:vre,keys:1}});var WP=h(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.getCountsPerPriority=void 0;var xre=`--[[
Get counts per provided states
Input:
KEYS[1] wait key
KEYS[2] paused key
KEYS[3] meta key
KEYS[4] prioritized key
ARGV[1...] priorities
]]
local rcall = redis.call
local results = {}
local waitKey = KEYS[1]
local pausedKey = KEYS[2]
local prioritizedKey = KEYS[4]
-- Includes
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePaused(queueMetaKey)
return rcall("HEXISTS", queueMetaKey, "paused") == 1
end
for i = 1, #ARGV do
local priority = tonumber(ARGV[i])
if priority == 0 then
if isQueuePaused(KEYS[3]) then
results[#results+1] = rcall("LLEN", pausedKey)
else
results[#results+1] = rcall("LLEN", waitKey)
end
else
results[#results+1] = rcall("ZCOUNT", prioritizedKey,
priority * 0x100000000, (priority + 1) * 0x100000000 - 1)
end
end
return results
`;Bd.getCountsPerPriority={name:"getCountsPerPriority",content:xre,keys:4}});var QP=h($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.getDependencyCounts=void 0;var Ere=`--[[
Get counts per child states
Input:
KEYS[1] processed key
KEYS[2] unprocessed key
KEYS[3] ignored key
KEYS[4] failed key
ARGV[1...] types
]]
local rcall = redis.call;
local processedKey = KEYS[1]
local unprocessedKey = KEYS[2]
local ignoredKey = KEYS[3]
local failedKey = KEYS[4]
local results = {}
for i = 1, #ARGV do
if ARGV[i] == "processed" then
results[#results+1] = rcall("HLEN", processedKey)
elseif ARGV[i] == "unprocessed" then
results[#results+1] = rcall("SCARD", unprocessedKey)
elseif ARGV[i] == "ignored" then
results[#results+1] = rcall("HLEN", ignoredKey)
else
results[#results+1] = rcall("ZCARD", failedKey)
end
end
return results
`;$d.getDependencyCounts={name:"getDependencyCounts",content:Ere,keys:4}});var XP=h(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.getJobScheduler=void 0;var Sre=`--[[
Get job scheduler record.
Input:
KEYS[1] 'repeat' key
ARGV[1] id
]]
local rcall = redis.call
local jobSchedulerKey = KEYS[1] .. ":" .. ARGV[1]
local score = rcall("ZSCORE", KEYS[1], ARGV[1])
if score then
return {rcall("HGETALL", jobSchedulerKey), score} -- get job data
end
return {nil, nil}
`;Vd.getJobScheduler={name:"getJobScheduler",content:Sre,keys:1}});var ZP=h(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});Hd.getMetrics=void 0;var wre=`--[[
Get metrics
Input:
KEYS[1] 'metrics' key
KEYS[2] 'metrics data' key
ARGV[1] start index
ARGV[2] end index
]]
local rcall = redis.call;
local metricsKey = KEYS[1]
local dataKey = KEYS[2]
local metrics = rcall("HMGET", metricsKey, "count", "prevTS", "prevCount")
local data = rcall("LRANGE", dataKey, tonumber(ARGV[1]), tonumber(ARGV[2]))
local numPoints = rcall("LLEN", dataKey)
return {metrics, data, numPoints}
`;Hd.getMetrics={name:"getMetrics",content:wre,keys:2}});var eM=h(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.getRanges=void 0;var Ire=`--[[
Get job ids per provided states
Input:
KEYS[1] 'prefix'
ARGV[1] start
ARGV[2] end
ARGV[3] asc
ARGV[4...] types
]]
local rcall = redis.call
local prefix = KEYS[1]
local rangeStart = tonumber(ARGV[1])
local rangeEnd = tonumber(ARGV[2])
local asc = ARGV[3]
local results = {}
local function getRangeInList(listKey, asc, rangeStart, rangeEnd, results)
if asc == "1" then
local modifiedRangeStart
local modifiedRangeEnd
if rangeStart == -1 then
modifiedRangeStart = 0
else
modifiedRangeStart = -(rangeStart + 1)
end
if rangeEnd == -1 then
modifiedRangeEnd = 0
else
modifiedRangeEnd = -(rangeEnd + 1)
end
results[#results+1] = rcall("LRANGE", listKey,
modifiedRangeEnd,
modifiedRangeStart)
else
results[#results+1] = rcall("LRANGE", listKey, rangeStart, rangeEnd)
end
end
for i = 4, #ARGV do
local stateKey = prefix .. ARGV[i]
if ARGV[i] == "wait" or ARGV[i] == "paused" then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local marker = rcall("LINDEX", stateKey, -1)
if marker and string.sub(marker, 1, 2) == "0:" then
local count = rcall("LLEN", stateKey)
if count > 1 then
rcall("RPOP", stateKey)
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
else
results[#results+1] = {}
end
else
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
end
elseif ARGV[i] == "active" then
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
else
if asc == "1" then
results[#results+1] = rcall("ZRANGE", stateKey, rangeStart, rangeEnd)
else
results[#results+1] = rcall("ZREVRANGE", stateKey, rangeStart, rangeEnd)
end
end
end
return results
`;zd.getRanges={name:"getRanges",content:Ire,keys:1}});var tM=h(Yd=>{"use strict";Object.defineProperty(Yd,"__esModule",{value:!0});Yd.getRateLimitTtl=void 0;var _re=`--[[
Get rate limit ttl
Input:
KEYS[1] 'limiter'
KEYS[2] 'meta'
ARGV[1] maxJobs
]]
local rcall = redis.call
-- Includes
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
local rateLimiterKey = KEYS[1]
if ARGV[1] ~= "0" then
return getRateLimitTTL(tonumber(ARGV[1]), rateLimiterKey)
else
local rateLimitMax = rcall("HGET", KEYS[2], "max")
if rateLimitMax then
return getRateLimitTTL(tonumber(rateLimitMax), rateLimiterKey)
end
return rcall("PTTL", rateLimiterKey)
end
`;Yd.getRateLimitTtl={name:"getRateLimitTtl",content:_re,keys:2}});var rM=h(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.getState=void 0;var kre=`--[[
Get a job state
Input:
KEYS[1] 'completed' key,
KEYS[2] 'failed' key
KEYS[3] 'delayed' key
KEYS[4] 'active' key
KEYS[5] 'wait' key
KEYS[6] 'paused' key
KEYS[7] 'waiting-children' key
KEYS[8] 'prioritized' key
ARGV[1] job id
Output:
'completed'
'failed'
'delayed'
'active'
'prioritized'
'waiting'
'waiting-children'
'unknown'
]]
local rcall = redis.call
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
return "completed"
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
return "failed"
end
if rcall("ZSCORE", KEYS[3], ARGV[1]) then
return "delayed"
end
if rcall("ZSCORE", KEYS[8], ARGV[1]) then
return "prioritized"
end
-- Includes
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local active_items = rcall("LRANGE", KEYS[4] , 0, -1)
if checkItemInList(active_items, ARGV[1]) ~= nil then
return "active"
end
local wait_items = rcall("LRANGE", KEYS[5] , 0, -1)
if checkItemInList(wait_items, ARGV[1]) ~= nil then
return "waiting"
end
local paused_items = rcall("LRANGE", KEYS[6] , 0, -1)
if checkItemInList(paused_items, ARGV[1]) ~= nil then
return "waiting"
end
if rcall("ZSCORE", KEYS[7], ARGV[1]) then
return "waiting-children"
end
return "unknown"
`;Wd.getState={name:"getState",content:kre,keys:8}});var nM=h(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});Qd.getStateV2=void 0;var Tre=`--[[
Get a job state
Input:
KEYS[1] 'completed' key,
KEYS[2] 'failed' key
KEYS[3] 'delayed' key
KEYS[4] 'active' key
KEYS[5] 'wait' key
KEYS[6] 'paused' key
KEYS[7] 'waiting-children' key
KEYS[8] 'prioritized' key
ARGV[1] job id
Output:
'completed'
'failed'
'delayed'
'active'
'waiting'
'waiting-children'
'unknown'
]]
local rcall = redis.call
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
return "completed"
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
return "failed"
end
if rcall("ZSCORE", KEYS[3], ARGV[1]) then
return "delayed"
end
if rcall("ZSCORE", KEYS[8], ARGV[1]) then
return "prioritized"
end
if rcall("LPOS", KEYS[4] , ARGV[1]) then
return "active"
end
if rcall("LPOS", KEYS[5] , ARGV[1]) then
return "waiting"
end
if rcall("LPOS", KEYS[6] , ARGV[1]) then
return "waiting"
end
if rcall("ZSCORE", KEYS[7] , ARGV[1]) then
return "waiting-children"
end
return "unknown"
`;Qd.getStateV2={name:"getStateV2",content:Tre,keys:8}});var iM=h(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.isFinished=void 0;var Are=`--[[
Checks if a job is finished (.i.e. is in the completed or failed set)
Input:
KEYS[1] completed key
KEYS[2] failed key
KEYS[3] job key
ARGV[1] job id
ARGV[2] return value?
Output:
0 - Not finished.
1 - Completed.
2 - Failed.
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[3]) ~= 1 then
if ARGV[2] == "1" then
return {-1,"Missing key for job " .. KEYS[3] .. ". isFinished"}
end
return -1
end
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
if ARGV[2] == "1" then
local returnValue = rcall("HGET", KEYS[3], "returnvalue")
return {1,returnValue}
end
return 1
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
if ARGV[2] == "1" then
local failedReason = rcall("HGET", KEYS[3], "failedReason")
return {2,failedReason}
end
return 2
end
if ARGV[2] == "1" then
return {0}
end
return 0
`;Xd.isFinished={name:"isFinished",content:Are,keys:3}});var sM=h(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});Zd.isJobInList=void 0;var Kre=`--[[
Checks if job is in a given list.
Input:
KEYS[1]
ARGV[1]
Output:
1 if element found in the list.
]]
-- Includes
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local items = redis.call("LRANGE", KEYS[1] , 0, -1)
return checkItemInList(items, ARGV[1])
`;Zd.isJobInList={name:"isJobInList",content:Kre,keys:1}});var aM=h(ep=>{"use strict";Object.defineProperty(ep,"__esModule",{value:!0});ep.isMaxed=void 0;var jre=`--[[
Checks if queue is maxed.
Input:
KEYS[1] meta key
KEYS[2] active key
Output:
1 if element found in the list.
]]
local rcall = redis.call
-- Includes
--[[
Function to check if queue is maxed or not.
]]
local function isQueueMaxed(queueMetaKey, activeKey)
local maxConcurrency = rcall("HGET", queueMetaKey, "concurrency")
if maxConcurrency then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(maxConcurrency) then
return true
end
end
return false
end
return isQueueMaxed(KEYS[1], KEYS[2])
`;ep.isMaxed={name:"isMaxed",content:jre,keys:2}});var oM=h(tp=>{"use strict";Object.defineProperty(tp,"__esModule",{value:!0});tp.moveJobFromActiveToWait=void 0;var Ore=`--[[
Function to move job from active state to wait.
Input:
KEYS[1] active key
KEYS[2] wait key
KEYS[3] stalled key
KEYS[4] paused key
KEYS[5] meta key
KEYS[6] limiter key
KEYS[7] prioritized key
KEYS[8] marker key
KEYS[9] event key
ARGV[1] job id
ARGV[2] lock token
ARGV[3] job id key
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to push back job considering priority in front of same prioritized jobs.
]]
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
-- in order to put it at front of same prioritized jobs
-- we consider prioritized counter as 0
local score = priority * 0x100000000
rcall("ZADD", prioritizedKey, score, jobId)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
local jobId = ARGV[1]
local token = ARGV[2]
local jobKey = ARGV[3]
if rcall("EXISTS", jobKey) == 0 then
return -1
end
local errorCode = removeLock(jobKey, KEYS[3], token, jobId)
if errorCode < 0 then
return errorCode
end
local metaKey = KEYS[5]
local removed = rcall("LREM", KEYS[1], 1, jobId)
if removed > 0 then
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[1], KEYS[2], KEYS[4])
local priority = tonumber(rcall("HGET", ARGV[3], "priority")) or 0
if priority > 0 then
pushBackJobWithPriority(KEYS[7], priority, jobId)
else
addJobInTargetList(target, KEYS[8], "RPUSH", isPausedOrMaxed, jobId)
end
local maxEvents = getOrSetMaxEvents(metaKey)
-- Emit waiting event
rcall("XADD", KEYS[9], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId, "prev", "active")
end
local pttl = rcall("PTTL", KEYS[6])
if pttl > 0 then
return pttl
else
return 0
end
`;tp.moveJobFromActiveToWait={name:"moveJobFromActiveToWait",content:Ore,keys:9}});var cM=h(rp=>{"use strict";Object.defineProperty(rp,"__esModule",{value:!0});rp.moveJobsToWait=void 0;var Rre=`--[[
Move completed, failed or delayed jobs to wait.
Note: Does not support jobs with priorities.
Input:
KEYS[1] base key
KEYS[2] events stream
KEYS[3] state key (failed, completed, delayed)
KEYS[4] 'wait'
KEYS[5] 'paused'
KEYS[6] 'meta'
KEYS[7] 'active'
KEYS[8] 'marker'
ARGV[1] count
ARGV[2] timestamp
ARGV[3] prev state
Output:
1 means the operation is not completed
0 means the operation is completed
]]
local maxCount = tonumber(ARGV[1])
local timestamp = tonumber(ARGV[2])
local rcall = redis.call;
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local metaKey = KEYS[6]
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[4], KEYS[5])
local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
if (#jobs > 0) then
if ARGV[3] == "failed" then
for i, key in ipairs(jobs) do
local jobKey = KEYS[1] .. key
rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason")
end
elseif ARGV[3] == "completed" then
for i, key in ipairs(jobs) do
local jobKey = KEYS[1] .. key
rcall("HDEL", jobKey, "finishedOn", "processedOn", "returnvalue")
end
end
local maxEvents = getOrSetMaxEvents(metaKey)
for i, key in ipairs(jobs) do
-- Emit waiting event
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event",
"waiting", "jobId", key, "prev", ARGV[3]);
end
for from, to in batches(#jobs, 7000) do
rcall("ZREM", KEYS[3], unpack(jobs, from, to))
rcall("LPUSH", target, unpack(jobs, from, to))
end
addBaseMarkerIfNeeded(KEYS[8], isPausedOrMaxed)
end
maxCount = maxCount - #jobs
if (maxCount <= 0) then return 1 end
return 0
`;rp.moveJobsToWait={name:"moveJobsToWait",content:Rre,keys:8}});var lM=h(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});np.moveStalledJobsToWait=void 0;var Cre=`--[[
Move stalled jobs to wait.
Input:
KEYS[1] 'stalled' (SET)
KEYS[2] 'wait', (LIST)
KEYS[3] 'active', (LIST)
KEYS[4] 'stalled-check', (KEY)
KEYS[5] 'meta', (KEY)
KEYS[6] 'paused', (LIST)
KEYS[7] 'marker'
KEYS[8] 'event stream' (STREAM)
ARGV[1] Max stalled job count
ARGV[2] queue.toKey('')
ARGV[3] timestamp
ARGV[4] max check time
Events:
'stalled' with stalled job id.
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to move job to wait to be picked up by a waiting worker.
]]
-- Includes
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveJobToWait(metaKey, activeKey, waitKey, pausedKey, markerKey, eventStreamKey,
jobId, pushCmd)
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId", jobId, 'prev', 'active')
end
--[[
Function to trim events, default 10000.
]]
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function trimEvents(metaKey, eventStreamKey)
local maxEvents = getOrSetMaxEvents(metaKey)
if maxEvents then
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
else
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
end
end
local stalledKey = KEYS[1]
local waitKey = KEYS[2]
local activeKey = KEYS[3]
local stalledCheckKey = KEYS[4]
local metaKey = KEYS[5]
local pausedKey = KEYS[6]
local markerKey = KEYS[7]
local eventStreamKey = KEYS[8]
local maxStalledJobCount = tonumber(ARGV[1])
local queueKeyPrefix = ARGV[2]
local timestamp = ARGV[3]
local maxCheckTime = ARGV[4]
if rcall("EXISTS", stalledCheckKey) == 1 then
return {}
end
rcall("SET", stalledCheckKey, timestamp, "PX", maxCheckTime)
-- Trim events before emitting them to avoid trimming events emitted in this script
trimEvents(metaKey, eventStreamKey)
-- Move all stalled jobs to wait
local stalling = rcall('SMEMBERS', stalledKey)
local stalled = {}
if (#stalling > 0) then
rcall('DEL', stalledKey)
-- Remove from active list
for i, jobId in ipairs(stalling) do
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
-- If the jobId is a delay marker ID we just remove it.
rcall("LREM", activeKey, 1, jobId)
else
local jobKey = queueKeyPrefix .. jobId
-- Check that the lock is also missing, then we can handle this job as really stalled.
if (rcall("EXISTS", jobKey .. ":lock") == 0) then
-- Remove from the active queue.
local removed = rcall("LREM", activeKey, 1, jobId)
if (removed > 0) then
-- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
local stalledCount = rcall("HINCRBY", jobKey, "stc", 1)
-- Check if this is a repeatable job by looking at job options
local jobOpts = rcall("HGET", jobKey, "opts")
local isRepeatableJob = false
if jobOpts then
local opts = cjson.decode(jobOpts)
if opts and opts["repeat"] then
isRepeatableJob = true
end
end
-- Only fail job if it exceeds stall limit AND is not a repeatable job
if stalledCount > maxStalledJobCount and not isRepeatableJob then
local failedReason = "job stalled more than allowable limit"
rcall("HSET", jobKey, "defa", failedReason)
end
moveJobToWait(metaKey, activeKey, waitKey, pausedKey, markerKey, eventStreamKey, jobId,
"RPUSH")
-- Emit the stalled event
rcall("XADD", eventStreamKey, "*", "event", "stalled", "jobId", jobId)
table.insert(stalled, jobId)
end
end
end
end
end
-- Mark potentially stalled jobs
local active = rcall('LRANGE', activeKey, 0, -1)
if (#active > 0) then
for from, to in batches(#active, 7000) do
rcall('SADD', stalledKey, unpack(active, from, to))
end
end
return stalled
`;np.moveStalledJobsToWait={name:"moveStalledJobsToWait",content:Cre,keys:8}});var uM=h(ip=>{"use strict";Object.defineProperty(ip,"__esModule",{value:!0});ip.moveToActive=void 0;var Dre=`--[[
Move next job to be processed to active, lock it and fetch its data. The job
may be delayed, in that case we need to move it to the delayed set instead.
This operation guarantees that the worker owns the job during the lock
expiration time. The worker is responsible of keeping the lock fresh
so that no other worker picks this job again.
Input:
KEYS[1] wait key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] stream events key
KEYS[5] stalled key
-- Rate limiting
KEYS[6] rate limiter key
KEYS[7] delayed key
-- Delayed jobs
KEYS[8] paused key
KEYS[9] meta key
KEYS[10] pc priority counter
-- Marker
KEYS[11] marker key
-- Arguments
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] opts
opts - token - lock token
opts - lockDuration
opts - limiter
opts - name - worker name
]]
local rcall = redis.call
local waitKey = KEYS[1]
local activeKey = KEYS[2]
local eventStreamKey = KEYS[4]
local rateLimiterKey = KEYS[6]
local delayedKey = KEYS[7]
local opts = cmsgpack.unpack(ARGV[3])
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration = getTargetQueueList(KEYS[9],
activeKey, waitKey, KEYS[8])
-- Check if there are delayed jobs that we can move to wait.
local markerKey = KEYS[11]
promoteDelayedJobs(delayedKey, markerKey, target, KEYS[3], eventStreamKey, ARGV[1],
ARGV[2], KEYS[10], isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
-- Check if we are rate limited first.
if expireTime > 0 then return {0, 0, expireTime, 0} end
-- paused or maxed queue
if isPausedOrMaxed then return {0, 0, 0, 0} end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
-- no job ID, try non-blocking move from wait to active
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
-- Markers in waitlist DEPRECATED in v5: Will be completely removed in v6.
if jobId and string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
jobId = rcall("RPOPLPUSH", waitKey, activeKey)
end
if jobId then
return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
maxJobs, limiterDuration, markerKey, opts)
else
jobId = moveJobFromPrioritizedToActive(KEYS[3], activeKey, KEYS[10])
if jobId then
return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
maxJobs, limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then return {0, 0, 0, nextTimestamp} end
return {0, 0, 0, 0}
`;ip.moveToActive={name:"moveToActive",content:Dre,keys:11}});var dM=h(sp=>{"use strict";Object.defineProperty(sp,"__esModule",{value:!0});sp.moveToDelayed=void 0;var Pre=`--[[
Moves job from active to delayed set.
Input:
KEYS[1] marker key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] delayed key
KEYS[5] job key
KEYS[6] events stream
KEYS[7] meta key
KEYS[8] stalled key
KEYS[9] wait key
KEYS[10] rate limiter key
KEYS[11] paused key
KEYS[12] pc priority counter
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] the id of the job
ARGV[4] queue token
ARGV[5] delay value
ARGV[6] skip attempt
ARGV[7] optional job fields to update
ARGV[8] fetch next?
ARGV[9] opts
Output:
0 - OK
-1 - Missing job.
-3 - Job not in active set.
Events:
- delayed key.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to fetch the next job to process.
Tries to get the next job to avoid an extra roundtrip if the queue is
not closing and not rate limited.
Input:
waitKey - wait list key
activeKey - active list key
prioritizedKey - prioritized sorted set key
eventStreamKey - event stream key
rateLimiterKey - rate limiter key
delayedKey - delayed sorted set key
pausedKey - paused list key
metaKey - meta hash key
pcKey - priority counter key
markerKey - marker key
prefix - keys prefix
timestamp - current timestamp
opts - options table:
token (required) - lock token used when locking jobs
lockDuration (required) - lock duration for acquired jobs
limiter (optional) - rate limiter options table (e.g. { max = number })
]]
-- Includes
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function fetchNextJob(waitKey, activeKey, prioritizedKey, eventStreamKey,
rateLimiterKey, delayedKey, pausedKey, metaKey, pcKey, markerKey, prefix,
timestamp, opts)
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration =
getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
-- Check if there are delayed jobs that can be promoted
promoteDelayedJobs(delayedKey, markerKey, target, prioritizedKey,
eventStreamKey, prefix, timestamp, pcKey, isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
-- Check if we are rate limited first.
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
if expireTime > 0 then
return {0, 0, expireTime, 0}
end
-- paused or maxed queue
if isPausedOrMaxed then
return {0, 0, 0, 0}
end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
if jobId then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
-- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
-- but if ID is 0:0, then there is at least 1 prioritized job to process
if jobId == "0:0" then
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
if jobId then
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- The result is guaranteed to be positive, since the
-- ZRANGEBYSCORE command would have return a job otherwise.
return {0, 0, 0, nextTimestamp}
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local jobKey = KEYS[5]
local markerKey = KEYS[1]
local metaKey = KEYS[7]
local token = ARGV[4]
if rcall("EXISTS", jobKey) == 1 then
local errorCode = removeLock(jobKey, KEYS[8], token, ARGV[3])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobKey, ARGV[7])
local delayedKey = KEYS[4]
local jobId = ARGV[3]
local delay = tonumber(ARGV[5])
local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
if numRemovedElements < 1 then return -3 end
local score, delayedTimestamp = getDelayedScore(delayedKey, ARGV[2], delay)
if ARGV[6] == "0" then
rcall("HINCRBY", jobKey, "atm", 1)
end
rcall("HSET", jobKey, "delay", ARGV[5])
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- Try to get next job to avoid an extra roundtrip if the queue is not closing,
-- and not rate limited.
if (ARGV[8] == "1") then
local opts = cmsgpack.unpack(ARGV[9])
local result = fetchNextJob(KEYS[9], KEYS[2], KEYS[3], KEYS[6],
KEYS[10], KEYS[4], KEYS[11], metaKey, KEYS[12], markerKey,
ARGV[1], ARGV[2], opts)
if result and type(result[1]) == "table" then
return result
end
end
-- Check if we need to push a marker job to wake up sleeping workers.
addDelayMarkerIfNeeded(markerKey, delayedKey)
return 0
else
return -1
end
`;sp.moveToDelayed={name:"moveToDelayed",content:Pre,keys:12}});var pM=h(ap=>{"use strict";Object.defineProperty(ap,"__esModule",{value:!0});ap.moveToFinished=void 0;var Mre=`--[[
Move job from active to a finished status (completed or failed)
A job can only be moved to completed if it was active.
The job must be locked before it can be moved to a finished status,
and the lock must be released in this script.
Input:
KEYS[1] wait key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] event stream key
KEYS[5] stalled key
-- Rate limiting
KEYS[6] rate limiter key
KEYS[7] delayed key
KEYS[8] paused key
KEYS[9] meta key
KEYS[10] pc priority counter
KEYS[11] completed/failed key
KEYS[12] jobId key
KEYS[13] metrics key
KEYS[14] marker key
ARGV[1] jobId
ARGV[2] timestamp
ARGV[3] msg property returnvalue / failedReason
ARGV[4] return value / failed reason
ARGV[5] target (completed/failed)
ARGV[6] fetch next?
ARGV[7] keys prefix
ARGV[8] opts
ARGV[9] job fields to update
opts - token - lock token
opts - keepJobs
opts - lockDuration - lock duration in milliseconds
opts - attempts max attempts
opts - maxMetricsSize
opts - fpof - fail parent on fail
opts - cpof - continue parent on fail
opts - idof - ignore dependency on fail
opts - rdof - remove dependency on fail
opts - name - worker name
Output:
0 OK
-1 Missing key.
-2 Missing lock.
-3 Job not in active set
-4 Job has pending children
-6 Lock is not owned by this client
-9 Job has failed children
Events:
'completed/failed'
]]
local rcall = redis.call
--- Includes
--[[
Functions to collect metrics based on a current and previous count of jobs.
Granularity is fixed at 1 minute.
]]
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
timestamp)
-- Increment current count
local count = rcall("HINCRBY", metaKey, "count", 1) - 1
-- Compute how many data points we need to add to the list, N.
local prevTS = rcall("HGET", metaKey, "prevTS")
if not prevTS then
-- If prevTS is nil, set it to the current timestamp
rcall("HSET", metaKey, "prevTS", timestamp, "prevCount", 0)
return
end
local N = math.min(math.floor(timestamp / 60000) - math.floor(prevTS / 60000), tonumber(maxDataPoints))
if N > 0 then
local delta = count - rcall("HGET", metaKey, "prevCount")
-- If N > 1, add N-1 zeros to the list
if N > 1 then
local points = {}
points[1] = delta
for i = 2, N do
points[i] = 0
end
for from, to in batches(#points, 7000) do
rcall("LPUSH", dataPointsList, unpack(points, from, to))
end
else
-- LPUSH delta to the list
rcall("LPUSH", dataPointsList, delta)
end
-- LTRIM to keep list to its max size
rcall("LTRIM", dataPointsList, 0, maxDataPoints - 1)
-- update prev count with current count
rcall("HSET", metaKey, "prevCount", count, "prevTS", timestamp)
end
end
--[[
Function to fetch the next job to process.
Tries to get the next job to avoid an extra roundtrip if the queue is
not closing and not rate limited.
Input:
waitKey - wait list key
activeKey - active list key
prioritizedKey - prioritized sorted set key
eventStreamKey - event stream key
rateLimiterKey - rate limiter key
delayedKey - delayed sorted set key
pausedKey - paused list key
metaKey - meta hash key
pcKey - priority counter key
markerKey - marker key
prefix - keys prefix
timestamp - current timestamp
opts - options table:
token (required) - lock token used when locking jobs
lockDuration (required) - lock duration for acquired jobs
limiter (optional) - rate limiter options table (e.g. { max = number })
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function fetchNextJob(waitKey, activeKey, prioritizedKey, eventStreamKey,
rateLimiterKey, delayedKey, pausedKey, metaKey, pcKey, markerKey, prefix,
timestamp, opts)
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration =
getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
-- Check if there are delayed jobs that can be promoted
promoteDelayedJobs(delayedKey, markerKey, target, prioritizedKey,
eventStreamKey, prefix, timestamp, pcKey, isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
-- Check if we are rate limited first.
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
if expireTime > 0 then
return {0, 0, expireTime, 0}
end
-- paused or maxed queue
if isPausedOrMaxed then
return {0, 0, 0, 0}
end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
if jobId then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
-- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
-- but if ID is 0:0, then there is at least 1 prioritized job to process
if jobId == "0:0" then
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
if jobId then
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- The result is guaranteed to be positive, since the
-- ZRANGEBYSCORE command would have return a job otherwise.
return {0, 0, 0, nextTimestamp}
end
end
--[[
Function to recursively move from waitingChildren to failed.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local handleChildFailureAndMoveParentToWait = function (parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
local parentDelayedKey = parentQueueKey .. ":delayed"
local parentWaitingChildrenOrDelayedKey
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
parentWaitingChildrenOrDelayedKey = parentWaitingChildrenKey
elseif rcall("ZSCORE", parentDelayedKey, parentId) then
parentWaitingChildrenOrDelayedKey = parentDelayedKey
rcall("HSET", parentKey, "delay", 0)
end
if parentWaitingChildrenOrDelayedKey then
rcall("ZREM", parentWaitingChildrenOrDelayedKey, parentId)
local deferredFailure = "child " .. jobIdKey .. " failed"
rcall("HSET", parentKey, "defa", deferredFailure)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
else
if not rcall("ZSCORE", parentQueueKey .. ":failed", parentId) then
local deferredFailure = "child " .. jobIdKey .. " failed"
rcall("HSET", parentKey, "defa", deferredFailure)
end
end
end
end
local moveChildFromDependenciesIfNeeded = function (rawParentData, childKey, failedReason, timestamp)
if rawParentData then
local parentData = cjson.decode(rawParentData)
local parentKey = parentData['queueKey'] .. ':' .. parentData['id']
local parentDependenciesChildrenKey = parentKey .. ":dependencies"
if parentData['fpof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
local parentUnsuccessfulChildrenKey = parentKey .. ":unsuccessful"
rcall("ZADD", parentUnsuccessfulChildrenKey, timestamp, childKey)
handleChildFailureAndMoveParentToWait(
parentData['queueKey'],
parentKey,
parentData['id'],
childKey,
timestamp
)
end
elseif parentData['cpof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
local parentFailedChildrenKey = parentKey .. ":failed"
rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
moveParentToWaitIfNeeded(parentData['queueKey'], parentKey, parentData['id'], timestamp)
end
elseif parentData['idof'] or parentData['rdof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
moveParentToWaitIfNoPendingDependencies(parentData['queueKey'], parentDependenciesChildrenKey,
parentKey, parentData['id'], timestamp)
if parentData['idof'] then
local parentFailedChildrenKey = parentKey .. ":failed"
rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
end
end
end
end
end
--[[
Function to remove deduplication key if needed
when a job is moved to completed or failed states.
]]
local function removeDeduplicationKeyIfNeededOnFinalization(prefixKey,
deduplicationId, jobId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local pttl = rcall("PTTL", deduplicationKey)
if pttl == 0 then
return rcall("DEL", deduplicationKey)
end
if pttl == -1 then
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
return rcall("DEL", deduplicationKey)
end
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Functions to remove jobs by max age.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix, maxLimit)
local start = timestamp - maxAge * 1000
local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf", "LIMIT", 0, maxLimit)
for i, jobId in ipairs(jobIds) do
removeJob(jobId, false, prefix, false --[[remove debounce key]])
end
if #jobIds > 0 then
if #jobIds < maxLimit then
rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
else
for from, to in batches(#jobIds, 7000) do
rcall("ZREM", targetSet, unpack(jobIds, from, to))
end
end
end
end
--[[
Functions to remove jobs by max count.
]]
-- Includes
local function removeJobsByMaxCount(maxCount, targetSet, prefix)
local start = maxCount
local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
for i, jobId in ipairs(jobIds) do
removeJob(jobId, false, prefix, false --[[remove debounce key]])
end
rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to create a new job from stored dedup-next data
when a deduplicated job with keepLastIfActive finishes.
At most one next job is created per deduplication ID.
Multiple triggers while active overwrite the dedup-next data,
so only the latest data is used.
]]
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function requeueDeduplicatedJob(prefix, deduplicationId, eventStreamKey,
metaKey, activeKey, waitKey, pausedKey, markerKey, prioritizedKey,
priorityCounterKey, delayedKey, timestamp)
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
if rcall("EXISTS", deduplicationNextKey) == 1 then
local nextData = rcall("HMGET", deduplicationNextKey,
"name", "data", "opts", "pk", "pd", "pdk", "rjk")
local newJobId = rcall("INCR", prefix .. "id") .. ""
local newJobIdKey = prefix .. newJobId
local newOpts = cjson.decode(nextData[3])
local deduplicationKey = prefix .. "de:" .. deduplicationId
local parentKey = nextData[4] or nil
local parentData = nextData[5] or nil
local parentDependenciesKey = nextData[6] or nil
local repeatJobKey = nextData[7] or nil
-- Set dedup key for the new job (without TTL when keepLastIfActive,
-- so the key outlives the job's active duration)
local deOpts = newOpts['de']
if deOpts and deOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, newJobId)
else
setDeduplicationKey(deduplicationKey, newJobId, deOpts)
end
-- Store and enqueue using the shared helper (handles priority/lifo/delayed)
local maxEvents = getOrSetMaxEvents(metaKey)
storeAndEnqueueJob(eventStreamKey, newJobIdKey, newJobId, nextData[1], nextData[2],
newOpts, timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
-- Register as child dependency if the job has a parent
if parentDependenciesKey then
rcall("SADD", parentDependenciesKey, newJobIdKey)
end
-- Only delete the dedup-next hash after the job is fully created,
-- so that if any step above errors, the data is not permanently lost.
rcall("DEL", deduplicationNextKey)
end
end
--[[
Function to trim events, default 10000.
]]
-- Includes
local function trimEvents(metaKey, eventStreamKey)
local maxEvents = getOrSetMaxEvents(metaKey)
if maxEvents then
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
else
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
end
end
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local jobIdKey = KEYS[12]
if rcall("EXISTS", jobIdKey) == 1 then -- Make sure job exists
-- Make sure it does not have pending dependencies
-- It must happen before removing lock
if ARGV[5] == "completed" then
if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then
return -4
end
if rcall("ZCARD", jobIdKey .. ":unsuccessful") ~= 0 then
return -9
end
end
local opts = cmsgpack.unpack(ARGV[8])
local token = opts['token']
local errorCode = removeLock(jobIdKey, KEYS[5], token, ARGV[1])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobIdKey, ARGV[9]);
local attempts = opts['attempts']
local maxMetricsSize = opts['maxMetricsSize']
local maxCount = opts['keepJobs']['count']
local maxAge = opts['keepJobs']['age']
local maxLimit = opts['keepJobs']['limit'] or 1000
local jobAttributes = rcall("HMGET", jobIdKey, "parentKey", "parent", "deid")
local parentKey = jobAttributes[1] or ""
local parentId = ""
local parentQueueKey = ""
if jobAttributes[2] then -- TODO: need to revisit this logic if it's still needed
local jsonDecodedParent = cjson.decode(jobAttributes[2])
parentId = jsonDecodedParent['id']
parentQueueKey = jsonDecodedParent['queueKey']
end
local jobId = ARGV[1]
local timestamp = ARGV[2]
-- Remove from active list (if not active we shall return error)
local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
if (numRemovedElements < 1) then
return -3
end
local eventStreamKey = KEYS[4]
local metaKey = KEYS[9]
-- Trim events before emitting them to avoid trimming events emitted in this script
trimEvents(metaKey, eventStreamKey)
local prefix = ARGV[7]
removeDeduplicationKeyIfNeededOnFinalization(prefix, jobAttributes[3], jobId)
-- Check if there is requeue data for this dedup ID (keepLastIfActive mode)
if jobAttributes[3] then
requeueDeduplicatedJob(prefix, jobAttributes[3], eventStreamKey,
metaKey, KEYS[2], KEYS[1], KEYS[8], KEYS[14], KEYS[3], KEYS[10],
KEYS[7], timestamp)
end
-- If job has a parent we need to
-- 1) remove this job id from parents dependencies
-- 2) move the job Id to parent "processed" set
-- 3) push the results into parent "results" list
-- 4) if parent's dependencies is empty, then move parent to "wait/paused". Note it may be a different queue!.
if parentId == "" and parentKey ~= "" then
parentId = getJobIdFromKey(parentKey)
parentQueueKey = getJobKeyPrefix(parentKey, ":" .. parentId)
end
if parentId ~= "" then
if ARGV[5] == "completed" then
local dependenciesSet = parentKey .. ":dependencies"
if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
updateParentDepsIfNeeded(parentKey, parentQueueKey, dependenciesSet, parentId, jobIdKey, ARGV[4],
timestamp)
end
else
moveChildFromDependenciesIfNeeded(jobAttributes[2], jobIdKey, ARGV[4], timestamp)
end
end
local attemptsMade = rcall("HINCRBY", jobIdKey, "atm", 1)
-- Remove job?
if maxCount ~= 0 then
local targetSet = KEYS[11]
-- Add to complete/failed set
rcall("ZADD", targetSet, timestamp, jobId)
rcall("HSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
-- "returnvalue" / "failedReason" and "finishedOn"
if ARGV[5] == "failed" then
rcall("HDEL", jobIdKey, "defa")
end
-- Remove old jobs?
if maxAge ~= nil then
removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix, maxLimit)
end
if maxCount ~= nil and maxCount > 0 then
removeJobsByMaxCount(maxCount, targetSet, prefix)
end
else
removeJobKeys(jobIdKey)
if parentKey ~= "" then
-- TODO: when a child is removed when finished, result or failure in parent
-- must not be deleted, those value references should be deleted when the parent
-- is deleted
removeParentDependencyKey(jobIdKey, false, parentKey, jobAttributes[3])
end
end
rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3], ARGV[4], "prev", "active")
if ARGV[5] == "failed" then
if tonumber(attemptsMade) >= tonumber(attempts) then
rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId", jobId, "attemptsMade",
attemptsMade)
end
end
-- Collect metrics
if maxMetricsSize ~= "" then
collectMetrics(KEYS[13], KEYS[13] .. ':data', maxMetricsSize, timestamp)
end
-- Try to get next job to avoid an extra roundtrip if the queue is not closing,
-- and not rate limited.
if (ARGV[6] == "1") then
local result = fetchNextJob(KEYS[1], KEYS[2], KEYS[3], eventStreamKey,
KEYS[6], KEYS[7], KEYS[8], metaKey, KEYS[10], KEYS[14], prefix,
timestamp, opts)
if result then
return result
end
end
local waitLen = rcall("LLEN", KEYS[1])
if waitLen == 0 then
local activeLen = rcall("LLEN", KEYS[2])
if activeLen == 0 then
local prioritizedLen = rcall("ZCARD", KEYS[3])
if prioritizedLen == 0 then
rcall("XADD", eventStreamKey, "*", "event", "drained")
end
end
end
return 0
else
return -1
end
`;ap.moveToFinished={name:"moveToFinished",content:Mre,keys:14}});var fM=h(op=>{"use strict";Object.defineProperty(op,"__esModule",{value:!0});op.moveToWaitingChildren=void 0;var Lre=`--[[
Moves job from active to waiting children set.
Input:
KEYS[1] active key
KEYS[2] wait-children key
KEYS[3] job key
KEYS[4] job dependencies key
KEYS[5] job unsuccessful key
KEYS[6] stalled key
KEYS[7] events key
ARGV[1] token
ARGV[2] child key
ARGV[3] timestamp
ARGV[4] jobId
ARGV[5] prefix
Output:
0 - OK
1 - There are not pending dependencies.
-1 - Missing job.
-2 - Missing lock
-3 - Job not in active set
-9 - Job has failed children
]]
local rcall = redis.call
local activeKey = KEYS[1]
local waitingChildrenKey = KEYS[2]
local jobKey = KEYS[3]
local jobDependenciesKey = KEYS[4]
local jobUnsuccessfulKey = KEYS[5]
local stalledKey = KEYS[6]
local eventStreamKey = KEYS[7]
local token = ARGV[1]
local timestamp = ARGV[3]
local jobId = ARGV[4]
--- Includes
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
local function removeJobFromActive(activeKey, stalledKey, jobKey, jobId,
token)
local errorCode = removeLock(jobKey, stalledKey, token, jobId)
if errorCode < 0 then
return errorCode
end
local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
if numRemovedElements < 1 then
return -3
end
return 0
end
local function moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
local errorCode = removeJobFromActive(activeKey, stalledKey, jobKey, jobId, token)
if errorCode < 0 then
return errorCode
end
local score = tonumber(timestamp)
rcall("ZADD", waitingChildrenKey, score, jobId)
rcall("XADD", eventStreamKey, "*", "event", "waiting-children", "jobId", jobId, 'prev', 'active')
return 0
end
if rcall("EXISTS", jobKey) == 1 then
if rcall("ZCARD", jobUnsuccessfulKey) ~= 0 then
return -9
else
if ARGV[2] ~= "" then
if rcall("SISMEMBER", jobDependenciesKey, ARGV[2]) ~= 0 then
return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
end
return 1
else
if rcall("SCARD", jobDependenciesKey) ~= 0 then
return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
end
return 1
end
end
end
return -1
`;op.moveToWaitingChildren={name:"moveToWaitingChildren",content:Lre,keys:7}});var mM=h(cp=>{"use strict";Object.defineProperty(cp,"__esModule",{value:!0});cp.obliterate=void 0;var Nre=`--[[
Completely obliterates a queue and all of its contents
This command completely destroys a queue including all of its jobs, current or past
leaving no trace of its existence. Since this script needs to iterate to find all the job
keys, consider that this call may be slow for very large queues.
The queue needs to be "paused" or it will return an error
If the queue has currently active jobs then the script by default will return error,
however this behaviour can be overridden using the 'force' option.
Input:
KEYS[1] meta
KEYS[2] base
ARGV[1] count
ARGV[2] force
]]
local maxCount = tonumber(ARGV[1])
local baseKey = KEYS[2]
local rcall = redis.call
-- Includes
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobs(keys, hard, baseKey, max)
for i, key in ipairs(keys) do
removeJob(key, hard, baseKey, true --[[remove debounce key]])
end
return max - #keys
end
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to filter out jobs to ignore from a table.
]]
local function filterOutJobsToIgnore(jobs, jobsToIgnore)
local filteredJobs = {}
for i = 1, #jobs do
if not jobsToIgnore[jobs[i]] then
table.insert(filteredJobs, jobs[i])
end
end
return filteredJobs
end
local function getListItems(keyName, max)
return rcall('LRANGE', keyName, 0, max - 1)
end
local function removeListJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getListItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
rcall("LTRIM", keyName, #jobs, -1)
return count
end
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get ZSet items.
]]
local function getZSetItems(keyName, max)
return rcall('ZRANGE', keyName, 0, max - 1)
end
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getZSetItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
if(#jobs > 0) then
for from, to in batches(#jobs, 7000) do
rcall("ZREM", keyName, unpack(jobs, from, to))
end
end
return count
end
local function removeLockKeys(keys)
for i, key in ipairs(keys) do
rcall("DEL", baseKey .. key .. ':lock')
end
end
-- 1) Check if paused, if not return with error.
if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
return -1 -- Error, NotPaused
end
-- 2) Check if there are active jobs, if there are and not "force" return error.
local activeKey = baseKey .. 'active'
local activeJobs = getListItems(activeKey, maxCount)
if (#activeJobs > 0) then
if(ARGV[2] == "") then
return -2 -- Error, ExistActiveJobs
end
end
removeLockKeys(activeJobs)
maxCount = removeJobs(activeJobs, true, baseKey, maxCount)
rcall("LTRIM", activeKey, #activeJobs, -1)
if(maxCount <= 0) then
return 1
end
local delayedKey = baseKey .. 'delayed'
maxCount = removeZSetJobs(delayedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local repeatKey = baseKey .. 'repeat'
local repeatJobsIds = getZSetItems(repeatKey, maxCount)
for i, key in ipairs(repeatJobsIds) do
local jobKey = repeatKey .. ":" .. key
rcall("DEL", jobKey)
end
if(#repeatJobsIds > 0) then
for from, to in batches(#repeatJobsIds, 7000) do
rcall("ZREM", repeatKey, unpack(repeatJobsIds, from, to))
end
end
maxCount = maxCount - #repeatJobsIds
if(maxCount <= 0) then
return 1
end
local completedKey = baseKey .. 'completed'
maxCount = removeZSetJobs(completedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local pausedKey = baseKey .. 'paused'
maxCount = removeListJobs(pausedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local prioritizedKey = baseKey .. 'prioritized'
maxCount = removeZSetJobs(prioritizedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local failedKey = baseKey .. 'failed'
maxCount = removeZSetJobs(failedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
if(maxCount > 0) then
rcall("DEL",
baseKey .. 'events',
baseKey .. 'delay',
baseKey .. 'stalled-check',
baseKey .. 'stalled',
baseKey .. 'id',
baseKey .. 'pc',
baseKey .. 'marker',
baseKey .. 'meta',
baseKey .. 'metrics:completed',
baseKey .. 'metrics:completed:data',
baseKey .. 'metrics:failed',
baseKey .. 'metrics:failed:data')
return 0
else
return 1
end
`;cp.obliterate={name:"obliterate",content:Nre,keys:2}});var hM=h(lp=>{"use strict";Object.defineProperty(lp,"__esModule",{value:!0});lp.paginate=void 0;var qre=`--[[
Paginate a set or hash
Input:
KEYS[1] key pointing to the set or hash to be paginated.
ARGV[1] page start offset
ARGV[2] page end offset (-1 for all the elements)
ARGV[3] cursor
ARGV[4] offset
ARGV[5] max iterations
ARGV[6] fetch jobs?
Output:
[cursor, offset, items, numItems]
]]
local rcall = redis.call
-- Includes
--[[
Function to achieve pagination for a set or hash.
This function simulates pagination in the most efficient way possible
for a set using sscan or hscan.
The main limitation is that sets are not order preserving, so the
pagination is not stable. This means that if the set is modified
between pages, the same element may appear in different pages.
]] -- Maximum number of elements to be returned by sscan per iteration.
local maxCount = 100
-- Finds the cursor, and returns the first elements available for the requested page.
local function findPage(key, command, pageStart, pageSize, cursor, offset,
maxIterations, fetchJobs)
local items = {}
local jobs = {}
local iterations = 0
repeat
-- Iterate over the set using sscan/hscan.
local result = rcall(command, key, cursor, "COUNT", maxCount)
cursor = result[1]
local members = result[2]
local step = 1
if command == "HSCAN" then
step = 2
end
if #members == 0 then
-- If the result is empty, we can return the result.
return cursor, offset, items, jobs
end
local chunkStart = offset
local chunkEnd = offset + #members / step
local pageEnd = pageStart + pageSize
if chunkEnd < pageStart then
-- If the chunk is before the page, we can skip it.
offset = chunkEnd
elseif chunkStart > pageEnd then
-- If the chunk is after the page, we can return the result.
return cursor, offset, items, jobs
else
-- If the chunk is overlapping the page, we need to add the elements to the result.
for i = 1, #members, step do
if offset >= pageEnd then
return cursor, offset, items, jobs
end
if offset >= pageStart then
local index = #items + 1
if fetchJobs ~= nil then
jobs[#jobs+1] = rcall("HGETALL", members[i])
end
if step == 2 then
items[index] = {members[i], members[i + 1]}
else
items[index] = members[i]
end
end
offset = offset + 1
end
end
iterations = iterations + 1
until cursor == "0" or iterations >= maxIterations
return cursor, offset, items, jobs
end
local key = KEYS[1]
local scanCommand = "SSCAN"
local countCommand = "SCARD"
local type = rcall("TYPE", key)["ok"]
if type == "none" then
return {0, 0, {}, 0}
elseif type == "hash" then
scanCommand = "HSCAN"
countCommand = "HLEN"
elseif type ~= "set" then
return
redis.error_reply("Pagination is only supported for sets and hashes.")
end
local numItems = rcall(countCommand, key)
local startOffset = tonumber(ARGV[1])
local endOffset = tonumber(ARGV[2])
if endOffset == -1 then
endOffset = numItems
end
local pageSize = (endOffset - startOffset) + 1
local cursor, offset, items, jobs = findPage(key, scanCommand, startOffset,
pageSize, ARGV[3], tonumber(ARGV[4]),
tonumber(ARGV[5]), ARGV[6])
return {cursor, offset, items, numItems, jobs}
`;lp.paginate={name:"paginate",content:qre,keys:1}});var yM=h(up=>{"use strict";Object.defineProperty(up,"__esModule",{value:!0});up.pause=void 0;var Fre=`--[[
Pauses or resumes a queue globally.
Input:
KEYS[1] 'wait' or 'paused'
KEYS[2] 'paused' or 'wait'
KEYS[3] 'meta'
KEYS[4] 'prioritized'
KEYS[5] events stream key
KEYS[6] 'delayed'
KEYS[7] 'marker'
ARGV[1] 'paused' or 'resumed'
Event:
publish paused or resumed event.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
local markerKey = KEYS[7]
local hasJobs = rcall("EXISTS", KEYS[1]) == 1
--TODO: check this logic to be reused when changing a delay
if hasJobs then rcall("RENAME", KEYS[1], KEYS[2]) end
if ARGV[1] == "paused" then
rcall("HSET", KEYS[3], "paused", 1)
rcall("DEL", markerKey)
else
rcall("HDEL", KEYS[3], "paused")
if hasJobs or rcall("ZCARD", KEYS[4]) > 0 then
-- Add marker if there are waiting or priority jobs
rcall("ZADD", markerKey, 0, "0")
else
addDelayMarkerIfNeeded(markerKey, KEYS[6])
end
end
rcall("XADD", KEYS[5], "*", "event", ARGV[1]);
`;up.pause={name:"pause",content:Fre,keys:7}});var bM=h(dp=>{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});dp.promote=void 0;var Jre=`--[[
Promotes a job that is currently "delayed" to the "waiting" state
Input:
KEYS[1] 'delayed'
KEYS[2] 'wait'
KEYS[3] 'paused'
KEYS[4] 'meta'
KEYS[5] 'prioritized'
KEYS[6] 'active'
KEYS[7] 'pc' priority counter
KEYS[8] 'event stream'
KEYS[9] 'marker'
ARGV[1] queue.toKey('')
ARGV[2] jobId
Output:
0 - OK
-3 - Job not in delayed zset.
Events:
'waiting'
]]
local rcall = redis.call
local jobId = ARGV[2]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
if rcall("ZREM", KEYS[1], jobId) == 1 then
local jobKey = ARGV[1] .. jobId
local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
local metaKey = KEYS[4]
local markerKey = KEYS[9]
-- Remove delayed "marker" from the wait list if there is any.
-- Since we are adding a job we do not need the marker anymore.
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[6], KEYS[2], KEYS[3])
local marker = rcall("LINDEX", target, 0)
if marker and string.sub(marker, 1, 2) == "0:" then rcall("LPOP", target) end
if priority == 0 then
-- LIFO or FIFO
addJobInTargetList(target, markerKey, "LPUSH", isPausedOrMaxed, jobId)
else
addJobWithPriority(markerKey, KEYS[5], priority, jobId, KEYS[7], isPausedOrMaxed)
end
rcall("XADD", KEYS[8], "*", "event", "waiting", "jobId", jobId, "prev",
"delayed");
rcall("HSET", jobKey, "delay", 0)
return 0
else
return -3
end
`;dp.promote={name:"promote",content:Jre,keys:9}});var gM=h(pp=>{"use strict";Object.defineProperty(pp,"__esModule",{value:!0});pp.releaseLock=void 0;var Ure=`--[[
Release lock
Input:
KEYS[1] 'lock',
ARGV[1] token
ARGV[2] lock duration in milliseconds
Output:
"OK" if lock extended successfully.
]]
local rcall = redis.call
if rcall("GET", KEYS[1]) == ARGV[1] then
return rcall("DEL", KEYS[1])
else
return 0
end
`;pp.releaseLock={name:"releaseLock",content:Ure,keys:1}});var vM=h(fp=>{"use strict";Object.defineProperty(fp,"__esModule",{value:!0});fp.removeChildDependency=void 0;var Gre=`--[[
Break parent-child dependency by removing
child reference from parent
Input:
KEYS[1] 'key' prefix,
ARGV[1] job key
ARGV[2] parent key
Output:
0 - OK
1 - There is not relationship.
-1 - Missing job key
-5 - Missing parent key
]]
local rcall = redis.call
local jobKey = ARGV[1]
local parentKey = ARGV[2]
-- Includes
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
if rcall("EXISTS", jobKey) ~= 1 then return -1 end
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
if removeParentDependencyKey(jobKey, false, parentKey, KEYS[1], nil) then
rcall("HDEL", jobKey, "parentKey", "parent")
return 0
else
return 1
end`;fp.removeChildDependency={name:"removeChildDependency",content:Gre,keys:1}});var xM=h(mp=>{"use strict";Object.defineProperty(mp,"__esModule",{value:!0});mp.removeDeduplicationKey=void 0;var Bre=`--[[
Remove deduplication key if it matches the job id.
Input:
KEYS[1] deduplication key
ARGV[1] job id
Output:
0 - false
1 - true
]]
local rcall = redis.call
local deduplicationKey = KEYS[1]
local jobId = ARGV[1]
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
return rcall("DEL", deduplicationKey)
end
return 0
`;mp.removeDeduplicationKey={name:"removeDeduplicationKey",content:Bre,keys:1}});var EM=h(hp=>{"use strict";Object.defineProperty(hp,"__esModule",{value:!0});hp.removeJob=void 0;var $re=`--[[
Remove a job from all the statuses it may be in as well as all its data.
In order to be able to remove a job, it cannot be active.
Input:
KEYS[1] jobKey
KEYS[2] repeat key
ARGV[1] jobId
ARGV[2] remove children
ARGV[3] queue prefix
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to recursively check if there are no locks
on the jobs to be removed.
returns:
boolean
]]
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function isLocked( prefix, jobId, removeChildren)
local jobKey = prefix .. jobId;
-- Check if this job is locked
local lockKey = jobKey .. ':lock'
local lock = rcall("GET", lockKey)
if not lock then
if removeChildren == "1" then
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if (#dependencies > 0) then
for i, childJobKey in ipairs(dependencies) do
-- We need to get the jobId for this job.
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
local result = isLocked( childJobPrefix, childJobId, removeChildren )
if result then
return true
end
end
end
end
return false
end
return true
end
--[[
Remove a job from all the statuses it may be in as well as all its data,
including its children. Active children can be ignored.
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove from any state.
returns:
prev state
]]
local function removeJobFromAnyState( prefix, jobId)
-- We start with the ZSCORE checks, since they have O(1) complexity
if rcall("ZSCORE", prefix .. "completed", jobId) then
rcall("ZREM", prefix .. "completed", jobId)
return "completed"
elseif rcall("ZSCORE", prefix .. "waiting-children", jobId) then
rcall("ZREM", prefix .. "waiting-children", jobId)
return "waiting-children"
elseif rcall("ZSCORE", prefix .. "delayed", jobId) then
rcall("ZREM", prefix .. "delayed", jobId)
return "delayed"
elseif rcall("ZSCORE", prefix .. "failed", jobId) then
rcall("ZREM", prefix .. "failed", jobId)
return "failed"
elseif rcall("ZSCORE", prefix .. "prioritized", jobId) then
rcall("ZREM", prefix .. "prioritized", jobId)
return "prioritized"
-- We remove only 1 element from the list, since we assume they are not added multiple times
elseif rcall("LREM", prefix .. "wait", 1, jobId) == 1 then
return "wait"
elseif rcall("LREM", prefix .. "paused", 1, jobId) == 1 then
return "paused"
elseif rcall("LREM", prefix .. "active", 1, jobId) == 1 then
return "active"
end
return "unknown"
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local removeJobChildren
local removeJobWithChildren
removeJobChildren = function(prefix, jobKey, options)
-- Check if this job has children
-- If so, we are going to try to remove the children recursively in a depth-first way
-- because if some job is locked, we must exit with an error.
if not options.ignoreProcessed then
local processed = rcall("HGETALL", jobKey .. ":processed")
if #processed > 0 then
for i = 1, #processed, 2 do
local childJobId = getJobIdFromKey(processed[i])
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local failed = rcall("HGETALL", jobKey .. ":failed")
if #failed > 0 then
for i = 1, #failed, 2 do
local childJobId = getJobIdFromKey(failed[i])
local childJobPrefix = getJobKeyPrefix(failed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local unsuccessful = rcall("ZRANGE", jobKey .. ":unsuccessful", 0, -1)
if #unsuccessful > 0 then
for i = 1, #unsuccessful, 1 do
local childJobId = getJobIdFromKey(unsuccessful[i])
local childJobPrefix = getJobKeyPrefix(unsuccessful[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if #dependencies > 0 then
for i, childJobKey in ipairs(dependencies) do
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
removeJobWithChildren = function(prefix, jobId, parentKey, options)
local jobKey = prefix .. jobId
if options.ignoreLocked then
if isLocked(prefix, jobId) then
return
end
end
-- Check if job is in the failed zset
local failedSet = prefix .. "failed"
if not (options.ignoreProcessed and rcall("ZSCORE", failedSet, jobId)) then
removeParentDependencyKey(jobKey, false, parentKey, nil)
if options.removeChildren then
removeJobChildren(prefix, jobKey, options)
end
local prev = removeJobFromAnyState(prefix, jobId)
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(prefix, jobId, deduplicationId)
if removeJobKeys(jobKey) > 0 then
local metaKey = prefix .. "meta"
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed",
"jobId", jobId, "prev", prev)
end
end
end
local jobId = ARGV[1]
local shouldRemoveChildren = ARGV[2]
local prefix = ARGV[3]
local jobKey = KEYS[1]
local repeatKey = KEYS[2]
if isJobSchedulerJob(jobId, jobKey, repeatKey) then
return -8
end
if not isLocked(prefix, jobId, shouldRemoveChildren) then
local options = {
removeChildren = shouldRemoveChildren == "1",
ignoreProcessed = false,
ignoreLocked = false
}
removeJobWithChildren(prefix, jobId, nil, options)
return 1
end
return 0
`;hp.removeJob={name:"removeJob",content:$re,keys:2}});var SM=h(yp=>{"use strict";Object.defineProperty(yp,"__esModule",{value:!0});yp.removeJobScheduler=void 0;var Vre=`--[[
Removes a job scheduler and its next scheduled job.
Input:
KEYS[1] job schedulers key
KEYS[2] delayed jobs key
KEYS[3] events key
ARGV[1] job scheduler id
ARGV[2] prefix key
Output:
0 - OK
1 - Missing repeat job
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local jobSchedulerId = ARGV[1]
local prefix = ARGV[2]
local millis = rcall("ZSCORE", KEYS[1], jobSchedulerId)
if millis then
-- Delete next programmed job.
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. millis
if(rcall("ZREM", KEYS[2], delayedJobId) == 1) then
removeJobKeys(prefix .. delayedJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", delayedJobId, "prev", "delayed")
end
end
if(rcall("ZREM", KEYS[1], jobSchedulerId) == 1) then
rcall("DEL", KEYS[1] .. ":" .. jobSchedulerId)
return 0
end
return 1
`;yp.removeJobScheduler={name:"removeJobScheduler",content:Vre,keys:3}});var wM=h(bp=>{"use strict";Object.defineProperty(bp,"__esModule",{value:!0});bp.removeOrphanedJobs=void 0;var Hre=`--[[
Removes orphaned job keys that exist in Redis but are not referenced
in any queue state set. Checks each candidate atomically.
Input:
KEYS[1] base prefix key including trailing colon (e.g. bull:queueName:)
ARGV[1] number of state key suffixes
ARGV[2 .. 1+N] state key suffixes (e.g. active, wait, completed, ...)
ARGV[2+N] number of job sub-key suffixes
ARGV[3+N .. 2+N+M] job sub-key suffixes (e.g. logs, dependencies, ...)
ARGV[3+N+M .. end] candidate job IDs to check
Output:
number of removed jobs
]]
local rcall = redis.call
local basePrefix = KEYS[1]
-- Parse state key suffixes and cache their full key names + types.
local stateKeyCount = tonumber(ARGV[1])
local stateKeys = {}
local stateKeyTypes = {}
for i = 1, stateKeyCount do
local fullKey = basePrefix .. ARGV[1 + i]
stateKeys[i] = fullKey
stateKeyTypes[i] = rcall('TYPE', fullKey)['ok']
end
-- Parse job sub-key suffixes.
local subKeyCountIdx = 2 + stateKeyCount
local subKeyCount = tonumber(ARGV[subKeyCountIdx])
local subKeySuffixes = {}
for i = 1, subKeyCount do
subKeySuffixes[i] = ARGV[subKeyCountIdx + i]
end
-- Process candidate job IDs.
local candidateStart = subKeyCountIdx + subKeyCount + 1
local removedCount = 0
for c = candidateStart, #ARGV do
local jobId = ARGV[c]
local found = false
for i = 1, stateKeyCount do
local kt = stateKeyTypes[i]
if kt == 'list' then
if rcall('LPOS', stateKeys[i], jobId) then
found = true
break
end
elseif kt == 'zset' then
if rcall('ZSCORE', stateKeys[i], jobId) then
found = true
break
end
elseif kt == 'set' then
if rcall('SISMEMBER', stateKeys[i], jobId) == 1 then
found = true
break
end
end
end
if not found then
local jobKey = basePrefix .. jobId
local keysToDelete = { jobKey }
for _, suffix in ipairs(subKeySuffixes) do
keysToDelete[#keysToDelete + 1] = jobKey .. ':' .. suffix
end
rcall('DEL', unpack(keysToDelete))
removedCount = removedCount + 1
end
end
return removedCount
`;bp.removeOrphanedJobs={name:"removeOrphanedJobs",content:Hre,keys:1}});var IM=h(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});gp.removeRepeatable=void 0;var zre=`--[[
Removes a repeatable job
Input:
KEYS[1] repeat jobs key
KEYS[2] delayed jobs key
KEYS[3] events key
ARGV[1] old repeat job id
ARGV[2] options concat
ARGV[3] repeat job key
ARGV[4] prefix key
Output:
0 - OK
1 - Missing repeat job
Events:
'removed'
]]
local rcall = redis.call
local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
-- Includes
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
-- legacy removal TODO: remove in next breaking change
if millis then
-- Delete next programmed job.
local repeatJobId = ARGV[1] .. millis
if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
removeJobKeys(ARGV[4] .. repeatJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
end
end
if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
return 0
end
-- new removal
millis = rcall("ZSCORE", KEYS[1], ARGV[3])
if millis then
-- Delete next programmed job.
local repeatJobId = "repeat:" .. ARGV[3] .. ":" .. millis
if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
removeJobKeys(ARGV[4] .. repeatJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed")
end
end
if(rcall("ZREM", KEYS[1], ARGV[3]) == 1) then
rcall("DEL", KEYS[1] .. ":" .. ARGV[3])
return 0
end
return 1
`;gp.removeRepeatable={name:"removeRepeatable",content:zre,keys:3}});var _M=h(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});vp.removeUnprocessedChildren=void 0;var Yre=`--[[
Remove a job from all the statuses it may be in as well as all its data.
In order to be able to remove a job, it cannot be active.
Input:
KEYS[1] jobKey
KEYS[2] meta key
ARGV[1] prefix
ARGV[2] jobId
Events:
'removed' for every children removed
]]
-- Includes
--[[
Remove a job from all the statuses it may be in as well as all its data,
including its children. Active children can be ignored.
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove from any state.
returns:
prev state
]]
local function removeJobFromAnyState( prefix, jobId)
-- We start with the ZSCORE checks, since they have O(1) complexity
if rcall("ZSCORE", prefix .. "completed", jobId) then
rcall("ZREM", prefix .. "completed", jobId)
return "completed"
elseif rcall("ZSCORE", prefix .. "waiting-children", jobId) then
rcall("ZREM", prefix .. "waiting-children", jobId)
return "waiting-children"
elseif rcall("ZSCORE", prefix .. "delayed", jobId) then
rcall("ZREM", prefix .. "delayed", jobId)
return "delayed"
elseif rcall("ZSCORE", prefix .. "failed", jobId) then
rcall("ZREM", prefix .. "failed", jobId)
return "failed"
elseif rcall("ZSCORE", prefix .. "prioritized", jobId) then
rcall("ZREM", prefix .. "prioritized", jobId)
return "prioritized"
-- We remove only 1 element from the list, since we assume they are not added multiple times
elseif rcall("LREM", prefix .. "wait", 1, jobId) == 1 then
return "wait"
elseif rcall("LREM", prefix .. "paused", 1, jobId) == 1 then
return "paused"
elseif rcall("LREM", prefix .. "active", 1, jobId) == 1 then
return "active"
end
return "unknown"
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
--[[
Function to recursively check if there are no locks
on the jobs to be removed.
returns:
boolean
]]
local function isLocked( prefix, jobId, removeChildren)
local jobKey = prefix .. jobId;
-- Check if this job is locked
local lockKey = jobKey .. ':lock'
local lock = rcall("GET", lockKey)
if not lock then
if removeChildren == "1" then
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if (#dependencies > 0) then
for i, childJobKey in ipairs(dependencies) do
-- We need to get the jobId for this job.
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
local result = isLocked( childJobPrefix, childJobId, removeChildren )
if result then
return true
end
end
end
end
return false
end
return true
end
local removeJobChildren
local removeJobWithChildren
removeJobChildren = function(prefix, jobKey, options)
-- Check if this job has children
-- If so, we are going to try to remove the children recursively in a depth-first way
-- because if some job is locked, we must exit with an error.
if not options.ignoreProcessed then
local processed = rcall("HGETALL", jobKey .. ":processed")
if #processed > 0 then
for i = 1, #processed, 2 do
local childJobId = getJobIdFromKey(processed[i])
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local failed = rcall("HGETALL", jobKey .. ":failed")
if #failed > 0 then
for i = 1, #failed, 2 do
local childJobId = getJobIdFromKey(failed[i])
local childJobPrefix = getJobKeyPrefix(failed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local unsuccessful = rcall("ZRANGE", jobKey .. ":unsuccessful", 0, -1)
if #unsuccessful > 0 then
for i = 1, #unsuccessful, 1 do
local childJobId = getJobIdFromKey(unsuccessful[i])
local childJobPrefix = getJobKeyPrefix(unsuccessful[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if #dependencies > 0 then
for i, childJobKey in ipairs(dependencies) do
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
removeJobWithChildren = function(prefix, jobId, parentKey, options)
local jobKey = prefix .. jobId
if options.ignoreLocked then
if isLocked(prefix, jobId) then
return
end
end
-- Check if job is in the failed zset
local failedSet = prefix .. "failed"
if not (options.ignoreProcessed and rcall("ZSCORE", failedSet, jobId)) then
removeParentDependencyKey(jobKey, false, parentKey, nil)
if options.removeChildren then
removeJobChildren(prefix, jobKey, options)
end
local prev = removeJobFromAnyState(prefix, jobId)
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(prefix, jobId, deduplicationId)
if removeJobKeys(jobKey) > 0 then
local metaKey = prefix .. "meta"
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed",
"jobId", jobId, "prev", prev)
end
end
end
local prefix = ARGV[1]
local jobId = ARGV[2]
local jobKey = KEYS[1]
local metaKey = KEYS[2]
local options = {
removeChildren = "1",
ignoreProcessed = true,
ignoreLocked = true
}
removeJobChildren(prefix, jobKey, options)
`;vp.removeUnprocessedChildren={name:"removeUnprocessedChildren",content:Yre,keys:2}});var kM=h(xp=>{"use strict";Object.defineProperty(xp,"__esModule",{value:!0});xp.reprocessJob=void 0;var Wre=`--[[
Attempts to reprocess a job
Input:
KEYS[1] job key
KEYS[2] events stream
KEYS[3] job state
KEYS[4] wait key
KEYS[5] meta
KEYS[6] paused key
KEYS[7] active key
KEYS[8] marker key
ARGV[1] job.id
ARGV[2] (job.opts.lifo ? 'R' : 'L') + 'PUSH'
ARGV[3] propVal - failedReason/returnvalue
ARGV[4] prev state - failed/completed
ARGV[5] reset attemptsMade - "1" or "0"
ARGV[6] reset attemptsStarted - "1" or "0"
Output:
1 means the operation was a success
-1 means the job does not exist
-3 means the job was not found in the expected set.
]]
local rcall = redis.call;
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local jobKey = KEYS[1]
if rcall("EXISTS", jobKey) == 1 then
local jobId = ARGV[1]
if (rcall("ZREM", KEYS[3], jobId) == 1) then
local attributesToRemove = {}
if ARGV[5] == "1" then
table.insert(attributesToRemove, "atm")
end
if ARGV[6] == "1" then
table.insert(attributesToRemove, "ats")
end
rcall("HDEL", jobKey, "finishedOn", "processedOn", ARGV[3], unpack(attributesToRemove))
local target, isPausedOrMaxed = getTargetQueueList(KEYS[5], KEYS[7], KEYS[4], KEYS[6])
addJobInTargetList(target, KEYS[8], ARGV[2], isPausedOrMaxed, jobId)
local parentKey = rcall("HGET", jobKey, "parentKey")
if parentKey and rcall("EXISTS", parentKey) == 1 then
if ARGV[4] == "failed" then
if rcall("ZREM", parentKey .. ":unsuccessful", jobKey) == 1 or
rcall("ZREM", parentKey .. ":failed", jobKey) == 1 then
rcall("SADD", parentKey .. ":dependencies", jobKey)
end
else
if rcall("HDEL", parentKey .. ":processed", jobKey) == 1 then
rcall("SADD", parentKey .. ":dependencies", jobKey)
end
end
end
local maxEvents = getOrSetMaxEvents(KEYS[5])
-- Emit waiting event
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId, "prev", ARGV[4]);
return 1
else
return -3
end
else
return -1
end
`;xp.reprocessJob={name:"reprocessJob",content:Wre,keys:8}});var TM=h(Ep=>{"use strict";Object.defineProperty(Ep,"__esModule",{value:!0});Ep.retryJob=void 0;var Qre=`--[[
Retries a failed job by moving it back to the wait queue.
Input:
KEYS[1] 'active',
KEYS[2] 'wait'
KEYS[3] 'paused'
KEYS[4] job key
KEYS[5] 'meta'
KEYS[6] events stream
KEYS[7] delayed key
KEYS[8] prioritized key
KEYS[9] 'pc' priority counter
KEYS[10] 'marker'
KEYS[11] 'stalled'
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] pushCmd
ARGV[4] jobId
ARGV[5] token
ARGV[6] optional job fields to update
Events:
'waiting'
Output:
0 - OK
-1 - Missing key
-2 - Missing lock
-3 - Job not in active set
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local target, isPausedOrMaxed = getTargetQueueList(KEYS[5], KEYS[1], KEYS[2], KEYS[3])
local markerKey = KEYS[10]
-- Check if there are delayed jobs that we can move to wait.
-- test example: when there are delayed jobs between retries
promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[8], KEYS[6], ARGV[1], ARGV[2], KEYS[9], isPausedOrMaxed)
local jobKey = KEYS[4]
if rcall("EXISTS", jobKey) == 1 then
local errorCode = removeLock(jobKey, KEYS[11], ARGV[5], ARGV[4])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobKey, ARGV[6])
local numRemovedElements = rcall("LREM", KEYS[1], -1, ARGV[4])
if (numRemovedElements < 1) then return -3 end
local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
--need to re-evaluate after removing job from active
isPausedOrMaxed = isQueuePausedOrMaxed(KEYS[5], KEYS[1])
-- Standard or priority add
if priority == 0 then
addJobInTargetList(target, markerKey, ARGV[3], isPausedOrMaxed, ARGV[4])
else
addJobWithPriority(markerKey, KEYS[8], priority, ARGV[4], KEYS[9], isPausedOrMaxed)
end
rcall("HINCRBY", jobKey, "atm", 1)
local maxEvents = getOrSetMaxEvents(KEYS[5])
-- Emit waiting event
rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", ARGV[4], "prev", "active")
return 0
else
return -1
end
`;Ep.retryJob={name:"retryJob",content:Qre,keys:11}});var AM=h(Sp=>{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});Sp.saveStacktrace=void 0;var Xre=`--[[
Save stacktrace and failedReason.
Input:
KEYS[1] job key
ARGV[1] stacktrace
ARGV[2] failedReason
Output:
0 - OK
-1 - Missing key
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[1]) == 1 then
rcall("HMSET", KEYS[1], "stacktrace", ARGV[1], "failedReason", ARGV[2])
return 0
else
return -1
end
`;Sp.saveStacktrace={name:"saveStacktrace",content:Xre,keys:1}});var KM=h(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});wp.updateData=void 0;var Zre=`--[[
Update job data
Input:
KEYS[1] Job id key
ARGV[1] data
Output:
0 - OK
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
rcall("HSET", KEYS[1], "data", ARGV[1])
return 0
else
return -1
end
`;wp.updateData={name:"updateData",content:Zre,keys:1}});var jM=h(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});Ip.updateJobScheduler=void 0;var ene=`--[[
Updates a job scheduler and adds next delayed job
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed'
KEYS[3] 'wait' key
KEYS[4] 'paused' key
KEYS[5] 'meta'
KEYS[6] 'prioritized' key
KEYS[7] 'marker',
KEYS[8] 'id'
KEYS[9] events stream key
KEYS[10] 'pc' priority counter
KEYS[11] producer key
KEYS[12] 'active' key
ARGV[1] next milliseconds
ARGV[2] jobs scheduler id
ARGV[3] Json stringified delayed data
ARGV[4] msgpacked delayed opts
ARGV[5] timestamp
ARGV[6] prefix key
ARGV[7] producer id
Output:
next delayed job id - OK
]] local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local waitKey = KEYS[3]
local pausedKey = KEYS[4]
local metaKey = KEYS[5]
local prioritizedKey = KEYS[6]
local nextMillis = tonumber(ARGV[1])
local jobSchedulerId = ARGV[2]
local timestamp = tonumber(ARGV[5])
local prefixKey = ARGV[6]
local producerId = ARGV[7]
local jobOpts = cmsgpack.unpack(ARGV[4])
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function addJobFromScheduler(jobKey, jobId, opts, waitKey, pausedKey, activeKey, metaKey,
prioritizedKey, priorityCounter, delayedKey, markerKey, eventsKey, name, maxEvents, timestamp,
data, jobSchedulerId, repeatDelay)
opts['delay'] = repeatDelay
opts['jobId'] = jobId
storeAndEnqueueJob(eventsKey, jobKey, jobId, name, data, opts,
timestamp, nil, nil, jobSchedulerId, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounter, delayedKey, markerKey)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
local nextMillis
if not prevMillis then
if startDate then
-- Assuming startDate is passed as milliseconds from JavaScript
nextMillis = tonumber(startDate)
nextMillis = nextMillis > now and nextMillis or now
else
nextMillis = now
-- For the first iteration with no startDate and an explicit
-- offset, align nextMillis to the next offset slot strictly
-- after now. Without this the user-supplied offset is
-- recorded but ignored, and the first job fires at now
-- instead of the next aligned timestamp (issue #3705).
if offset and offset > 0 then
local aligned = math.floor(nextMillis / every) * every + offset
if aligned <= nextMillis then
aligned = aligned + every
end
nextMillis = aligned
end
end
else
nextMillis = prevMillis + every
-- check if we may have missed some iterations
if nextMillis < now then
nextMillis = math.floor(now / every) * every + every + (offset or 0)
end
end
if not offset or offset == 0 then
local timeSlot = math.floor(nextMillis / every) * every;
offset = nextMillis - timeSlot;
end
-- Return a tuple nextMillis, offset
return math.floor(nextMillis), math.floor(offset)
end
local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
-- Validate that scheduler exists.
-- If it does not exist we should not iterate anymore.
if prevMillis then
prevMillis = tonumber(prevMillis)
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
local schedulerAttributes = rcall("HMGET", schedulerKey, "name", "data", "every", "startDate", "offset")
local every = tonumber(schedulerAttributes[3])
local now = tonumber(timestamp)
-- If every is not found in scheduler attributes, try to get it from job options
if not every and jobOpts['repeat'] and jobOpts['repeat']['every'] then
every = tonumber(jobOpts['repeat']['every'])
end
if every then
local startDate = schedulerAttributes[4]
local jobOptsOffset = jobOpts['repeat'] and jobOpts['repeat']['offset'] or 0
local offset = schedulerAttributes[5] or jobOptsOffset or 0
local newOffset
nextMillis, newOffset = getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
if not offset then
rcall("HSET", schedulerKey, "offset", newOffset)
jobOpts['repeat']['offset'] = newOffset
end
end
local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
local nextDelayedJobKey = schedulerKey .. ":" .. nextMillis
local currentDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
if producerId == currentDelayedJobId then
local eventsKey = KEYS[9]
local maxEvents = getOrSetMaxEvents(metaKey)
if rcall("EXISTS", nextDelayedJobKey) ~= 1 then
rcall("ZADD", repeatKey, nextMillis, jobSchedulerId)
rcall("HINCRBY", schedulerKey, "ic", 1)
rcall("INCR", KEYS[8])
-- TODO: remove this workaround in next breaking change,
-- all job-schedulers must save job data
local templateData = schedulerAttributes[2] or ARGV[3]
if templateData and templateData ~= '{}' then
rcall("HSET", schedulerKey, "data", templateData)
end
local delay = nextMillis - now
-- Fast Clamp delay to minimum of 0
if delay < 0 then
delay = 0
end
jobOpts["delay"] = delay
addJobFromScheduler(nextDelayedJobKey, nextDelayedJobId, jobOpts, waitKey, pausedKey, KEYS[12], metaKey,
prioritizedKey, KEYS[10], delayedKey, KEYS[7], eventsKey, schedulerAttributes[1], maxEvents, ARGV[5],
templateData or '{}', jobSchedulerId, delay)
-- TODO: remove this workaround in next breaking change
if KEYS[11] ~= "" then
rcall("HSET", KEYS[11], "nrjid", nextDelayedJobId)
end
return nextDelayedJobId .. "" -- convert to string
else
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "duplicated", "jobId", nextDelayedJobId)
end
end
end
`;Ip.updateJobScheduler={name:"updateJobScheduler",content:ene,keys:12}});var OM=h(_p=>{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});_p.updateProgress=void 0;var tne=`--[[
Update job progress
Input:
KEYS[1] Job id key
KEYS[2] event stream key
KEYS[3] meta key
ARGV[1] id
ARGV[2] progress
Output:
0 - OK
-1 - Missing job.
Event:
progress(jobId, progress)
]]
local rcall = redis.call
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
local maxEvents = getOrSetMaxEvents(KEYS[3])
rcall("HSET", KEYS[1], "progress", ARGV[2])
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event", "progress",
"jobId", ARGV[1], "data", ARGV[2]);
return 0
else
return -1
end
`;_p.updateProgress={name:"updateProgress",content:tne,keys:3}});var RM=h(kp=>{"use strict";Object.defineProperty(kp,"__esModule",{value:!0});kp.updateRepeatableJobMillis=void 0;var rne=`--[[
Adds a repeatable job
Input:
KEYS[1] 'repeat' key
ARGV[1] next milliseconds
ARGV[2] custom key
ARGV[3] legacy custom key TODO: remove this logic in next breaking change
Output:
repeatableKey - OK
]]
local rcall = redis.call
local repeatKey = KEYS[1]
local nextMillis = ARGV[1]
local customKey = ARGV[2]
local legacyCustomKey = ARGV[3]
if rcall("ZSCORE", repeatKey, customKey) then
rcall("ZADD", repeatKey, nextMillis, customKey)
return customKey
elseif rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
rcall("ZADD", repeatKey, nextMillis, legacyCustomKey)
return legacyCustomKey
end
return ''
`;kp.updateRepeatableJobMillis={name:"updateRepeatableJobMillis",content:rne,keys:1}});var CM=h(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});var F=(Tt(),ht(kt));F.__exportStar(MP(),q);F.__exportStar(LP(),q);F.__exportStar(NP(),q);F.__exportStar(qP(),q);F.__exportStar(FP(),q);F.__exportStar(JP(),q);F.__exportStar(UP(),q);F.__exportStar(GP(),q);F.__exportStar(BP(),q);F.__exportStar($P(),q);F.__exportStar(VP(),q);F.__exportStar(HP(),q);F.__exportStar(zP(),q);F.__exportStar(YP(),q);F.__exportStar(WP(),q);F.__exportStar(QP(),q);F.__exportStar(XP(),q);F.__exportStar(ZP(),q);F.__exportStar(eM(),q);F.__exportStar(tM(),q);F.__exportStar(rM(),q);F.__exportStar(nM(),q);F.__exportStar(iM(),q);F.__exportStar(sM(),q);F.__exportStar(aM(),q);F.__exportStar(oM(),q);F.__exportStar(cM(),q);F.__exportStar(lM(),q);F.__exportStar(uM(),q);F.__exportStar(dM(),q);F.__exportStar(pM(),q);F.__exportStar(fM(),q);F.__exportStar(mM(),q);F.__exportStar(hM(),q);F.__exportStar(yM(),q);F.__exportStar(bM(),q);F.__exportStar(gM(),q);F.__exportStar(vM(),q);F.__exportStar(xM(),q);F.__exportStar(EM(),q);F.__exportStar(SM(),q);F.__exportStar(wM(),q);F.__exportStar(IM(),q);F.__exportStar(_M(),q);F.__exportStar(kM(),q);F.__exportStar(TM(),q);F.__exportStar(AM(),q);F.__exportStar(KM(),q);F.__exportStar(jM(),q);F.__exportStar(OM(),q);F.__exportStar(RM(),q)});var Zo=h(Kp=>{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});Kp.RedisConnection=void 0;var nne=(Tt(),ht(kt)),ine=require("events"),DM=fv(),PM=Ye(),Ct=$t(),sne=Id(),ane=CM(),one=["BullMQ: WARNING! Your redis options maxRetriesPerRequest must be null","and will be overridden by BullMQ."].join(" "),cne="BullMQ: Your redis options maxRetriesPerRequest must be null.",Tp=Symbol("bullmqClusterReconnectPromise"),d0=Symbol("bullmqClusterPatchedForBlocking"),Ap=Symbol("bullmqClusterOriginalBzpopmin"),p0=Symbol("bullmqClusterWrappedBzpopmin"),ya=Symbol("bullmqClusterPatchRefCount"),Yi=Symbol("bullmqClusterClosingRefCount"),Xo=class r extends ine.EventEmitter{constructor(e,t){if(super(),this.extraOptions=t,this.capabilities={canDoubleTimeout:!1,canBlockFor1Ms:!0},this.status="initializing",this.dbType="redis",this.packageVersion=sne.version,this.disabledBlockingClusterReconnect=!1,this.extraOptions=Object.assign({shared:!1,blocking:!0,skipVersionCheck:!1,skipWaitingForReady:!1},t),!(0,Ct.isRedisInstance)(e))this.checkBlockingOptions(one,e),this.opts=Object.assign({port:6379,host:"127.0.0.1",retryStrategy:function(n){return Math.max(Math.min(Math.exp(n),2e4),1e3)}},e),this.extraOptions.blocking&&(this.opts.maxRetriesPerRequest=null);else{if(this._client=e,this._client.options.keyPrefix)throw new Error("BullMQ: ioredis does not support ioredis prefixes, use the prefix option instead.");(0,Ct.isRedisCluster)(this._client)?this.opts=this._client.options.redisOptions:this.opts=this._client.options,this.checkBlockingOptions(cne,this.opts,!0)}this.skipVersionCheck=t?.skipVersionCheck||!!(this.opts&&this.opts.skipVersionCheck),this.handleClientError=n=>{this.emit("error",n)},this.handleClientClose=()=>{this.emit("close")},this.handleClientReady=()=>{this.emit("ready")},this.initializing=this.init(),this.initializing.catch(n=>this.emit("error",n))}checkBlockingOptions(e,t,n=!1){if(this.extraOptions.blocking&&t&&t.maxRetriesPerRequest){if(n)throw new Error(e);console.error(e)}}static async waitUntilReady(e){if(e.status==="ready"||e.status==="connect"&&(0,Ct.isRedisCluster)(e))return;if(e.status==="wait")return e.connect();if(e.status==="end")throw new Error(PM.CONNECTION_CLOSED_ERROR_MSG);let t,n,i;try{await new Promise((s,a)=>{let o;i=c=>{o=c},t=()=>{s()},n=()=>{e.status!=="end"?a(o||new Error(PM.CONNECTION_CLOSED_ERROR_MSG)):o?a(o):s()},(0,Ct.increaseMaxListeners)(e,3),e.once("ready",t),e.on("end",n),e.once("error",i)})}finally{e.removeListener("end",n),e.removeListener("error",i),e.removeListener("ready",t),(0,Ct.decreaseMaxListeners)(e,3)}}get client(){return this.initializing}loadCommands(e,t){let n=t||ane;for(let i in n){let s=`${n[i].name}:${e}`;this._client[s]||this._client.defineCommand(s,{numberOfKeys:n[i].keys,lua:n[i].content})}}async init(){if(!this._client){let e=this.opts,{url:t}=e,n=nne.__rest(e,["url"]);this._client=t?new DM.default(t,n):new DM.default(n)}if((0,Ct.increaseMaxListeners)(this._client,3),this._client.on("error",this.handleClientError),this._client.on("close",this.handleClientClose),this._client.on("ready",this.handleClientReady),this.patchBlockingClusterClient(),this.extraOptions.skipWaitingForReady||await r.waitUntilReady(this._client),this.loadCommands(this.packageVersion),this._client.status!=="end"){let e=await this.getRedisVersionAndType();if(this.version=e.version,this.dbType=e.databaseType,this.skipVersionCheck!==!0&&!this.closing){if((0,Ct.isRedisVersionLowerThan)(this.version,r.minimumVersion,this.dbType))throw new Error(`Redis version needs to be greater or equal than ${r.minimumVersion} Current: ${this.version}`);(0,Ct.isRedisVersionLowerThan)(this.version,r.recommendedMinimumVersion,this.dbType)&&console.warn(`It is highly recommended to use a minimum Redis version of ${r.recommendedMinimumVersion}
Current: ${this.version}`)}this.capabilities={canDoubleTimeout:!(0,Ct.isRedisVersionLowerThan)(this.version,"6.0.0",this.dbType),canBlockFor1Ms:!(0,Ct.isRedisVersionLowerThan)(this.version,"7.0.8",this.dbType)},this.status="ready"}return this._client}patchBlockingClusterClient(){let e=this._client,t=e;if(!this.extraOptions.blocking||!(0,Ct.isRedisCluster)(e)||typeof t.bzpopmin!="function"||(t[ya]=(t[ya]||0)+1,this.patchedBlockingClusterClient=t,t[d0]))return;let n=t.bzpopmin,i=async(...s)=>{await r.reconnectClusterIfNeeded(t);try{return await n.apply(t,s)}catch(a){let o=a;if(r.shouldReconnectClusterAfterError(t,o))try{await r.reconnectCluster(t)}catch{}throw o}};t[Ap]=n,t[p0]=i,t[d0]=!0,t.bzpopmin=i}disableBlockingClusterReconnect(){let e=this.patchedBlockingClusterClient;!e||this.disabledBlockingClusterReconnect||(e[Yi]=(e[Yi]||0)+1,this.disabledBlockingClusterReconnect=!0)}releaseBlockingClusterClientPatch(){let e=this.patchedBlockingClusterClient;if(!e)return;if(this.disabledBlockingClusterReconnect){let n=(e[Yi]||1)-1;n>0?e[Yi]=n:delete e[Yi],this.disabledBlockingClusterReconnect=!1}let t=(e[ya]||1)-1;if(t>0){e[ya]=t,this.patchedBlockingClusterClient=void 0;return}e[Ap]&&e.bzpopmin===e[p0]&&(e.bzpopmin=e[Ap]),delete e[ya],delete e[Yi],delete e[Ap],delete e[p0],delete e[d0],this.patchedBlockingClusterClient=void 0}static isClusterWithEmptyNodes(e){return typeof e.nodes=="function"&&e.nodes().length===0}static isReconnectingDisabled(e){let t=e[ya]||0,n=e[Yi]||0;return t===0||n>=t||e.status==="end"||e.status==="closing"}static async reconnectClusterIfNeeded(e){!r.isReconnectingDisabled(e)&&r.isClusterWithEmptyNodes(e)&&await r.reconnectCluster(e)}static shouldReconnectClusterAfterError(e,t){var n,i;if(r.isReconnectingDisabled(e))return!1;let s=[t.message,(n=t.cause)===null||n===void 0?void 0:n.message,(i=t.lastNodeError)===null||i===void 0?void 0:i.message].join(" ");return r.isClusterWithEmptyNodes(e)||/Command timed out|Failed to refresh slots cache/i.test(s)}static async reconnectCluster(e){r.isReconnectingDisabled(e)||(e[Tp]||(e[Tp]=(async()=>{e.disconnect(!1),await e.connect()})().finally(()=>{e[Tp]=null})),await e[Tp])}async disconnect(e=!0){let t=await this.client;if(t.status!=="end"){let n,i;if(!e)return t.disconnect();let s=new Promise((a,o)=>{(0,Ct.increaseMaxListeners)(t,2),t.once("end",a),t.once("error",o),n=a,i=o});t.disconnect();try{await s}finally{(0,Ct.decreaseMaxListeners)(t,2),t.removeListener("end",n),t.removeListener("error",i)}}}async reconnect(){return(await this.client).connect()}async close(e=!1){if(!this.closing){let t=this.status;this.status="closing",this.closing=!0,this.disableBlockingClusterReconnect();try{t==="ready"&&await this.initializing,this.extraOptions.shared||(t=="initializing"||e?this._client.disconnect():await this._client.quit(),this._client.status="end")}catch(n){if((0,Ct.isNotConnectionError)(n))throw n}finally{this.releaseBlockingClusterClientPatch(),this._client.off("error",this.handleClientError),this._client.off("close",this.handleClientClose),this._client.off("ready",this.handleClientReady),(0,Ct.decreaseMaxListeners)(this._client,3),this.removeAllListeners(),this.status="closed"}}}async getRedisVersionAndType(){if(this.skipVersionCheck)return{version:r.minimumVersion,databaseType:"redis"};let e=await this._client.info(),t="redis_version:",n="maxmemory_policy:",i=e.split(/\r?\n/),s,a="redis";for(let o=0;o<i.length;o++){let c=i[o];if(c.includes("dragonfly_version:")||c.includes("server:Dragonfly")?(a="dragonfly",c.indexOf("dragonfly_version:")===0&&(s=c.substr(18))):c.includes("valkey_version:")||c.includes("server:Valkey")?(a="valkey",c.indexOf("valkey_version:")===0&&(s=c.substr(15))):c.indexOf(t)===0&&(s=c.substr(t.length),a==="redis"&&(a="redis")),c.indexOf(n)===0){let l=c.substr(n.length);l!=="noeviction"&&console.warn(`IMPORTANT! Eviction policy is ${l}. It should be "noeviction"`)}}if(!s){for(let o of i)if(o.includes("version:")){let c=o.split(":");if(c.length>=2){s=c[1];break}}}return{version:s||r.minimumVersion,databaseType:a}}get redisVersion(){return this.version}get databaseType(){return this.dbType}};Kp.RedisConnection=Xo;Xo.minimumVersion="5.0.0";Xo.recommendedMinimumVersion="6.2.0"});var MM=h(Op=>{"use strict";Object.defineProperty(Op,"__esModule",{value:!0});Op.FlowProducer=void 0;var lne=require("events"),li=$t(),une=ha(),jp=Kd(),dne=Zo(),Zr=Mt(),f0=class extends lne.EventEmitter{constructor(e={connection:{}},t=dne.RedisConnection){super(),this.opts=e,this.opts=Object.assign({prefix:"bull"},e),this.connection=new t(e.connection,{shared:(0,li.isRedisInstance)(e.connection),blocking:!1,skipVersionCheck:e.skipVersionCheck,skipWaitingForReady:e.skipWaitingForReady}),this.connection.on("error",n=>this.emit("error",n)),this.connection.on("close",()=>{this.closing||this.emit("ioredis:close")}),this.queueKeys=new jp.QueueKeys(e.prefix),e?.telemetry&&(this.telemetry=e.telemetry)}emit(e,...t){return super.emit(e,...t)}off(e,t){return super.off(e,t),this}on(e,t){return super.on(e,t),this}once(e,t){return super.once(e,t),this}get client(){return this.connection.client}get Job(){return une.Job}waitUntilReady(){return this.client}async add(e,t){var n;if(this.closing)return;let s=(await this.connection.client).multi(),a=(n=e?.opts)===null||n===void 0?void 0:n.parent,o=(0,li.getParentKey)(a),c=o?`${o}:dependencies`:void 0;return(0,li.trace)(this.telemetry,Zr.SpanKind.PRODUCER,e.queueName,"addFlow",e.queueName,async l=>{l?.setAttributes({[Zr.TelemetryAttributes.FlowName]:e.name});let u=await this.addNode({multi:s,node:e,queuesOpts:t?.queuesOptions,parent:{parentOpts:a,parentDependenciesKey:c}}),d=await s.exec(),[p]=d||[];if(p){let[f,m]=p;if(f)throw f;if(typeof m=="number"&&m<0)throw this.toFlowError(m,o);typeof m=="string"&&(u.job.id=m)}return u})}async getFlow(e){if(this.closing)return;let t=await this.connection.client,n=Object.assign({depth:10,maxChildren:20,prefix:this.opts.prefix},e);return this.getNode(t,n)}async addBulk(e){if(this.closing)return;let n=(await this.connection.client).multi();return(0,li.trace)(this.telemetry,Zr.SpanKind.PRODUCER,"","addBulkFlows","",async i=>{i?.setAttributes({[Zr.TelemetryAttributes.BulkCount]:e.length,[Zr.TelemetryAttributes.BulkNames]:e.map(o=>o.name).join(",")});let s=await this.addNodes(n,e),a=await n.exec();for(let o=0;o<s.length;++o){let c=a?.[o];if(!c)continue;let[l,u]=c;!l&&typeof u=="string"&&(s[o].job.id=u)}return s})}async addNode({multi:e,node:t,parent:n,queuesOpts:i}){var s,a;let o=t.prefix||this.opts.prefix,c=this.queueFromNode(t,new jp.QueueKeys(o),o),l=i&&i[t.queueName],u=(s=l?.defaultJobOptions)!==null&&s!==void 0?s:{},d=((a=t.opts)===null||a===void 0?void 0:a.jobId)||(0,li.randomUUID)();return(0,li.trace)(this.telemetry,Zr.SpanKind.PRODUCER,t.queueName,"addNode",t.queueName,async(p,f)=>{var m,y;p?.setAttributes({[Zr.TelemetryAttributes.JobName]:t.name,[Zr.TelemetryAttributes.JobId]:d});let b=t.opts,g=b?.telemetry;if(f&&b){let k=(m=b.telemetry)===null||m===void 0?void 0:m.omitContext,M=((y=b.telemetry)===null||y===void 0?void 0:y.metadata)||!k&&f;(M||k)&&(g={metadata:M,omitContext:k})}let x=new this.Job(c,t.name,t.data,Object.assign(Object.assign(Object.assign({},u),b),{parent:n?.parentOpts,telemetry:g}),d),I=(0,li.getParentKey)(n?.parentOpts);if(t.children&&t.children.length>0){let k=d,M=new jp.QueueKeys(t.prefix||this.opts.prefix);await x.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,addToWaitingChildren:!0,parentKey:I});let U=`${M.toKey(t.queueName,k)}:dependencies`,re=await this.addChildren({multi:e,nodes:t.children,parent:{parentOpts:{id:k,queue:M.getQueueQualifiedName(t.queueName)},parentDependenciesKey:U},queuesOpts:i});return{job:x,children:re}}else return await x.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,parentKey:I}),{job:x}})}addNodes(e,t){return Promise.all(t.map(n=>{var i;let s=(i=n?.opts)===null||i===void 0?void 0:i.parent,a=(0,li.getParentKey)(s),o=a?`${a}:dependencies`:void 0;return this.addNode({multi:e,node:n,parent:{parentOpts:s,parentDependenciesKey:o}})}))}async getNode(e,t){let n=this.queueFromNode(t,new jp.QueueKeys(t.prefix),t.prefix),i=await this.Job.fromId(n,t.id);if(i){let{processed:s={},unprocessed:a=[],failed:o=[],ignored:c={}}=await i.getDependencies({failed:{count:t.maxChildren},processed:{count:t.maxChildren},unprocessed:{count:t.maxChildren},ignored:{count:t.maxChildren}}),l=Object.keys(s),u=Object.keys(c),d=l.length+a.length+u.length+o.length,p=t.depth-1;if(d>0&&p){let f=await this.getChildren(e,[...l,...a,...o,...u],p,t.maxChildren);return{job:i,children:f}}else return{job:i}}}addChildren({multi:e,nodes:t,parent:n,queuesOpts:i}){return Promise.all(t.map(s=>this.addNode({multi:e,node:s,parent:n,queuesOpts:i})))}getChildren(e,t,n,i){let s=a=>{let[o,c,l]=a.split(":");return this.getNode(e,{id:l,queueName:c,prefix:o,depth:n,maxChildren:i})};return Promise.all([...t.map(s)])}queueFromNode(e,t,n){return{client:this.connection.client,name:e.queueName,keys:t.getKeys(e.queueName),toKey:i=>t.toKey(e.queueName,i),opts:{prefix:n,connection:{}},qualifiedName:t.getQueueQualifiedName(e.queueName),closing:this.closing,waitUntilReady:async()=>this.connection.client,removeListener:this.removeListener.bind(this),emit:this.emit.bind(this),on:this.on.bind(this),redisVersion:this.connection.redisVersion,databaseType:this.connection.databaseType,trace:async()=>{}}}toFlowError(e,t){let n;switch(e){case Zr.ErrorCode.ParentJobNotExist:n=new Error(`Missing key for parent job ${t}. addJob`);break;case Zr.ErrorCode.ParentJobCannotBeReplaced:n=new Error(`The parent job ${t} cannot be replaced. addJob`);break;default:n=new Error(`Unknown code ${e} error for addJob`)}return n.code=e,n}async close(){this.closing||(this.closing=this.connection.close()),await this.closing}disconnect(){return this.connection.disconnect()}};Op.FlowProducer=f0});var pN=h(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});var kn=class extends Error{},w0=class extends kn{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},I0=class extends kn{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},_0=class extends kn{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},pi=class extends kn{},qp=class extends kn{constructor(e){super(`Invalid unit ${e}`)}},ot=class extends kn{},en=class extends kn{constructor(){super("Zone is an abstract class")}},R="numeric",Rr="short",Wt="long",Fp={year:R,month:R,day:R},fL={year:R,month:Rr,day:R},pne={year:R,month:Rr,day:R,weekday:Rr},mL={year:R,month:Wt,day:R},hL={year:R,month:Wt,day:R,weekday:Wt},yL={hour:R,minute:R},bL={hour:R,minute:R,second:R},gL={hour:R,minute:R,second:R,timeZoneName:Rr},vL={hour:R,minute:R,second:R,timeZoneName:Wt},xL={hour:R,minute:R,hourCycle:"h23"},EL={hour:R,minute:R,second:R,hourCycle:"h23"},SL={hour:R,minute:R,second:R,hourCycle:"h23",timeZoneName:Rr},wL={hour:R,minute:R,second:R,hourCycle:"h23",timeZoneName:Wt},IL={year:R,month:R,day:R,hour:R,minute:R},_L={year:R,month:R,day:R,hour:R,minute:R,second:R},kL={year:R,month:Rr,day:R,hour:R,minute:R},TL={year:R,month:Rr,day:R,hour:R,minute:R,second:R},fne={year:R,month:Rr,day:R,weekday:Rr,hour:R,minute:R},AL={year:R,month:Wt,day:R,hour:R,minute:R,timeZoneName:Rr},KL={year:R,month:Wt,day:R,hour:R,minute:R,second:R,timeZoneName:Rr},jL={year:R,month:Wt,day:R,weekday:Wt,hour:R,minute:R,timeZoneName:Wt},OL={year:R,month:Wt,day:R,weekday:Wt,hour:R,minute:R,second:R,timeZoneName:Wt},mi=class{get type(){throw new en}get name(){throw new en}get ianaName(){return this.name}get isUniversal(){throw new en}offsetName(e,t){throw new en}formatOffset(e,t){throw new en}offset(e){throw new en}equals(e){throw new en}get isValid(){throw new en}},m0=null,sc=class r extends mi{static get instance(){return m0===null&&(m0=new r),m0}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return UL(e,t,n)}formatOffset(e,t){return ic(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},k0=new Map;function mne(r){let e=k0.get(r);return e===void 0&&(e=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:r,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),k0.set(r,e)),e}var hne={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function yne(r,e){let t=r.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(t),[,i,s,a,o,c,l,u]=n;return[a,i,s,o,c,l,u]}function bne(r,e){let t=r.formatToParts(e),n=[];for(let i=0;i<t.length;i++){let{type:s,value:a}=t[i],o=hne[s];s==="era"?n[o]=a:$(o)||(n[o]=parseInt(a,10))}return n}var h0=new Map,Tn=class r extends mi{static create(e){let t=h0.get(e);return t===void 0&&h0.set(e,t=new r(e)),t}static resetCache(){h0.clear(),k0.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=r.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return UL(e,t,n,this.name)}formatOffset(e,t){return ic(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=mne(this.name),[i,s,a,o,c,l,u]=n.formatToParts?bne(n,t):yne(n,t);o==="BC"&&(i=-Math.abs(i)+1);let p=Hp({year:i,month:s,day:a,hour:c===24?0:c,minute:l,second:u,millisecond:0}),f=+t,m=f%1e3;return f-=m>=0?m:1e3+m,(p-f)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},LM={};function gne(r,e={}){let t=JSON.stringify([r,e]),n=LM[t];return n||(n=new Intl.ListFormat(r,e),LM[t]=n),n}var T0=new Map;function A0(r,e={}){let t=JSON.stringify([r,e]),n=T0.get(t);return n===void 0&&(n=new Intl.DateTimeFormat(r,e),T0.set(t,n)),n}var K0=new Map;function vne(r,e={}){let t=JSON.stringify([r,e]),n=K0.get(t);return n===void 0&&(n=new Intl.NumberFormat(r,e),K0.set(t,n)),n}var j0=new Map;function xne(r,e={}){let{base:t,...n}=e,i=JSON.stringify([r,n]),s=j0.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(r,e),j0.set(i,s)),s}var tc=null;function Ene(){return tc||(tc=new Intl.DateTimeFormat().resolvedOptions().locale,tc)}var O0=new Map;function RL(r){let e=O0.get(r);return e===void 0&&(e=new Intl.DateTimeFormat(r).resolvedOptions(),O0.set(r,e)),e}var R0=new Map;function Sne(r){let e=R0.get(r);if(!e){let t=new Intl.Locale(r);e="getWeekInfo"in t?t.getWeekInfo():t.weekInfo,"minimalDays"in e||(e={...CL,...e}),R0.set(r,e)}return e}function wne(r){let e=r.indexOf("-x-");e!==-1&&(r=r.substring(0,e));let t=r.indexOf("-u-");if(t===-1)return[r];{let n,i;try{n=A0(r).resolvedOptions(),i=r}catch{let c=r.substring(0,t);n=A0(c).resolvedOptions(),i=c}let{numberingSystem:s,calendar:a}=n;return[i,s,a]}}function Ine(r,e,t){return(t||e)&&(r.includes("-u-")||(r+="-u"),t&&(r+=`-ca-${t}`),e&&(r+=`-nu-${e}`)),r}function _ne(r){let e=[];for(let t=1;t<=12;t++){let n=Ae.utc(2009,t,1);e.push(r(n))}return e}function kne(r){let e=[];for(let t=1;t<=7;t++){let n=Ae.utc(2016,11,13+t);e.push(r(n))}return e}function Rp(r,e,t,n){let i=r.listingMode();return i==="error"?null:i==="en"?t(e):n(e)}function Tne(r){return r.numberingSystem&&r.numberingSystem!=="latn"?!1:r.numberingSystem==="latn"||!r.locale||r.locale.startsWith("en")||RL(r.locale).numberingSystem==="latn"}var C0=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...a}=n;if(!t||Object.keys(a).length>0){let o={useGrouping:!1,...n};n.padTo>0&&(o.minimumIntegerDigits=n.padTo),this.inf=vne(e,o)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else{let t=this.floor?Math.floor(e):B0(e,3);return We(t,this.padTo)}}},D0=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let a=-1*(e.offset/60),o=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;e.offset!==0&&Tn.create(o).valid?(i=o,this.dt=e):(i="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=A0(t,s)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(t=>{if(t.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...t,value:n}}else return t}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},P0=class{constructor(e,t,n){this.opts={style:"long",...n},!t&&FL()&&(this.rtf=xne(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):zne(t,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},CL={firstDay:1,minimalDays:4,weekend:[6,7]},Ee=class r{static fromOpts(e){return r.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,i,s=!1){let a=e||_e.defaultLocale,o=a||(s?"en-US":Ene()),c=t||_e.defaultNumberingSystem,l=n||_e.defaultOutputCalendar,u=L0(i)||_e.defaultWeekSettings;return new r(o,c,l,u,a)}static resetCache(){tc=null,T0.clear(),K0.clear(),j0.clear(),O0.clear(),R0.clear()}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:i}={}){return r.create(e,t,n,i)}constructor(e,t,n,i,s){let[a,o,c]=wne(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=Ine(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Tne(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&t?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:r.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,L0(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Rp(this,e,$L,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");t&=!n;let i=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";if(!this.monthsCache[s][e]){let a=n?o=>this.dtFormatter(o,i).format():o=>this.extract(o,i,"month");this.monthsCache[s][e]=_ne(a)}return this.monthsCache[s][e]})}weekdays(e,t=!1){return Rp(this,e,zL,()=>{let n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=t?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=kne(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return Rp(this,void 0,()=>YL,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Ae.utc(2016,11,13,9),Ae.utc(2016,11,13,19)].map(t=>this.extract(t,e,"dayperiod"))}return this.meridiemCache})}eras(e){return Rp(this,e,WL,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[Ae.utc(-40,1,1),Ae.utc(2017,1,1)].map(n=>this.extract(n,t,"era"))),this.eraCache[e]})}extract(e,t,n){let i=this.dtFormatter(e,t),s=i.formatToParts(),a=s.find(o=>o.type.toLowerCase()===n);return a?a.value:null}numberFormatter(e={}){return new C0(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new D0(e,this.intl,t)}relFormatter(e={}){return new P0(this.intl,this.isEnglish(),e)}listFormatter(e={}){return gne(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||RL(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:JL()?Sne(this.locale):CL}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},y0=null,Qt=class r extends mi{static get utcInstance(){return y0===null&&(y0=new r(0)),y0}static instance(e){return e===0?r.utcInstance:new r(e)}static parseSpecifier(e){if(e){let t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new r(zp(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ic(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ic(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return ic(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},Jp=class extends mi{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function di(r,e){if($(r)||r===null)return e;if(r instanceof mi)return r;if(Cne(r)){let t=r.toLowerCase();return t==="default"?e:t==="local"||t==="system"?sc.instance:t==="utc"||t==="gmt"?Qt.utcInstance:Qt.parseSpecifier(t)||Tn.create(r)}else return fi(r)?Qt.instance(r):typeof r=="object"&&"offset"in r&&typeof r.offset=="function"?r:new Jp(r)}var F0={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},NM={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Ane=F0.hanidec.replace(/[\[|\]]/g,"").split("");function Kne(r){let e=parseInt(r,10);if(isNaN(e)){e="";for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);if(r[t].search(F0.hanidec)!==-1)e+=Ane.indexOf(r[t]);else for(let i in NM){let[s,a]=NM[i];n>=s&&n<=a&&(e+=n-s)}}return parseInt(e,10)}else return e}var M0=new Map;function jne(){M0.clear()}function jr({numberingSystem:r},e=""){let t=r||"latn",n=M0.get(t);n===void 0&&(n=new Map,M0.set(t,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${F0[t]}${e}`),n.set(e,i)),i}var qM=()=>Date.now(),FM="system",JM=null,UM=null,GM=null,BM=60,$M,VM=null,_e=class{static get now(){return qM}static set now(e){qM=e}static set defaultZone(e){FM=e}static get defaultZone(){return di(FM,sc.instance)}static get defaultLocale(){return JM}static set defaultLocale(e){JM=e}static get defaultNumberingSystem(){return UM}static set defaultNumberingSystem(e){UM=e}static get defaultOutputCalendar(){return GM}static set defaultOutputCalendar(e){GM=e}static get defaultWeekSettings(){return VM}static set defaultWeekSettings(e){VM=L0(e)}static get twoDigitCutoffYear(){return BM}static set twoDigitCutoffYear(e){BM=e%100}static get throwOnInvalid(){return $M}static set throwOnInvalid(e){$M=e}static resetCaches(){Ee.resetCache(),Tn.resetCache(),Ae.resetCache(),jne()}},Yt=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},DL=[0,31,59,90,120,151,181,212,243,273,304,334],PL=[0,31,60,91,121,152,182,213,244,274,305,335];function xr(r,e){return new Yt("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${r}, which is invalid`)}function J0(r,e,t){let n=new Date(Date.UTC(r,e-1,t));r<100&&r>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function ML(r,e,t){return t+(oc(r)?PL:DL)[e-1]}function LL(r,e){let t=oc(r)?PL:DL,n=t.findIndex(s=>s<e),i=e-t[n];return{month:n+1,day:i}}function U0(r,e){return(r-e+7)%7+1}function Up(r,e=4,t=1){let{year:n,month:i,day:s}=r,a=ML(n,i,s),o=U0(J0(n,i,s),t),c=Math.floor((a-o+14-e)/7),l;return c<1?(l=n-1,c=ac(l,e,t)):c>ac(n,e,t)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:o,...Yp(r)}}function HM(r,e=4,t=1){let{weekYear:n,weekNumber:i,weekday:s}=r,a=U0(J0(n,1,e),t),o=xa(n),c=i*7+s-a-7+e,l;c<1?(l=n-1,c+=xa(l)):c>o?(l=n+1,c-=xa(n)):l=n;let{month:u,day:d}=LL(l,c);return{year:l,month:u,day:d,...Yp(r)}}function b0(r){let{year:e,month:t,day:n}=r,i=ML(e,t,n);return{year:e,ordinal:i,...Yp(r)}}function zM(r){let{year:e,ordinal:t}=r,{month:n,day:i}=LL(e,t);return{year:e,month:n,day:i,...Yp(r)}}function YM(r,e){if(!$(r.localWeekday)||!$(r.localWeekNumber)||!$(r.localWeekYear)){if(!$(r.weekday)||!$(r.weekNumber)||!$(r.weekYear))throw new pi("Cannot mix locale-based week fields with ISO-based week fields");return $(r.localWeekday)||(r.weekday=r.localWeekday),$(r.localWeekNumber)||(r.weekNumber=r.localWeekNumber),$(r.localWeekYear)||(r.weekYear=r.localWeekYear),delete r.localWeekday,delete r.localWeekNumber,delete r.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function One(r,e=4,t=1){let n=Vp(r.weekYear),i=Er(r.weekNumber,1,ac(r.weekYear,e,t)),s=Er(r.weekday,1,7);return n?i?s?!1:xr("weekday",r.weekday):xr("week",r.weekNumber):xr("weekYear",r.weekYear)}function Rne(r){let e=Vp(r.year),t=Er(r.ordinal,1,xa(r.year));return e?t?!1:xr("ordinal",r.ordinal):xr("year",r.year)}function NL(r){let e=Vp(r.year),t=Er(r.month,1,12),n=Er(r.day,1,Gp(r.year,r.month));return e?t?n?!1:xr("day",r.day):xr("month",r.month):xr("year",r.year)}function qL(r){let{hour:e,minute:t,second:n,millisecond:i}=r,s=Er(e,0,23)||e===24&&t===0&&n===0&&i===0,a=Er(t,0,59),o=Er(n,0,59),c=Er(i,0,999);return s?a?o?c?!1:xr("millisecond",i):xr("second",n):xr("minute",t):xr("hour",e)}function $(r){return typeof r>"u"}function fi(r){return typeof r=="number"}function Vp(r){return typeof r=="number"&&r%1===0}function Cne(r){return typeof r=="string"}function Dne(r){return Object.prototype.toString.call(r)==="[object Date]"}function FL(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function JL(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Pne(r){return Array.isArray(r)?r:[r]}function WM(r,e,t){if(r.length!==0)return r.reduce((n,i)=>{let s=[e(i),i];return n&&t(n[0],s[0])===n[0]?n:s},null)[1]}function Mne(r,e){return e.reduce((t,n)=>(t[n]=r[n],t),{})}function Sa(r,e){return Object.prototype.hasOwnProperty.call(r,e)}function L0(r){if(r==null)return null;if(typeof r!="object")throw new ot("Week settings must be an object");if(!Er(r.firstDay,1,7)||!Er(r.minimalDays,1,7)||!Array.isArray(r.weekend)||r.weekend.some(e=>!Er(e,1,7)))throw new ot("Invalid week settings");return{firstDay:r.firstDay,minimalDays:r.minimalDays,weekend:Array.from(r.weekend)}}function Er(r,e,t){return Vp(r)&&r>=e&&r<=t}function Lne(r,e){return r-e*Math.floor(r/e)}function We(r,e=2){let t=r<0,n;return t?n="-"+(""+-r).padStart(e,"0"):n=(""+r).padStart(e,"0"),n}function ui(r){if(!($(r)||r===null||r===""))return parseInt(r,10)}function Wi(r){if(!($(r)||r===null||r===""))return parseFloat(r)}function G0(r){if(!($(r)||r===null||r==="")){let e=parseFloat("0."+r)*1e3;return Math.floor(e)}}function B0(r,e,t="round"){let n=10**e;switch(t){case"expand":return r>0?Math.ceil(r*n)/n:Math.floor(r*n)/n;case"trunc":return Math.trunc(r*n)/n;case"round":return Math.round(r*n)/n;case"floor":return Math.floor(r*n)/n;case"ceil":return Math.ceil(r*n)/n;default:throw new RangeError(`Value rounding ${t} is out of range`)}}function oc(r){return r%4===0&&(r%100!==0||r%400===0)}function xa(r){return oc(r)?366:365}function Gp(r,e){let t=Lne(e-1,12)+1,n=r+(e-t)/12;return t===2?oc(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][t-1]}function Hp(r){let e=Date.UTC(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond);return r.year<100&&r.year>=0&&(e=new Date(e),e.setUTCFullYear(r.year,r.month-1,r.day)),+e}function QM(r,e,t){return-U0(J0(r,1,e),t)+e-1}function ac(r,e=4,t=1){let n=QM(r,e,t),i=QM(r+1,e,t);return(xa(r)-n+i)/7}function N0(r){return r>99?r:r>_e.twoDigitCutoffYear?1900+r:2e3+r}function UL(r,e,t,n=null){let i=new Date(r),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let a={timeZoneName:e,...s},o=new Intl.DateTimeFormat(t,a).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return o?o.value:null}function zp(r,e){let t=parseInt(r,10);Number.isNaN(t)&&(t=0);let n=parseInt(e,10)||0,i=t<0||Object.is(t,-0)?-n:n;return t*60+i}function GL(r){let e=Number(r);if(typeof r=="boolean"||r===""||!Number.isFinite(e))throw new ot(`Invalid unit value ${r}`);return e}function Bp(r,e){let t={};for(let n in r)if(Sa(r,n)){let i=r[n];if(i==null)continue;t[e(n)]=GL(i)}return t}function ic(r,e){let t=Math.trunc(Math.abs(r/60)),n=Math.trunc(Math.abs(r%60)),i=r>=0?"+":"-";switch(e){case"short":return`${i}${We(t,2)}:${We(n,2)}`;case"narrow":return`${i}${t}${n>0?`:${n}`:""}`;case"techie":return`${i}${We(t,2)}${We(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Yp(r){return Mne(r,["hour","minute","second","millisecond"])}var Nne=["January","February","March","April","May","June","July","August","September","October","November","December"],BL=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],qne=["J","F","M","A","M","J","J","A","S","O","N","D"];function $L(r){switch(r){case"narrow":return[...qne];case"short":return[...BL];case"long":return[...Nne];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var VL=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],HL=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Fne=["M","T","W","T","F","S","S"];function zL(r){switch(r){case"narrow":return[...Fne];case"short":return[...HL];case"long":return[...VL];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var YL=["AM","PM"],Jne=["Before Christ","Anno Domini"],Une=["BC","AD"],Gne=["B","A"];function WL(r){switch(r){case"narrow":return[...Gne];case"short":return[...Une];case"long":return[...Jne];default:return null}}function Bne(r){return YL[r.hour<12?0:1]}function $ne(r,e){return zL(e)[r.weekday-1]}function Vne(r,e){return $L(e)[r.month-1]}function Hne(r,e){return WL(e)[r.year<0?0:1]}function zne(r,e,t="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(r)===-1;if(t==="auto"&&s){let d=r==="days";switch(e){case 1:return d?"tomorrow":`next ${i[r][0]}`;case-1:return d?"yesterday":`last ${i[r][0]}`;case 0:return d?"today":`this ${i[r][0]}`}}let a=Object.is(e,-0)||e<0,o=Math.abs(e),c=o===1,l=i[r],u=n?c?l[1]:l[2]||l[1]:c?i[r][0]:r;return a?`${o} ${u} ago`:`in ${o} ${u}`}function XM(r,e){let t="";for(let n of r)n.literal?t+=n.val:t+=e(n.val);return t}var Yne={D:Fp,DD:fL,DDD:mL,DDDD:hL,t:yL,tt:bL,ttt:gL,tttt:vL,T:xL,TT:EL,TTT:SL,TTTT:wL,f:IL,ff:kL,fff:AL,ffff:jL,F:_L,FF:TL,FFF:KL,FFFF:OL},zt=class r{static create(e,t={}){return new r(e,t)}static parseFormat(e){let t=null,n="",i=!1,s=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),t=null,n="",i=!i):i||o===t?n+=o:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return Yne[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return We(e,t);let i={...this.opts};return t>0&&(i.padTo=t),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,t){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(f,m)=>this.loc.extract(e,f,m),a=f=>e.isOffsetFixed&&e.offset===0&&f.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,f.format):"",o=()=>n?Bne(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(f,m)=>n?Vne(e,f):s(m?{month:f}:{month:f,day:"numeric"},"month"),l=(f,m)=>n?$ne(e,f):s(m?{weekday:f}:{weekday:f,month:"long",day:"numeric"},"weekday"),u=f=>{let m=r.macroTokenToFormatOpts(f);return m?this.formatWithSystemDefault(e,m):f},d=f=>n?Hne(e,f):s({era:f},"era"),p=f=>{switch(f){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return o();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return u(f)}};return XM(r.parseFormat(t),p)}formatDurationFromString(e,t){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=u=>{switch(u[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},s=(u,d)=>p=>{let f=i(p);if(f){let m=d.isNegativeDuration&&f!==d.largestUnit?n:1,y;return this.opts.signMode==="negativeLargestOnly"&&f!==d.largestUnit?y="never":this.opts.signMode==="all"?y="always":y="auto",this.num(u.get(f)*m,p.length,y)}else return p},a=r.parseFormat(t),o=a.reduce((u,{literal:d,val:p})=>d?u:u.concat(p),[]),c=e.shiftTo(...o.map(i).filter(u=>u)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return XM(a,s(c,l))}},QL=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function wa(...r){let e=r.reduce((t,n)=>t+n.source,"");return RegExp(`^${e}$`)}function Ia(...r){return e=>r.reduce(([t,n,i],s)=>{let[a,o,c]=s(e,i);return[{...t,...a},o||n,c]},[{},null,1]).slice(0,2)}function _a(r,...e){if(r==null)return[null,null];for(let[t,n]of e){let i=t.exec(r);if(i)return n(i)}return[null,null]}function XL(...r){return(e,t)=>{let n={},i;for(i=0;i<r.length;i++)n[r[i]]=ui(e[t+i]);return[n,null,t+i]}}var ZL=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,Wne=`(?:${ZL.source}?(?:\\[(${QL.source})\\])?)?`,$0=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,eN=RegExp(`${$0.source}${Wne}`),V0=RegExp(`(?:[Tt]${eN.source})?`),Qne=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Xne=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Zne=/(\d{4})-?(\d{3})/,eie=XL("weekYear","weekNumber","weekDay"),tie=XL("year","ordinal"),rie=/(\d{4})-(\d\d)-(\d\d)/,tN=RegExp(`${$0.source} ?(?:${ZL.source}|(${QL.source}))?`),nie=RegExp(`(?: ${tN.source})?`);function Ea(r,e,t){let n=r[e];return $(n)?t:ui(n)}function iie(r,e){return[{year:Ea(r,e),month:Ea(r,e+1,1),day:Ea(r,e+2,1)},null,e+3]}function ka(r,e){return[{hours:Ea(r,e,0),minutes:Ea(r,e+1,0),seconds:Ea(r,e+2,0),milliseconds:G0(r[e+3])},null,e+4]}function cc(r,e){let t=!r[e]&&!r[e+1],n=zp(r[e+1],r[e+2]),i=t?null:Qt.instance(n);return[{},i,e+3]}function lc(r,e){let t=r[e]?Tn.create(r[e]):null;return[{},t,e+1]}var sie=RegExp(`^T?${$0.source}$`),aie=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function oie(r){let[e,t,n,i,s,a,o,c,l]=r,u=e[0]==="-",d=c&&c[0]==="-",p=(f,m=!1)=>f!==void 0&&(m||f&&u)?-f:f;return[{years:p(Wi(t)),months:p(Wi(n)),weeks:p(Wi(i)),days:p(Wi(s)),hours:p(Wi(a)),minutes:p(Wi(o)),seconds:p(Wi(c),c==="-0"),milliseconds:p(G0(l),d)}]}var cie={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function H0(r,e,t,n,i,s,a){let o={year:e.length===2?N0(ui(e)):ui(e),month:BL.indexOf(t)+1,day:ui(n),hour:ui(i),minute:ui(s)};return a&&(o.second=ui(a)),r&&(o.weekday=r.length>3?VL.indexOf(r)+1:HL.indexOf(r)+1),o}var lie=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function uie(r){let[,e,t,n,i,s,a,o,c,l,u,d]=r,p=H0(e,i,n,t,s,a,o),f;return c?f=cie[c]:l?f=0:f=zp(u,d),[p,new Qt(f)]}function die(r){return r.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var pie=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,fie=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,mie=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function ZM(r){let[,e,t,n,i,s,a,o]=r;return[H0(e,i,n,t,s,a,o),Qt.utcInstance]}function hie(r){let[,e,t,n,i,s,a,o]=r;return[H0(e,o,t,n,i,s,a),Qt.utcInstance]}var yie=wa(Qne,V0),bie=wa(Xne,V0),gie=wa(Zne,V0),vie=wa(eN),rN=Ia(iie,ka,cc,lc),xie=Ia(eie,ka,cc,lc),Eie=Ia(tie,ka,cc,lc),Sie=Ia(ka,cc,lc);function wie(r){return _a(r,[yie,rN],[bie,xie],[gie,Eie],[vie,Sie])}function Iie(r){return _a(die(r),[lie,uie])}function _ie(r){return _a(r,[pie,ZM],[fie,ZM],[mie,hie])}function kie(r){return _a(r,[aie,oie])}var Tie=Ia(ka);function Aie(r){return _a(r,[sie,Tie])}var Kie=wa(rie,nie),jie=wa(tN),Oie=Ia(ka,cc,lc);function Rie(r){return _a(r,[Kie,rN],[jie,Oie])}var eL="Invalid Duration",nN={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Cie={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...nN},vr=146097/400,ba=146097/4800,Die={years:{quarters:4,months:12,weeks:vr/7,days:vr,hours:vr*24,minutes:vr*24*60,seconds:vr*24*60*60,milliseconds:vr*24*60*60*1e3},quarters:{months:3,weeks:vr/28,days:vr/4,hours:vr*24/4,minutes:vr*24*60/4,seconds:vr*24*60*60/4,milliseconds:vr*24*60*60*1e3/4},months:{weeks:ba/7,days:ba,hours:ba*24,minutes:ba*24*60,seconds:ba*24*60*60,milliseconds:ba*24*60*60*1e3},...nN},Xi=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Pie=Xi.slice(0).reverse();function _n(r,e,t=!1){let n={values:t?e.values:{...r.values,...e.values||{}},loc:r.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||r.conversionAccuracy,matrix:e.matrix||r.matrix};return new tt(n)}function iN(r,e){var t;let n=(t=e.milliseconds)!=null?t:0;for(let i of Pie.slice(1))e[i]&&(n+=e[i]*r[i].milliseconds);return n}function tL(r,e){let t=iN(r,e)<0?-1:1;Xi.reduceRight((n,i)=>{if($(e[i]))return n;if(n){let s=e[n]*t,a=r[i][n],o=Math.floor(s/a);e[i]+=o*t,e[n]-=o*a*t}return i},null),Xi.reduce((n,i)=>{if($(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*r[n][i]}return i},null)}function rL(r){let e={};for(let[t,n]of Object.entries(r))n!==0&&(e[t]=n);return e}var tt=class r{constructor(e){let t=e.conversionAccuracy==="longterm"||!1,n=t?Die:Cie;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||Ee.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return r.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(e==null||typeof e!="object")throw new ot(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new r({values:Bp(e,r.normalizeUnit),loc:Ee.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(fi(e))return r.fromMillis(e);if(r.isDuration(e))return e;if(typeof e=="object")return r.fromObject(e);throw new ot(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){let[n]=kie(e);return n?r.fromObject(n,t):r.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){let[n]=Aie(e);return n?r.fromObject(n,t):r.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new ot("need to specify a reason the Duration is invalid");let n=e instanceof Yt?e:new Yt(e,t);if(_e.throwOnInvalid)throw new _0(n);return new r({invalid:n})}static normalizeUnit(e){let t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!t)throw new qp(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?zt.create(this.loc,n).formatDurationFromString(this,e):eL}toHuman(e={}){if(!this.isValid)return eL;let t=e.showZeros!==!1,n=Xi.map(i=>{let s=this.values[i];return $(s)||s===0&&!t?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=B0(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},Ae.fromMillis(t,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?iN(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let t=r.fromDurationLike(e),n={};for(let i of Xi)(Sa(t.values,i)||Sa(this.values,i))&&(n[i]=t.get(i)+this.get(i));return _n(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let t=r.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=GL(e(this.values[n],n));return _n(this,{values:t},!0)}get(e){return this[r.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let t={...this.values,...Bp(e,r.normalizeUnit)};return _n(this,{values:t})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:i}={}){let a={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:i,conversionAccuracy:n};return _n(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return tL(this.matrix,e),_n(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=rL(this.normalize().shiftToAll().toObject());return _n(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(a=>r.normalizeUnit(a));let t={},n={},i=this.toObject(),s;for(let a of Xi)if(e.indexOf(a)>=0){s=a;let o=0;for(let l in n)o+=this.matrix[l][a]*n[l],n[l]=0;fi(i[a])&&(o+=i[a]);let c=Math.trunc(o);t[a]=c,n[a]=(o*1e3-c*1e3)/1e3}else fi(i[a])&&(n[a]=i[a]);for(let a in n)n[a]!==0&&(t[s]+=a===s?n[a]:n[a]/this.matrix[s][a]);return tL(this.matrix,t),_n(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return _n(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=rL(this.values);return _n(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of Xi)if(!t(this.values[n],e.values[n]))return!1;return!0}},ga="Invalid Interval";function Mie(r,e){return!r||!r.isValid?es.invalid("missing or invalid start"):!e||!e.isValid?es.invalid("missing or invalid end"):e<r?es.invalid("end before start",`The end of an interval must be after its start, but you had start=${r.toISO()} and end=${e.toISO()}`):null}var es=class r{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new ot("need to specify a reason the Interval is invalid");let n=e instanceof Yt?e:new Yt(e,t);if(_e.throwOnInvalid)throw new I0(n);return new r({invalid:n})}static fromDateTimes(e,t){let n=ec(e),i=ec(t),s=Mie(n,i);return s??new r({start:n,end:i})}static after(e,t){let n=tt.fromDurationLike(t),i=ec(e);return r.fromDateTimes(i,i.plus(n))}static before(e,t){let n=tt.fromDurationLike(t),i=ec(e);return r.fromDateTimes(i.minus(n),i)}static fromISO(e,t){let[n,i]=(e||"").split("/",2);if(n&&i){let s,a;try{s=Ae.fromISO(n,t),a=s.isValid}catch{a=!1}let o,c;try{o=Ae.fromISO(i,t),c=o.isValid}catch{c=!1}if(a&&c)return r.fromDateTimes(s,o);if(a){let l=tt.fromISO(i,t);if(l.isValid)return r.after(s,l)}else if(c){let l=tt.fromISO(n,t);if(l.isValid)return r.before(o,l)}}return r.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),i;return t!=null&&t.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,t),Math.floor(i.diff(n,e).get(e))+(i.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:t}={}){return this.isValid?r.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];let t=e.map(ec).filter(a=>this.contains(a)).sort((a,o)=>a.toMillis()-o.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let a=t[s]||this.e,o=+a>+this.e?this.e:a;n.push(r.fromDateTimes(i,o)),i=o,s+=1}return n}splitBy(e){let t=tt.fromDurationLike(e);if(!this.isValid||!t.isValid||t.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,a=[];for(;n<this.e;){let o=this.start.plus(t.mapUnits(c=>c*i));s=+o>+this.e?this.e:o,a.push(r.fromDateTimes(n,s)),n=s,i+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let t=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return t>=n?null:r.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;let t=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return r.fromDateTimes(t,n)}static merge(e){let[t,n]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],a)=>s?s.overlaps(a)||s.abutsStart(a)?[i,s.union(a)]:[i.concat([s]),a]:[i,a],[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0,i=[],s=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),a=Array.prototype.concat(...s),o=a.sort((c,l)=>c.time-l.time);for(let c of o)n+=c.type==="s"?1:-1,n===1?t=c.time:(t&&+t!=+c.time&&i.push(r.fromDateTimes(t,c.time)),t=null);return r.merge(i)}difference(...e){return r.xor([this].concat(e)).map(t=>this.intersection(t)).filter(t=>t&&!t.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:ga}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=Fp,t={}){return this.isValid?zt.create(this.s.loc.clone(t),e).formatInterval(this):ga}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:ga}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:ga}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:ga}toFormat(e,{separator:t=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:ga}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):tt.invalid(this.invalidReason)}mapEndpoints(e){return r.fromDateTimes(e(this.s),e(this.e))}},Zi=class{static hasDST(e=_e.defaultZone){let t=Ae.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return Tn.isValidZone(e)}static normalizeZone(e){return di(e,_e.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||Ee.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||Ee.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||Ee.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||Ee.create(t,n,s)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||Ee.create(t,n,s)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:i=null}={}){return(i||Ee.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:i=null}={}){return(i||Ee.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return Ee.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return Ee.create(t,null,"gregory").eras(e)}static features(){return{relative:FL(),localeWeek:JL()}}};function nL(r,e){let t=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=t(e)-t(r);return Math.floor(tt.fromMillis(n).as("days"))}function Lie(r,e,t){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let u=nL(c,l);return(u-u%7)/7}],["days",nL]],i={},s=r,a,o;for(let[c,l]of n)t.indexOf(c)>=0&&(a=c,i[c]=l(r,e),o=s.plus(i),o>e?(i[c]--,r=s.plus(i),r>e&&(o=r,i[c]--,r=s.plus(i))):r=o);return[r,i,o,a]}function Nie(r,e,t,n){let[i,s,a,o]=Lie(r,e,t),c=e-i,l=t.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(a<e&&(a=i.plus({[o]:1})),a!==i&&(s[o]=(s[o]||0)+c/(a-i)));let u=tt.fromObject(s,n);return l.length>0?tt.fromMillis(c,n).shiftTo(...l).plus(u):u}var qie="missing Intl.DateTimeFormat.formatToParts support";function de(r,e=t=>t){return{regex:r,deser:([t])=>e(Kne(t))}}var Fie="\xA0",sN=`[ ${Fie}]`,aN=new RegExp(sN,"g");function Jie(r){return r.replace(/\./g,"\\.?").replace(aN,sN)}function iL(r){return r.replace(/\./g,"").replace(aN," ").toLowerCase()}function Or(r,e){return r===null?null:{regex:RegExp(r.map(Jie).join("|")),deser:([t])=>r.findIndex(n=>iL(t)===iL(n))+e}}function sL(r,e){return{regex:r,deser:([,t,n])=>zp(t,n),groups:e}}function Cp(r){return{regex:r,deser:([e])=>e}}function Uie(r){return r.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Gie(r,e){let t=jr(e),n=jr(e,"{2}"),i=jr(e,"{3}"),s=jr(e,"{4}"),a=jr(e,"{6}"),o=jr(e,"{1,2}"),c=jr(e,"{1,3}"),l=jr(e,"{1,6}"),u=jr(e,"{1,9}"),d=jr(e,"{2,4}"),p=jr(e,"{4,6}"),f=b=>({regex:RegExp(Uie(b.val)),deser:([g])=>g,literal:!0}),y=(b=>{if(r.literal)return f(b);switch(b.val){case"G":return Or(e.eras("short"),0);case"GG":return Or(e.eras("long"),0);case"y":return de(l);case"yy":return de(d,N0);case"yyyy":return de(s);case"yyyyy":return de(p);case"yyyyyy":return de(a);case"M":return de(o);case"MM":return de(n);case"MMM":return Or(e.months("short",!0),1);case"MMMM":return Or(e.months("long",!0),1);case"L":return de(o);case"LL":return de(n);case"LLL":return Or(e.months("short",!1),1);case"LLLL":return Or(e.months("long",!1),1);case"d":return de(o);case"dd":return de(n);case"o":return de(c);case"ooo":return de(i);case"HH":return de(n);case"H":return de(o);case"hh":return de(n);case"h":return de(o);case"mm":return de(n);case"m":return de(o);case"q":return de(o);case"qq":return de(n);case"s":return de(o);case"ss":return de(n);case"S":return de(c);case"SSS":return de(i);case"u":return Cp(u);case"uu":return Cp(o);case"uuu":return de(t);case"a":return Or(e.meridiems(),0);case"kkkk":return de(s);case"kk":return de(d,N0);case"W":return de(o);case"WW":return de(n);case"E":case"c":return de(t);case"EEE":return Or(e.weekdays("short",!1),1);case"EEEE":return Or(e.weekdays("long",!1),1);case"ccc":return Or(e.weekdays("short",!0),1);case"cccc":return Or(e.weekdays("long",!0),1);case"Z":case"ZZ":return sL(new RegExp(`([+-]${o.source})(?::(${n.source}))?`),2);case"ZZZ":return sL(new RegExp(`([+-]${o.source})(${n.source})?`),2);case"z":return Cp(/[a-z_+-/]{1,256}?/i);case" ":return Cp(/[^\S\n\r]/);default:return f(b)}})(r)||{invalidReason:qie};return y.token=r,y}var Bie={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function $ie(r,e,t){let{type:n,value:i}=r;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let s=e[n],a=n;n==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=t.hour12?"hour12":"hour24");let o=Bie[a];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Vie(r){return[`^${r.map(t=>t.regex).reduce((t,n)=>`${t}(${n.source})`,"")}$`,r]}function Hie(r,e,t){let n=r.match(e);if(n){let i={},s=1;for(let a in t)if(Sa(t,a)){let o=t[a],c=o.groups?o.groups+1:1;!o.literal&&o.token&&(i[o.token.val[0]]=o.deser(n.slice(s,s+c))),s+=c}return[n,i]}else return[n,{}]}function zie(r){let e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},t=null,n;return $(r.z)||(t=Tn.create(r.z)),$(r.Z)||(t||(t=new Qt(r.Z)),n=r.Z),$(r.q)||(r.M=(r.q-1)*3+1),$(r.h)||(r.h<12&&r.a===1?r.h+=12:r.h===12&&r.a===0&&(r.h=0)),r.G===0&&r.y&&(r.y=-r.y),$(r.u)||(r.S=G0(r.u)),[Object.keys(r).reduce((s,a)=>{let o=e(a);return o&&(s[o]=r[a]),s},{}),t,n]}var g0=null;function Yie(){return g0||(g0=Ae.fromMillis(1555555555555)),g0}function Wie(r,e){if(r.literal)return r;let t=zt.macroTokenToFormatOpts(r.val),n=lN(t,e);return n==null||n.includes(void 0)?r:n}function oN(r,e){return Array.prototype.concat(...r.map(t=>Wie(t,e)))}var $p=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=oN(zt.parseFormat(t),e),this.units=this.tokens.map(n=>Gie(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=Vie(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[t,n]=Hie(e,this.regex,this.handlers),[i,s,a]=n?zie(n):[null,null,void 0];if(Sa(n,"a")&&Sa(n,"H"))throw new pi("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:i,zone:s,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function cN(r,e,t){return new $p(r,t).explainFromTokens(e)}function Qie(r,e,t){let{result:n,zone:i,specificOffset:s,invalidReason:a}=cN(r,e,t);return[n,i,s,a]}function lN(r,e){if(!r)return null;let n=zt.create(e,r).dtFormatter(Yie()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(a=>$ie(a,r,s))}var v0="Invalid DateTime",aL=864e13;function rc(r){return new Yt("unsupported zone",`the zone "${r.name}" is not supported`)}function x0(r){return r.weekData===null&&(r.weekData=Up(r.c)),r.weekData}function E0(r){return r.localWeekData===null&&(r.localWeekData=Up(r.c,r.loc.getMinDaysInFirstWeek(),r.loc.getStartOfWeek())),r.localWeekData}function Qi(r,e){let t={ts:r.ts,zone:r.zone,c:r.c,o:r.o,loc:r.loc,invalid:r.invalid};return new Ae({...t,...e,old:t})}function uN(r,e,t){let n=r-e*60*1e3,i=t.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let s=t.offset(n);return i===s?[n,i]:[r-Math.min(i,s)*60*1e3,Math.max(i,s)]}function Dp(r,e){r+=e*60*1e3;let t=new Date(r);return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),hour:t.getUTCHours(),minute:t.getUTCMinutes(),second:t.getUTCSeconds(),millisecond:t.getUTCMilliseconds()}}function Mp(r,e,t){return uN(Hp(r),e,t)}function oL(r,e){let t=r.o,n=r.c.year+Math.trunc(e.years),i=r.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...r.c,year:n,month:i,day:Math.min(r.c.day,Gp(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=tt.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),o=Hp(s),[c,l]=uN(o,t,r.zone);return a!==0&&(c+=a,l=r.zone.offset(c)),{ts:c,o:l}}function va(r,e,t,n,i,s){let{setZone:a,zone:o}=t;if(r&&Object.keys(r).length!==0||e){let c=e||o,l=Ae.fromObject(r,{...t,zone:c,specificOffset:s});return a?l:l.setZone(o)}else return Ae.invalid(new Yt("unparsable",`the input "${i}" can't be parsed as ${n}`))}function Pp(r,e,t=!0){return r.isValid?zt.create(Ee.create("en-US"),{allowZ:t,forceSimple:!0}).formatDateTimeFromString(r,e):null}function S0(r,e,t){let n=r.c.year>9999||r.c.year<0,i="";if(n&&r.c.year>=0&&(i+="+"),i+=We(r.c.year,n?6:4),t==="year")return i;if(e){if(i+="-",i+=We(r.c.month),t==="month")return i;i+="-"}else if(i+=We(r.c.month),t==="month")return i;return i+=We(r.c.day),i}function cL(r,e,t,n,i,s,a){let o=!t||r.c.millisecond!==0||r.c.second!==0,c="";switch(a){case"day":case"month":case"year":break;default:if(c+=We(r.c.hour),a==="hour")break;if(e){if(c+=":",c+=We(r.c.minute),a==="minute")break;o&&(c+=":",c+=We(r.c.second))}else{if(c+=We(r.c.minute),a==="minute")break;o&&(c+=We(r.c.second))}if(a==="second")break;o&&(!n||r.c.millisecond!==0)&&(c+=".",c+=We(r.c.millisecond,3))}return i&&(r.isOffsetFixed&&r.offset===0&&!s?c+="Z":r.o<0?(c+="-",c+=We(Math.trunc(-r.o/60)),c+=":",c+=We(Math.trunc(-r.o%60))):(c+="+",c+=We(Math.trunc(r.o/60)),c+=":",c+=We(Math.trunc(r.o%60)))),s&&(c+="["+r.zone.ianaName+"]"),c}var dN={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Xie={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Zie={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Lp=["year","month","day","hour","minute","second","millisecond"],ese=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],tse=["year","ordinal","hour","minute","second","millisecond"];function Np(r){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[r.toLowerCase()];if(!e)throw new qp(r);return e}function lL(r){switch(r.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Np(r)}}function rse(r){if(nc===void 0&&(nc=_e.now()),r.type!=="iana")return r.offset(nc);let e=r.name,t=q0.get(e);return t===void 0&&(t=r.offset(nc),q0.set(e,t)),t}function uL(r,e){let t=di(e.zone,_e.defaultZone);if(!t.isValid)return Ae.invalid(rc(t));let n=Ee.fromObject(e),i,s;if($(r.year))i=_e.now();else{for(let c of Lp)$(r[c])&&(r[c]=dN[c]);let a=NL(r)||qL(r);if(a)return Ae.invalid(a);let o=rse(t);[i,s]=Mp(r,o,t)}return new Ae({ts:i,zone:t,loc:n,o:s})}function dL(r,e,t){let n=$(t.round)?!0:t.round,i=$(t.rounding)?"trunc":t.rounding,s=(o,c)=>(o=B0(o,n||t.calendary?0:2,t.calendary?"round":i),e.loc.clone(t).relFormatter(t).format(o,c)),a=o=>t.calendary?e.hasSame(r,o)?0:e.startOf(o).diff(r.startOf(o),o).get(o):e.diff(r,o).get(o);if(t.unit)return s(a(t.unit),t.unit);for(let o of t.units){let c=a(o);if(Math.abs(c)>=1)return s(c,o)}return s(r>e?-0:0,t.units[t.units.length-1])}function pL(r){let e={},t;return r.length>0&&typeof r[r.length-1]=="object"?(e=r[r.length-1],t=Array.from(r).slice(0,r.length-1)):t=Array.from(r),[e,t]}var nc,q0=new Map,Ae=class r{constructor(e){let t=e.zone||_e.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Yt("invalid input"):null)||(t.isValid?null:rc(t));this.ts=$(e.ts)?_e.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[i,s]=[e.old.c,e.old.o];else{let o=fi(e.o)&&!e.old?e.o:t.offset(this.ts);i=Dp(this.ts,o),n=Number.isNaN(i.year)?new Yt("invalid input"):null,i=n?null:i,s=n?null:o}this._zone=t,this.loc=e.loc||Ee.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new r({})}static local(){let[e,t]=pL(arguments),[n,i,s,a,o,c,l]=t;return uL({year:n,month:i,day:s,hour:a,minute:o,second:c,millisecond:l},e)}static utc(){let[e,t]=pL(arguments),[n,i,s,a,o,c,l]=t;return e.zone=Qt.utcInstance,uL({year:n,month:i,day:s,hour:a,minute:o,second:c,millisecond:l},e)}static fromJSDate(e,t={}){let n=Dne(e)?e.valueOf():NaN;if(Number.isNaN(n))return r.invalid("invalid input");let i=di(t.zone,_e.defaultZone);return i.isValid?new r({ts:n,zone:i,loc:Ee.fromObject(t)}):r.invalid(rc(i))}static fromMillis(e,t={}){if(fi(e))return e<-aL||e>aL?r.invalid("Timestamp out of range"):new r({ts:e,zone:di(t.zone,_e.defaultZone),loc:Ee.fromObject(t)});throw new ot(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(fi(e))return new r({ts:e*1e3,zone:di(t.zone,_e.defaultZone),loc:Ee.fromObject(t)});throw new ot("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};let n=di(t.zone,_e.defaultZone);if(!n.isValid)return r.invalid(rc(n));let i=Ee.fromObject(t),s=Bp(e,lL),{minDaysInFirstWeek:a,startOfWeek:o}=YM(s,i),c=_e.now(),l=$(t.specificOffset)?n.offset(c):t.specificOffset,u=!$(s.ordinal),d=!$(s.year),p=!$(s.month)||!$(s.day),f=d||p,m=s.weekYear||s.weekNumber;if((f||u)&&m)throw new pi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&u)throw new pi("Can't mix ordinal dates with month/day");let y=m||s.weekday&&!f,b,g,x=Dp(c,l);y?(b=ese,g=Xie,x=Up(x,a,o)):u?(b=tse,g=Zie,x=b0(x)):(b=Lp,g=dN);let I=!1;for(let ee of b){let Je=s[ee];$(Je)?I?s[ee]=g[ee]:s[ee]=x[ee]:I=!0}let k=y?One(s,a,o):u?Rne(s):NL(s),M=k||qL(s);if(M)return r.invalid(M);let U=y?HM(s,a,o):u?zM(s):s,[re,Ke]=Mp(U,l,n),ie=new r({ts:re,zone:n,o:Ke,loc:i});return s.weekday&&f&&e.weekday!==ie.weekday?r.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${ie.toISO()}`):ie.isValid?ie:r.invalid(ie.invalid)}static fromISO(e,t={}){let[n,i]=wie(e);return va(n,i,t,"ISO 8601",e)}static fromRFC2822(e,t={}){let[n,i]=Iie(e);return va(n,i,t,"RFC 2822",e)}static fromHTTP(e,t={}){let[n,i]=_ie(e);return va(n,i,t,"HTTP",t)}static fromFormat(e,t,n={}){if($(e)||$(t))throw new ot("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,a=Ee.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[o,c,l,u]=Qie(a,e,t);return u?r.invalid(u):va(o,c,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return r.fromFormat(e,t,n)}static fromSQL(e,t={}){let[n,i]=Rie(e);return va(n,i,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new ot("need to specify a reason the DateTime is invalid");let n=e instanceof Yt?e:new Yt(e,t);if(_e.throwOnInvalid)throw new w0(n);return new r({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=lN(e,Ee.fromObject(t));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,t={}){return oN(zt.parseFormat(e),Ee.fromObject(t)).map(i=>i.val).join("")}static resetCache(){nc=void 0,q0.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?x0(this).weekYear:NaN}get weekNumber(){return this.isValid?x0(this).weekNumber:NaN}get weekday(){return this.isValid?x0(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?E0(this).weekday:NaN}get localWeekNumber(){return this.isValid?E0(this).weekNumber:NaN}get localWeekYear(){return this.isValid?E0(this).weekYear:NaN}get ordinal(){return this.isValid?b0(this.c).ordinal:NaN}get monthShort(){return this.isValid?Zi.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Zi.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Zi.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Zi.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=Hp(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),a=this.zone.offset(n-i*t),o=this.zone.offset(n-s*t);if(a===o)return[this];let c=n-a*t,l=n-o*t,u=Dp(c,a),d=Dp(l,o);return u.hour===d.hour&&u.minute===d.minute&&u.second===d.second&&u.millisecond===d.millisecond?[Qi(this,{ts:c}),Qi(this,{ts:l})]:[this]}get isInLeapYear(){return oc(this.year)}get daysInMonth(){return Gp(this.year,this.month)}get daysInYear(){return this.isValid?xa(this.year):NaN}get weeksInWeekYear(){return this.isValid?ac(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?ac(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:i}=zt.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:i}}toUTC(e=0,t={}){return this.setZone(Qt.instance(e),t)}toLocal(){return this.setZone(_e.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if(e=di(e,_e.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(t||n){let s=e.offset(this.ts),a=this.toObject();[i]=Mp(a,s,e)}return Qi(this,{ts:i,zone:e})}else return r.invalid(rc(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return Qi(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Bp(e,lL),{minDaysInFirstWeek:n,startOfWeek:i}=YM(t,this.loc),s=!$(t.weekYear)||!$(t.weekNumber)||!$(t.weekday),a=!$(t.ordinal),o=!$(t.year),c=!$(t.month)||!$(t.day),l=o||c,u=t.weekYear||t.weekNumber;if((l||a)&&u)throw new pi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new pi("Can't mix ordinal dates with month/day");let d;s?d=HM({...Up(this.c,n,i),...t},n,i):$(t.ordinal)?(d={...this.toObject(),...t},$(t.day)&&(d.day=Math.min(Gp(d.year,d.month),d.day))):d=zM({...b0(this.c),...t});let[p,f]=Mp(d,this.o,this.zone);return Qi(this,{ts:p,o:f})}plus(e){if(!this.isValid)return this;let t=tt.fromDurationLike(e);return Qi(this,oL(this,t))}minus(e){if(!this.isValid)return this;let t=tt.fromDurationLike(e).negate();return Qi(this,oL(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},i=tt.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(t){let s=this.loc.getStartOfWeek(),{weekday:a}=this;a<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-1)*3+1}return this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?zt.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):v0}toLocaleString(e=Fp,t={}){return this.isValid?zt.create(this.loc.clone(t),e).formatDateTime(this):v0}toLocaleParts(e={}){return this.isValid?zt.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:a="milliseconds"}={}){if(!this.isValid)return null;a=Np(a);let o=e==="extended",c=S0(this,o,a);return Lp.indexOf(a)>=3&&(c+="T"),c+=cL(this,o,t,n,i,s,a),c}toISODate({format:e="extended",precision:t="day"}={}){return this.isValid?S0(this,e==="extended",Np(t)):null}toISOWeekDate(){return Pp(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:a="extended",precision:o="milliseconds"}={}){return this.isValid?(o=Np(o),(i&&Lp.indexOf(o)>=3?"T":"")+cL(this,a==="extended",t,e,n,s,o)):null}toRFC2822(){return Pp(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Pp(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?S0(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(t||e)&&(n&&(i+=" "),t?i+="z":e&&(i+="ZZ")),Pp(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():v0}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t="milliseconds",n={}){if(!this.isValid||!e.isValid)return tt.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=Pne(t).map(tt.normalizeUnit),a=e.valueOf()>this.valueOf(),o=a?this:e,c=a?e:this,l=Nie(o,c,s,i);return a?l.negate():l}diffNow(e="milliseconds",t={}){return this.diff(r.now(),e,t)}until(e){return this.isValid?es.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(t,n)<=i&&i<=s.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let t=e.base||r.fromObject({},{zone:this.zone}),n=e.padding?this<t?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),dL(t,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?dL(e.base||r.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(r.isDateTime))throw new ot("min requires all arguments be DateTimes");return WM(e,t=>t.valueOf(),Math.min)}static max(...e){if(!e.every(r.isDateTime))throw new ot("max requires all arguments be DateTimes");return WM(e,t=>t.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:i=null,numberingSystem:s=null}=n,a=Ee.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return cN(a,e,t)}static fromStringExplain(e,t,n={}){return r.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:i=null}=t,s=Ee.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new $p(s,e)}static fromFormatParser(e,t,n={}){if($(e)||$(t))throw new ot("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,a=Ee.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!a.equals(t.locale))throw new ot(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);let{result:o,zone:c,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?r.invalid(u):va(o,c,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return Fp}static get DATE_MED(){return fL}static get DATE_MED_WITH_WEEKDAY(){return pne}static get DATE_FULL(){return mL}static get DATE_HUGE(){return hL}static get TIME_SIMPLE(){return yL}static get TIME_WITH_SECONDS(){return bL}static get TIME_WITH_SHORT_OFFSET(){return gL}static get TIME_WITH_LONG_OFFSET(){return vL}static get TIME_24_SIMPLE(){return xL}static get TIME_24_WITH_SECONDS(){return EL}static get TIME_24_WITH_SHORT_OFFSET(){return SL}static get TIME_24_WITH_LONG_OFFSET(){return wL}static get DATETIME_SHORT(){return IL}static get DATETIME_SHORT_WITH_SECONDS(){return _L}static get DATETIME_MED(){return kL}static get DATETIME_MED_WITH_SECONDS(){return TL}static get DATETIME_MED_WITH_WEEKDAY(){return fne}static get DATETIME_FULL(){return AL}static get DATETIME_FULL_WITH_SECONDS(){return KL}static get DATETIME_HUGE(){return jL}static get DATETIME_HUGE_WITH_SECONDS(){return OL}};function ec(r){if(Ae.isDateTime(r))return r;if(r&&r.valueOf&&fi(r.valueOf()))return Ae.fromJSDate(r);if(r&&typeof r=="object")return Ae.fromObject(r);throw new ot(`Unknown datetime argument: ${r}, of type ${typeof r}`)}var nse="3.7.2";Xt.DateTime=Ae;Xt.Duration=tt;Xt.FixedOffsetZone=Qt;Xt.IANAZone=Tn;Xt.Info=Zi;Xt.Interval=es;Xt.InvalidZone=Jp;Xt.Settings=_e;Xt.SystemZone=sc;Xt.VERSION=nse;Xt.Zone=mi});var mN=h((Xhe,fN)=>{"use strict";var ts=pN();z.prototype.addYear=function(){this._date=this._date.plus({years:1})};z.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};z.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};z.prototype.addHour=function(){var r=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=r&&(this._date=this._date.plus({hours:1}))};z.prototype.addMinute=function(){var r=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<r&&(this._date=this._date.plus({hours:1}))};z.prototype.addSecond=function(){var r=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<r&&(this._date=this._date.plus({hours:1}))};z.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};z.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};z.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};z.prototype.subtractHour=function(){var r=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=r&&(this._date=this._date.minus({hours:1}))};z.prototype.subtractMinute=function(){var r=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>r&&(this._date=this._date.minus({hours:1}))};z.prototype.subtractSecond=function(){var r=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>r&&(this._date=this._date.minus({hours:1}))};z.prototype.getDate=function(){return this._date.day};z.prototype.getFullYear=function(){return this._date.year};z.prototype.getDay=function(){var r=this._date.weekday;return r==7?0:r};z.prototype.getMonth=function(){return this._date.month-1};z.prototype.getHours=function(){return this._date.hour};z.prototype.getMinutes=function(){return this._date.minute};z.prototype.getSeconds=function(){return this._date.second};z.prototype.getMilliseconds=function(){return this._date.millisecond};z.prototype.getTime=function(){return this._date.valueOf()};z.prototype.getUTCDate=function(){return this._getUTC().day};z.prototype.getUTCFullYear=function(){return this._getUTC().year};z.prototype.getUTCDay=function(){var r=this._getUTC().weekday;return r==7?0:r};z.prototype.getUTCMonth=function(){return this._getUTC().month-1};z.prototype.getUTCHours=function(){return this._getUTC().hour};z.prototype.getUTCMinutes=function(){return this._getUTC().minute};z.prototype.getUTCSeconds=function(){return this._getUTC().second};z.prototype.toISOString=function(){return this._date.toUTC().toISO()};z.prototype.toJSON=function(){return this._date.toJSON()};z.prototype.setDate=function(r){this._date=this._date.set({day:r})};z.prototype.setFullYear=function(r){this._date=this._date.set({year:r})};z.prototype.setDay=function(r){this._date=this._date.set({weekday:r})};z.prototype.setMonth=function(r){this._date=this._date.set({month:r+1})};z.prototype.setHours=function(r){this._date=this._date.set({hour:r})};z.prototype.setMinutes=function(r){this._date=this._date.set({minute:r})};z.prototype.setSeconds=function(r){this._date=this._date.set({second:r})};z.prototype.setMilliseconds=function(r){this._date=this._date.set({millisecond:r})};z.prototype._getUTC=function(){return this._date.toUTC()};z.prototype.toString=function(){return this.toDate().toString()};z.prototype.toDate=function(){return this._date.toJSDate()};z.prototype.isLastDayOfMonth=function(){var r=this._date.plus({days:1}).startOf("day");return this._date.month!==r.month};z.prototype.isLastWeekdayOfMonth=function(){var r=this._date.plus({days:7}).startOf("day");return this._date.month!==r.month};function z(r,e){var t={zone:e};if(r?r instanceof z?this._date=r._date:r instanceof Date?this._date=ts.DateTime.fromJSDate(r,t):typeof r=="number"?this._date=ts.DateTime.fromMillis(r,t):typeof r=="string"&&(this._date=ts.DateTime.fromISO(r,t),this._date.isValid||(this._date=ts.DateTime.fromRFC2822(r,t)),this._date.isValid||(this._date=ts.DateTime.fromSQL(r,t)),this._date.isValid||(this._date=ts.DateTime.fromFormat(r,"EEE, d MMM yyyy HH:mm:ss",t))):this._date=ts.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(r));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}fN.exports=z});var bN=h((Zhe,yN)=>{"use strict";function rs(r){return{start:r,count:1}}function hN(r,e){r.end=e,r.step=e-r.start,r.count=2}function z0(r,e,t){e&&(e.count===2?(r.push(rs(e.start)),r.push(rs(e.end))):r.push(e)),t&&r.push(t)}function ise(r){for(var e=[],t=void 0,n=0;n<r.length;n++){var i=r[n];typeof i!="number"?(z0(e,t,rs(i)),t=void 0):t?t.count===1?hN(t,i):t.step===i-t.end?(t.count++,t.end=i):t.count===2?(e.push(rs(t.start)),t=rs(t.end),hN(t,i)):(z0(e,t),t=rs(i)):t=rs(i)}return z0(e,t),e}yN.exports=ise});var vN=h((eye,gN)=>{"use strict";var sse=bN();function ase(r,e,t){var n=sse(r);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===t)return"*";if(s!==1&&i.start===e&&i.end===t-s+1)return"*/"+s}for(var a=[],o=0,c=n.length;o<c;++o){var l=n[o];if(l.count===1){a.push(l.start);continue}var s=l.step;if(l.step===1){a.push(l.start+"-"+l.end);continue}var u=l.start==0?l.count-1:l.count;l.step*u>l.end?a=a.concat(Array.from({length:l.end-l.start+1}).map(function(p,f){var m=l.start+f;return(m-l.start)%l.step===0?m:null}).filter(function(p){return p!=null})):l.end===t-l.step+1?a.push(l.start+"/"+l.step):a.push(l.start+"-"+l.end+"/"+l.step)}return a.join(",")}gN.exports=ase});var SN=h((tye,EN)=>{"use strict";var ns=mN(),ose=vN(),xN=1e4;function C(r,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new ns(e.currentDate,this._tz),this._startDate=e.startDate?new ns(e.startDate,this._tz):null,this._endDate=e.endDate?new ns(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=C._freezeFields(r)}C.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];C.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};C.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];C.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];C.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};C.parseDefaults=["0","*","*","*","*","*"];C.standardValidCharacters=/^[,*\d/-]+$/;C.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;C.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;C.validCharacters={second:C.standardValidCharacters,minute:C.standardValidCharacters,hour:C.standardValidCharacters,dayOfMonth:C.dayOfMonthValidCharacters,month:C.standardValidCharacters,dayOfWeek:C.dayOfWeekValidCharacters};C._isValidConstraintChar=function(e,t){return typeof t!="string"?!1:e.chars.some(function(n){return t.indexOf(n)>-1})};C._parseField=function(e,t,n){switch(e){case"month":case"dayOfWeek":var i=C.aliases[e];t=t.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!C.validCharacters[e].test(t))throw new Error("Invalid characters, got value: "+t);t.indexOf("*")!==-1?t=t.replace(/\*/g,n.min+"-"+n.max):t.indexOf("?")!==-1&&(t=t.replace(/\?/g,n.min+"-"+n.max));function s(c){var l=[];function u(m){if(m instanceof Array)for(var y=0,b=m.length;y<b;y++){var g=m[y];if(C._isValidConstraintChar(n,g)){l.push(g);continue}if(typeof g!="number"||Number.isNaN(g)||g<n.min||g>n.max)throw new Error("Constraint error, got value "+g+" expected range "+n.min+"-"+n.max);l.push(g)}else{if(C._isValidConstraintChar(n,m)){l.push(m);return}var x=+m;if(Number.isNaN(x)||x<n.min||x>n.max)throw new Error("Constraint error, got value "+m+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(x=x%7),l.push(x)}}var d=c.split(",");if(!d.every(function(m){return m.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var p=0,f=d.length;p<f;p++)u(a(d[p]));else u(a(c));return l.sort(C._sortCompareFn),l}function a(c){var l=1,u=c.split("/");if(u.length>2)throw new Error("Invalid repeat: "+c);return u.length>1?(u[0]==+u[0]&&(u=[u[0]+"-"+n.max,u[1]]),o(u[0],u[u.length-1])):o(c,l)}function o(c,l){var u=[],d=c.split("-");if(d.length>1){if(d.length<2)return+c;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+c);return+c}var p=+d[0],f=+d[1];if(Number.isNaN(p)||Number.isNaN(f)||p<n.min||f>n.max)throw new Error("Constraint error, got range "+p+"-"+f+" expected range "+n.min+"-"+n.max);if(p>f)throw new Error("Invalid range: "+c);var m=+l;if(Number.isNaN(m)||m<=0)throw new Error("Constraint error, cannot repeat at every "+m+" time.");e==="dayOfWeek"&&f%7===0&&u.push(0);for(var y=p,b=f;y<=b;y++){var g=u.indexOf(y)!==-1;!g&&m>0&&m%l===0?(m=1,u.push(y)):m++}return u}return Number.isNaN(+c)?c:+c}return s(t)};C._sortCompareFn=function(r,e){var t=typeof r=="number",n=typeof e=="number";return t&&n?r-e:!t&&n?1:t&&!n?-1:r.localeCompare(e)};C._handleMaxDaysInMonth=function(r){if(r.month.length===1){var e=C.daysInMonth[r.month[0]-1];if(r.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return r.dayOfMonth.filter(function(t){return t==="L"?!0:t<=e}).sort(C._sortCompareFn)}};C._freezeFields=function(r){for(var e=0,t=C.map.length;e<t;++e){var n=C.map[e],i=r[n];r[n]=Object.freeze(i)}return Object.freeze(r)};C.prototype._applyTimezoneShift=function(r,e,t){if(t==="Month"||t==="Day"){var n=r.getTime();r[e+t]();var i=r.getTime();n===i&&(r.getMinutes()===0&&r.getSeconds()===0?r.addHour():r.getMinutes()===59&&r.getSeconds()===59&&r.subtractHour())}else{var s=r.getHours();r[e+t]();var a=r.getHours(),o=a-s;o===2?this.fields.hour.length!==24&&(this._dstStart=a):o===0&&r.getMinutes()===0&&r.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=a)}};C.prototype._findSchedule=function(e){function t(g,x){for(var I=0,k=x.length;I<k;I++)if(x[I]>=g)return x[I]===g;return x[0]===g}function n(g,x){if(x<6){if(g.getDate()<8&&x===1)return!0;var I=g.getDate()%7?1:0,k=g.getDate()-g.getDate()%7,M=Math.floor(k/7)+I;return M===x}return!1}function i(g){return g.length>0&&g.some(function(x){return typeof x=="string"&&x.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",a=new ns(this._currentDate,this._tz),o=this._startDate,c=this._endDate,l=a.getTime(),u=0;function d(g){return g.some(function(x){if(!i([x]))return!1;var I=Number.parseInt(x[0])%7;if(Number.isNaN(I))throw new Error("Invalid last weekday of the month expression: "+x);return a.getDay()===I&&a.isLastWeekdayOfMonth()})}for(;u<xN;){if(u++,e){if(o&&a.getTime()-o.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-a.getTime()<0)throw new Error("Out of the timespan range");var p=t(a.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||a.isLastDayOfMonth());var f=t(a.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(f=f||d(this.fields.dayOfWeek));var m=this.fields.dayOfMonth.length>=C.daysInMonth[a.getMonth()],y=this.fields.dayOfWeek.length===C.constraints[5].max-C.constraints[5].min+1,b=a.getHours();if(!p&&(!f||y)){this._applyTimezoneShift(a,s,"Day");continue}if(!m&&y&&!p){this._applyTimezoneShift(a,s,"Day");continue}if(m&&!y&&!f){this._applyTimezoneShift(a,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(a,this._nthDayOfWeek)){this._applyTimezoneShift(a,s,"Day");continue}if(!t(a.getMonth()+1,this.fields.month)){this._applyTimezoneShift(a,s,"Month");continue}if(t(b,this.fields.hour)){if(this._dstEnd===b&&!e){this._dstEnd=null,this._applyTimezoneShift(a,"add","Hour");continue}}else if(this._dstStart!==b){this._dstStart=null,this._applyTimezoneShift(a,s,"Hour");continue}else if(!t(b-1,this.fields.hour)){a[s+"Hour"]();continue}if(!t(a.getMinutes(),this.fields.minute)){this._applyTimezoneShift(a,s,"Minute");continue}if(!t(a.getSeconds(),this.fields.second)){this._applyTimezoneShift(a,s,"Second");continue}if(l===a.getTime()){s==="add"||a.getMilliseconds()===0?this._applyTimezoneShift(a,s,"Second"):a.setMilliseconds(0);continue}break}if(u>=xN)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new ns(a,this._tz),this._hasIterated=!0,a};C.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};C.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};C.prototype.hasNext=function(){var r=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=r,this._hasIterated=e}};C.prototype.hasPrev=function(){var r=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=r,this._hasIterated=e}};C.prototype.iterate=function(e,t){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var a=this.next();n.push(a),t&&t(a,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var a=this.prev();n.push(a),t&&t(a,i)}catch{break}return n};C.prototype.reset=function(e){this._currentDate=new ns(e||this._options.currentDate)};C.prototype.stringify=function(e){for(var t=[],n=e?0:1,i=C.map.length;n<i;++n){var s=C.map[n],a=this.fields[s],o=C.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?o={min:1,max:C.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(o={min:0,max:6},a=a[a.length-1]===7?a.slice(0,-1):a),t.push(ose(a,o.min,o.max))}return t.join(" ")};C.parse=function(e,t){var n=this;typeof t=="function"&&(t={});function i(s,a){a||(a={}),typeof a.currentDate>"u"&&(a.currentDate=new ns(void 0,n._tz)),C.predefined[s]&&(s=C.predefined[s]);var o=[],c=(s+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=C.map.length-c.length,u=0,d=C.map.length;u<d;++u){var p=C.map[u],f=c[c.length>d?u:u-l];if(u<l||!f)o.push(C._parseField(p,C.parseDefaults[u],C.constraints[u]));else{var m=p==="dayOfWeek"?x(f):f;o.push(C._parseField(p,m,C.constraints[u]))}}for(var y={},u=0,d=C.map.length;u<d;u++){var b=C.map[u];y[b]=o[u]}var g=C._handleMaxDaysInMonth(y);return y.dayOfMonth=g||y.dayOfMonth,new C(y,a);function x(I){var k=I.split("#");if(k.length>1){var M=+k[k.length-1];if(/,/.test(I))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(I))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(I))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(k.length>2||Number.isNaN(M)||M<1||M>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return a.nthDayOfWeek=M,k[0]}return I}}return i(e,t)};C.fieldsToExpression=function(e,t){function n(p,f,m){if(!f)throw new Error("Validation error, Field "+p+" is missing");if(f.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var y=0,b=f.length;y<b;y++){var g=f[y];if(!C._isValidConstraintChar(m,g)&&(typeof g!="number"||Number.isNaN(g)||g<m.min||g>m.max))throw new Error("Constraint error, got value "+g+" expected range "+m.min+"-"+m.max)}}for(var i={},s=0,a=C.map.length;s<a;++s){var o=C.map[s],c=e[o];n(o,c,C.constraints[s]);for(var l=[],u=-1;++u<c.length;)l[u]=c[u];if(c=l.sort(C._sortCompareFn).filter(function(p,f,m){return!f||p!==m[f-1]}),c.length!==l.length)throw new Error("Validation error, Field "+o+" contains duplicate values");i[o]=c}var d=C._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new C(i,t||{})};EN.exports=C});var Y0=h((rye,wN)=>{"use strict";var Wp=SN();function hi(){}hi._parseEntry=function(e){var t=e.split(" ");if(t.length===6)return{interval:Wp.parse(e)};if(t.length>6)return{interval:Wp.parse(t.slice(0,6).join(" ")),command:t.slice(6,t.length)};throw new Error("Invalid entry: "+e)};hi.parseExpression=function(e,t){return Wp.parse(e,t)};hi.fieldsToExpression=function(e,t){return Wp.fieldsToExpression(e,t)};hi.parseString=function(e){for(var t=e.split(`
`),n={variables:{},expressions:[],errors:{}},i=0,s=t.length;i<s;i++){var a=t[i],o=null,c=a.trim();if(c.length>0){if(c.match(/^#/))continue;if(o=c.match(/^(.*)=(.*)$/))n.variables[o[1]]=o[2];else{var l=null;try{l=hi._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(u){n.errors[c]=u}}}}return n};hi.parseFile=function(e,t){require("fs").readFile(e,function(n,i){if(n){t(n);return}return t(null,hi.parseString(i.toString()))})};wN.exports=hi});var yi=h(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.QueueBase=void 0;var cse=require("events"),uc=$t(),lse=Td(),use=Zo(),dse=ha(),pse=Kd(),W0=class extends cse.EventEmitter{constructor(e,t={connection:{}},n=use.RedisConnection,i=!1){if(super(),this.name=e,this.opts=t,this.closed=!1,this.hasBlockingConnection=!1,this.hasBlockingConnection=i,this.opts=Object.assign({prefix:"bull"},t),!e)throw new Error("Queue name must be provided");if(e.includes(":"))throw new Error("Queue name cannot contain :");this.connection=new n(t.connection,{shared:(0,uc.isRedisInstance)(t.connection),blocking:i,skipVersionCheck:t.skipVersionCheck,skipWaitingForReady:t.skipWaitingForReady}),this.connection.on("error",a=>this.emit("error",a)),this.connection.on("close",()=>{this.closing||this.emit("ioredis:close")});let s=new pse.QueueKeys(t.prefix);this.qualifiedName=s.getQueueQualifiedName(e),this.keys=s.getKeys(e),this.toKey=a=>s.toKey(e,a),this.createScripts()}get client(){return this.connection.client}createScripts(){this.scripts=(0,lse.createScripts)(this)}get redisVersion(){return this.connection.redisVersion}get databaseType(){return this.connection.databaseType}get Job(){return dse.Job}emit(e,...t){try{return super.emit(e,...t)}catch(n){try{return super.emit("error",n)}catch(i){return console.error(i),!1}}}waitUntilReady(){return this.client}base64Name(){return Buffer.from(this.name).toString("base64")}clientName(e=""){let t=this.base64Name();return`${this.opts.prefix}:${t}${e}`}async close(){this.closing||(this.closing=this.connection.close()),await this.closing,this.closed=!0}disconnect(){return this.connection.disconnect()}async checkConnectionError(e,t=uc.DELAY_TIME_5){try{return await e()}catch(n){if((0,uc.isNotConnectionError)(n)&&this.emit("error",n),!this.closing&&t)await(0,uc.delay)(t);else return}}trace(e,t,n,i,s){return(0,uc.trace)(this.opts.telemetry,e,this.name,t,n,i,s)}};Qp.QueueBase=W0});var Zp=h(is=>{"use strict";Object.defineProperty(is,"__esModule",{value:!0});is.defaultRepeatStrategy=is.JobScheduler=void 0;var fse=(Tt(),ht(kt)),mse=Y0(),Xp=ha(),hse=yi(),dc=Mt(),yse=$t(),Q0=class extends hse.QueueBase{constructor(e,t,n){super(e,t,n),this.repeatStrategy=t.settings&&t.settings.repeatStrategy||is.defaultRepeatStrategy}async upsertJobScheduler(e,t,n,i,s,{override:a,producerId:o}){let{every:c,limit:l,pattern:u,offset:d}=t;if(u&&c)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(!u&&!c)throw new Error("Either .pattern or .every options must be defined for this repeatable job");if(t.immediately&&t.startDate)throw new Error("Both .immediately and .startDate options are defined for this repeatable job");t.immediately&&t.every&&console.warn("Using option immediately with every does not affect the job's schedule. Job will run immediately anyway.");let p=t.count?t.count+1:1;if(typeof t.limit<"u"&&p>t.limit)return;let f=Date.now(),{endDate:m}=t;if(m&&f>new Date(m).getTime())return;let y=s.prevMillis||0;f=y<f?f:y;let{immediately:b}=t,g=fse.__rest(t,["immediately"]),x,I=c&&d?d:null;if(u&&(x=await this.repeatStrategy(f,t,n),x<f&&(x=f)),x||c)return this.trace(dc.SpanKind.PRODUCER,"add",`${this.name}.${n}`,async(k,M)=>{var U,re;let Ke=s.telemetry;if(M){let ee=(U=s.telemetry)===null||U===void 0?void 0:U.omitContext,Je=((re=s.telemetry)===null||re===void 0?void 0:re.metadata)||!ee&&M;(Je||ee)&&(Ke={metadata:Je,omitContext:ee})}let ie=this.getNextJobOpts(x,e,Object.assign(Object.assign({},s),{repeat:g,telemetry:Ke}),p,I);if(a){x<f&&(x=f);let[ee,Je]=await this.scripts.addJobScheduler(e,x,JSON.stringify(typeof i>"u"?{}:i),Xp.Job.optsAsJSON(s),{name:n,startDate:t.startDate?new Date(t.startDate).getTime():void 0,endDate:m?new Date(m).getTime():void 0,tz:t.tz,pattern:u,every:c,limit:l,offset:I},Xp.Job.optsAsJSON(ie),o),Sr=typeof Je=="string"?parseInt(Je,10):Je,S=new this.Job(this,n,i,Object.assign(Object.assign({},ie),{delay:Sr}),ee);return S.id=ee,k?.setAttributes({[dc.TelemetryAttributes.JobSchedulerId]:e,[dc.TelemetryAttributes.JobId]:S.id}),S}else{let ee=await this.scripts.updateJobSchedulerNextMillis(e,x,JSON.stringify(typeof i>"u"?{}:i),Xp.Job.optsAsJSON(ie),o);if(ee){let Je=new this.Job(this,n,i,ie,ee);return Je.id=ee,k?.setAttributes({[dc.TelemetryAttributes.JobSchedulerId]:e,[dc.TelemetryAttributes.JobId]:Je.id}),Je}}})}getNextJobOpts(e,t,n,i,s){var a,o;let c=this.getSchedulerNextJobId({jobSchedulerId:t,nextMillis:e}),l=Date.now(),u=e+s-l,d=Object.assign(Object.assign({},n),{jobId:c,delay:u<0?0:u,timestamp:l,prevMillis:e,repeatJobKey:t});return d.repeat=Object.assign(Object.assign({},n.repeat),{offset:s,count:i,startDate:!((a=n.repeat)===null||a===void 0)&&a.startDate?new Date(n.repeat.startDate).getTime():void 0,endDate:!((o=n.repeat)===null||o===void 0)&&o.endDate?new Date(n.repeat.endDate).getTime():void 0}),d}async removeJobScheduler(e){return this.scripts.removeJobScheduler(e)}async getSchedulerData(e,t,n){let i=await e.hgetall(this.toKey("repeat:"+t));return this.transformSchedulerData(t,i,n)}transformSchedulerData(e,t,n){if(t&&Object.keys(t).length>0){let i={key:e,name:t.name,next:n};return t.ic&&(i.iterationCount=parseInt(t.ic)),t.limit&&(i.limit=parseInt(t.limit)),t.startDate&&(i.startDate=parseInt(t.startDate)),t.endDate&&(i.endDate=parseInt(t.endDate)),t.tz&&(i.tz=t.tz),t.pattern&&(i.pattern=t.pattern),t.every&&(i.every=parseInt(t.every)),t.offset&&(i.offset=parseInt(t.offset)),(t.data||t.opts)&&(i.template=this.getTemplateFromJSON(t.data,t.opts)),i}if(e.includes(":"))return this.keyToData(e,n)}keyToData(e,t){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:t}}async isJobScheduler(e){return await(await this.client).hexists(`${this.keys.repeat}:${e}`,"ic")===1}async getScheduler(e){let[t,n]=await this.scripts.getJobScheduler(e);return this.transformSchedulerData(e,t?(0,yse.array2obj)(t):null,n?parseInt(n):null)}getTemplateFromJSON(e,t){let n={};return e&&(n.data=JSON.parse(e)),t&&(n.opts=Xp.Job.optsFromJSON(t)),n}async getJobSchedulers(e=0,t=-1,n=!1){let i=await this.client,s=this.keys.repeat,a=n?await i.zrange(s,e,t,"WITHSCORES"):await i.zrevrange(s,e,t,"WITHSCORES"),o=[];for(let c=0;c<a.length;c+=2)o.push(this.getSchedulerData(i,a[c],parseInt(a[c+1])));return Promise.all(o)}async getSchedulersCount(){let e=this.keys.repeat;return(await this.client).zcard(e)}getSchedulerNextJobId({nextMillis:e,jobSchedulerId:t}){return`repeat:${t}:${e}`}};is.JobScheduler=Q0;var bse=(r,e)=>{let{pattern:t}=e,n=new Date(r),i=e.startDate&&new Date(e.startDate),s=i>n?i:n,a=(0,mse.parseExpression)(t,Object.assign(Object.assign({},e),{currentDate:s}));try{return e.immediately?new Date().getTime():a.next().getTime()}catch{}};is.defaultRepeatStrategy=bse});var Z0=h(tf=>{"use strict";Object.defineProperty(tf,"__esModule",{value:!0});tf.LockManager=void 0;var gse=_u(),ef=Mt(),X0=class{constructor(e,t){this.worker=e,this.opts=t,this.trackedJobs=new Map,this.closed=!1}start(){this.closed||this.opts.lockRenewTime>0&&this.startLockExtenderTimer()}async extendLocks(e){await this.worker.trace(ef.SpanKind.INTERNAL,"extendLocks",this.worker.name,async t=>{t?.setAttributes({[ef.TelemetryAttributes.WorkerId]:this.opts.workerId,[ef.TelemetryAttributes.WorkerName]:this.opts.workerName,[ef.TelemetryAttributes.WorkerJobsToExtendLocks]:e});try{let n=e.map(a=>{var o;return((o=this.trackedJobs.get(a))===null||o===void 0?void 0:o.token)||""}),i=await this.worker.extendJobLocks(e,n,this.opts.lockDuration);if(i.length>0){this.worker.emit("lockRenewalFailed",i);for(let a of i)this.worker.emit("error",new Error(`could not renew lock for job ${a}`))}let s=e.filter(a=>!i.includes(a));s.length>0&&this.worker.emit("locksRenewed",{count:s.length,jobIds:s})}catch(n){this.worker.emit("error",n)}})}startLockExtenderTimer(){clearTimeout(this.lockRenewalTimer),this.closed||(this.lockRenewalTimer=setTimeout(async()=>{let e=Date.now(),t=[];for(let n of this.trackedJobs.keys()){let i=this.trackedJobs.get(n),{ts:s,token:a,abortController:o}=i;if(!s){this.trackedJobs.set(n,{token:a,ts:e,abortController:o});continue}s+this.opts.lockRenewTime/2<e&&(this.trackedJobs.set(n,{token:a,ts:e,abortController:o}),t.push(n))}t.length&&await this.extendLocks(t),this.startLockExtenderTimer()},this.opts.lockRenewTime/2))}async close(){this.closed||(this.closed=!0,this.lockRenewalTimer&&(clearTimeout(this.lockRenewalTimer),this.lockRenewalTimer=void 0),this.trackedJobs.clear())}trackJob(e,t,n,i=!1){let s=i?new gse.AbortController:void 0;return!this.closed&&e&&this.trackedJobs.set(e,{token:t,ts:n,abortController:s}),s}untrackJob(e){this.trackedJobs.delete(e)}getActiveJobCount(){return this.trackedJobs.size}isRunning(){return!this.closed&&this.lockRenewalTimer!==void 0}cancelJob(e,t){let n=this.trackedJobs.get(e);return n?.abortController?(n.abortController.abort(t),!0):!1}cancelAllJobs(e){for(let t of this.trackedJobs.values())t.abortController&&t.abortController.abort(e)}getTrackedJobIds(){return Array.from(this.trackedJobs.keys())}};tf.LockManager=X0});var _N=h(nf=>{"use strict";Object.defineProperty(nf,"__esModule",{value:!0});nf.QueueEvents=void 0;var IN=(Tt(),ht(kt)),rf=$t(),vse=yi(),ex=class extends vse.QueueBase{constructor(e,t={connection:{}},n){var i,{connection:s,autorun:a=!0}=t,o=IN.__rest(t,["connection","autorun"]);super(e,Object.assign(Object.assign({},o),{connection:(0,rf.isRedisInstance)(s)?s.isCluster?s.duplicate(void 0,{redisOptions:(i=s.options)===null||i===void 0?void 0:i.redisOptions}):s.duplicate():s}),n,!0),this.running=!1,this.blocking=!1,this.opts=Object.assign({blockingTimeout:1e4},this.opts),a&&this.run().catch(c=>this.emit("error",c))}emit(e,...t){return super.emit(e,...t)}off(e,t){return super.off(e,t),this}on(e,t){return super.on(e,t),this}once(e,t){return super.once(e,t),this}async run(){if(this.running)throw new Error("Queue Events is already running.");try{this.running=!0;let e=await this.client;try{await e.client("SETNAME",this.clientName(rf.QUEUE_EVENT_SUFFIX))}catch(t){if(!rf.clientCommandMessageReg.test(t.message))throw t}await this.consumeEvents(e)}catch(e){throw this.running=!1,e}}async consumeEvents(e){let t=this.opts,n=this.keys.events,i=t.lastEventId||"$";for(;!this.closing;){this.blocking=!0;let s=await this.checkConnectionError(()=>e.xread("BLOCK",t.blockingTimeout,"STREAMS",n,i));if(this.blocking=!1,s){let o=s[0][1];for(let c=0;c<o.length;c++){i=o[c][0];let l=(0,rf.array2obj)(o[c][1]);switch(l.event){case"progress":l.data=JSON.parse(l.data);break;case"completed":l.returnvalue=JSON.parse(l.returnvalue);break}let{event:u}=l,d=IN.__rest(l,["event"]);u==="drained"?this.emit(u,i):(this.emit(u,d,i),d.jobId&&this.emit(`${u}:${d.jobId}`,d,i))}}}}async close(){return this.closing||(this.closing=(async()=>{try{(await this.client).disconnect(),await this.connection.close(this.blocking)}finally{this.closed=!0}})()),this.closing}};nf.QueueEvents=ex});var kN=h(sf=>{"use strict";Object.defineProperty(sf,"__esModule",{value:!0});sf.QueueEventsProducer=void 0;var xse=(Tt(),ht(kt)),Ese=yi(),tx=class extends Ese.QueueBase{constructor(e,t={connection:{}},n){super(e,Object.assign({blockingConnection:!1},t),n),this.opts=t}async publishEvent(e,t=1e3){let n=await this.client,i=this.keys.events,{eventName:s}=e,a=xse.__rest(e,["eventName"]),o=["MAXLEN","~",t,"*","event",s];for(let[c,l]of Object.entries(a))o.push(c,l);await n.xadd(i,...o)}async close(){this.closing||(this.closing=this.connection.close()),await this.closing}};sf.QueueEventsProducer=tx});var ix=h(af=>{"use strict";Object.defineProperty(af,"__esModule",{value:!0});af.QueueGetters=void 0;var Sse=(Tt(),ht(kt)),wse=yi(),TN=$t(),rx=Mt();function AN(r){return String(r).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}var nx=class extends wse.QueueBase{getJob(e){return this.Job.fromId(this,e)}commandByType(e,t,n){return e.map(i=>{i=i==="waiting"?"wait":i;let s=this.toKey(i);switch(i){case"completed":case"failed":case"delayed":case"prioritized":case"repeat":case"waiting-children":return n(s,t?"zcard":"zrange");case"active":case"wait":case"paused":return n(s,t?"llen":"lrange")}})}sanitizeJobTypes(e){let t=typeof e=="string"?[e]:e;if(Array.isArray(t)&&t.length>0){let n=[...t];return n.indexOf("waiting")!==-1&&n.push("paused"),[...new Set(n)]}return["active","completed","delayed","failed","paused","prioritized","waiting","waiting-children"]}async count(){return await this.getJobCountByTypes("waiting","paused","delayed","prioritized","waiting-children")}async getRateLimitTtl(e){return this.scripts.getRateLimitTtl(e)}async getDebounceJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getDeduplicationJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getGlobalConcurrency(){let t=await(await this.client).hget(this.keys.meta,"concurrency");return t?Number(t):null}async getGlobalRateLimit(){let e=await this.client,[t,n]=await e.hmget(this.keys.meta,"max","duration");return t&&n?{max:Number(t),duration:Number(n)}:null}async getJobCountByTypes(...e){let t=await this.getJobCounts(...e);return Object.values(t).reduce((n,i)=>n+i,0)}async getJobCounts(...e){let t=this.sanitizeJobTypes(e),n=await this.scripts.getCounts(t),i={};return n.forEach((s,a)=>{i[t[a]]=s||0}),i}async recordJobCountsMetric(...e){var t;let n=await this.getJobCounts(...e),i=(t=this.opts.telemetry)===null||t===void 0?void 0:t.meter;if(i&&typeof i.createGauge=="function"){let s=i.createGauge(rx.MetricNames.QueueJobsCount,{description:"Number of jobs in the queue by state",unit:"{jobs}"});for(let[a,o]of Object.entries(n))s.record(o,{[rx.TelemetryAttributes.QueueName]:this.name,[rx.TelemetryAttributes.QueueJobsState]:a})}return n}getJobState(e){return this.scripts.getState(e)}async getMeta(){let t=await(await this.client).hgetall(this.keys.meta),{concurrency:n,max:i,duration:s,paused:a,"opts.maxLenEvents":o}=t,l=Sse.__rest(t,["concurrency","max","duration","paused","opts.maxLenEvents"]);return n&&(l.concurrency=Number(n)),o&&(l.maxLenEvents=Number(o)),i&&(l.max=Number(i)),s&&(l.duration=Number(s)),l.paused=a==="1",l}getCompletedCount(){return this.getJobCountByTypes("completed")}getFailedCount(){return this.getJobCountByTypes("failed")}getDelayedCount(){return this.getJobCountByTypes("delayed")}getActiveCount(){return this.getJobCountByTypes("active")}getPrioritizedCount(){return this.getJobCountByTypes("prioritized")}async getCountsPerPriority(e){let t=[...new Set(e)],n=await this.scripts.getCountsPerPriority(t),i={};return n.forEach((s,a)=>{i[`${t[a]}`]=s||0}),i}getWaitingCount(){return this.getJobCountByTypes("waiting")}getWaitingChildrenCount(){return this.getJobCountByTypes("waiting-children")}getWaiting(e=0,t=-1){return this.getJobs(["waiting"],e,t,!0)}getWaitingChildren(e=0,t=-1){return this.getJobs(["waiting-children"],e,t,!0)}getActive(e=0,t=-1){return this.getJobs(["active"],e,t,!0)}getDelayed(e=0,t=-1){return this.getJobs(["delayed"],e,t,!0)}getPrioritized(e=0,t=-1){return this.getJobs(["prioritized"],e,t,!0)}getCompleted(e=0,t=-1){return this.getJobs(["completed"],e,t,!1)}getFailed(e=0,t=-1){return this.getJobs(["failed"],e,t,!1)}async getDependencies(e,t,n,i){let s=this.toKey(t=="processed"?`${e}:processed`:`${e}:dependencies`),{items:a,total:o,jobs:c}=await this.scripts.paginate(s,{start:n,end:i,fetchJobs:!0});return{items:a,jobs:c,total:o}}async getRanges(e,t=0,n=1,i=!1){let s=[];this.commandByType(e,!1,(c,l)=>{switch(l){case"lrange":s.push("lrange");break;case"zrange":s.push("zrange");break}});let a=await this.scripts.getRanges(e,t,n,i),o=[];return a.forEach((c,l)=>{let u=c||[];i&&s[l]==="lrange"?o=o.concat(u.reverse()):o=o.concat(u)}),[...new Set(o)]}async getJobs(e,t=0,n=-1,i=!1){let s=this.sanitizeJobTypes(e),a=await this.getRanges(s,t,n,i);return Promise.all(a.map(o=>this.Job.fromId(this,o)))}async getJobLogs(e,t=0,n=-1,i=!0){let a=(await this.client).multi(),o=this.toKey(e+":logs");i?a.lrange(o,t,n):a.lrange(o,-(n+1),-(t+1)),a.llen(o);let c=await a.exec();return i||c[0][1].reverse(),{logs:c[0][1],count:c[1][1]}}async baseGetClients(e){let t=await this.client;try{if(t.isCluster){let n=t.nodes(),i=[];for(let a=0;a<n.length;a++){let c=await n[a].client("LIST"),l=this.parseClientList(c,e);i.push(l)}return i.reduce((a,o)=>a.length>o.length?a:o,[])}else{let n=await t.client("LIST");return this.parseClientList(n,e)}}catch(n){if(!TN.clientCommandMessageReg.test(n.message))throw n;return[{name:"GCP does not support client list"}]}}getWorkers(){let e=`${this.clientName()}`,t=`${this.clientName()}:w:`,n=i=>i&&(i===e||i.startsWith(t));return this.baseGetClients(n)}async getWorkersCount(){return(await this.getWorkers()).length}async getQueueEvents(){let e=`${this.clientName()}${TN.QUEUE_EVENT_SUFFIX}`;return this.baseGetClients(t=>t===e)}async getMetrics(e,t=0,n=-1){let[i,s,a]=await this.scripts.getMetrics(e,t,n);return{meta:{count:parseInt(i[0]||"0",10),prevTS:parseInt(i[1]||"0",10),prevCount:parseInt(i[2]||"0",10)},data:s.map(o=>+o||0),count:a}}parseClientList(e,t){let n=e.split(/\r?\n/),i=[];return n.forEach(s=>{let a={};s.split(" ").forEach(function(l){let u=l.indexOf("="),d=l.substring(0,u),p=l.substring(u+1);a[d]=p});let c=a.name;t(c)&&(a.name=this.name,a.rawname=c,i.push(a))}),i}async exportPrometheusMetrics(e){let t=await this.getJobCounts(),n=[];n.push("# HELP bullmq_job_count Number of jobs in the queue by state"),n.push("# TYPE bullmq_job_count gauge");let i=AN(this.name),s=e?Object.keys(e).reduce((c,l)=>`${c}, ${l}="${AN(e[l])}"`,""):"";for(let[c,l]of Object.entries(t))n.push(`bullmq_job_count{queue="${i}", state="${c}"${s}} ${l}`);let[a,o]=await Promise.all([this.getMetrics("completed"),this.getMetrics("failed")]);return n.push("# HELP bullmq_job_completed_total Total number of completed jobs"),n.push("# TYPE bullmq_job_completed_total counter"),n.push(`bullmq_job_completed_total{queue="${i}"${s}} ${a.meta.count}`),n.push("# HELP bullmq_job_failed_total Total number of failed jobs"),n.push("# TYPE bullmq_job_failed_total counter"),n.push(`bullmq_job_failed_total{queue="${i}"${s}} ${o.meta.count}`),n.join(`
`)}};af.QueueGetters=nx});var of=h(ss=>{"use strict";Object.defineProperty(ss,"__esModule",{value:!0});ss.getNextMillis=ss.Repeat=void 0;var Ise=(Tt(),ht(kt)),_se=Y0(),kse=require("crypto"),Tse=yi(),sx=class extends Tse.QueueBase{constructor(e,t,n){super(e,t,n),this.repeatStrategy=t.settings&&t.settings.repeatStrategy||ss.getNextMillis,this.repeatKeyHashAlgorithm=t.settings&&t.settings.repeatKeyHashAlgorithm||"md5"}async updateRepeatableJob(e,t,n,{override:i}){var s,a;let o=Object.assign({},n.repeat);(s=o.pattern)!==null&&s!==void 0||(o.pattern=o.cron),delete o.cron;let c=o.count?o.count+1:1;if(typeof o.limit<"u"&&c>o.limit)return;let l=Date.now(),{endDate:u}=o;if(u&&l>new Date(u).getTime())return;let d=n.prevMillis||0;l=d<l?l:d;let p=await this.repeatStrategy(l,o,e),{every:f,pattern:m}=o,y=!!((f||m)&&o.immediately),b=y&&f?l-p:void 0;if(p){!d&&n.jobId&&(o.jobId=n.jobId);let g=KN(e,o),x=(a=n.repeat.key)!==null&&a!==void 0?a:this.hash(g),I;if(i)I=await this.scripts.addRepeatableJob(x,p,{name:e,endDate:u?new Date(u).getTime():void 0,tz:o.tz,pattern:m,every:f},g);else{let U=await this.client;I=await this.scripts.updateRepeatableJobMillis(U,x,p,g)}let{immediately:k}=o,M=Ise.__rest(o,["immediately"]);return this.createNextJob(e,p,I,Object.assign(Object.assign({},n),{repeat:Object.assign({offset:b},M)}),t,c,y)}}async createNextJob(e,t,n,i,s,a,o){let c=this.getRepeatJobKey(e,t,n,s),l=Date.now(),u=t+(i.repeat.offset?i.repeat.offset:0)-l,d=Object.assign(Object.assign({},i),{jobId:c,delay:u<0||o?0:u,timestamp:l,prevMillis:t,repeatJobKey:n});return d.repeat=Object.assign(Object.assign({},i.repeat),{count:a}),this.Job.create(this,e,s,d)}getRepeatJobKey(e,t,n,i){return n.split(":").length>2?this.getRepeatJobId({name:e,nextMillis:t,namespace:this.hash(n),jobId:i?.id}):this.getRepeatDelayedJobId({customKey:n,nextMillis:t})}async removeRepeatable(e,t,n){var i;let s=KN(e,Object.assign(Object.assign({},t),{jobId:n})),a=(i=t.key)!==null&&i!==void 0?i:this.hash(s),o=this.getRepeatJobId({name:e,nextMillis:"",namespace:this.hash(s),jobId:n??t.jobId,key:t.key});return this.scripts.removeRepeatable(o,s,a)}async removeRepeatableByKey(e){let t=this.keyToData(e),n=this.getRepeatJobId({name:t.name,nextMillis:"",namespace:this.hash(e),jobId:t.id});return this.scripts.removeRepeatable(n,"",e)}async getRepeatableData(e,t,n){let i=await e.hgetall(this.toKey("repeat:"+t));return i?{key:t,name:i.name,endDate:parseInt(i.endDate)||null,tz:i.tz||null,pattern:i.pattern||null,every:i.every||null,next:n}:this.keyToData(t,n)}keyToData(e,t){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:t}}async getRepeatableJobs(e=0,t=-1,n=!1){let i=await this.client,s=this.keys.repeat,a=n?await i.zrange(s,e,t,"WITHSCORES"):await i.zrevrange(s,e,t,"WITHSCORES"),o=[];for(let c=0;c<a.length;c+=2)o.push(this.getRepeatableData(i,a[c],parseInt(a[c+1])));return Promise.all(o)}async getRepeatableCount(){return(await this.client).zcard(this.toKey("repeat"))}hash(e){return(0,kse.createHash)(this.repeatKeyHashAlgorithm).update(e).digest("hex")}getRepeatDelayedJobId({nextMillis:e,customKey:t}){return`repeat:${t}:${e}`}getRepeatJobId({name:e,nextMillis:t,namespace:n,jobId:i,key:s}){return`repeat:${s??this.hash(`${e}${i||""}${n}`)}:${t}`}};ss.Repeat=sx;function KN(r,e){let t=e.endDate?new Date(e.endDate).getTime():"",n=e.tz||"",i=e.pattern,s=i||String(e.every)||"",a=e.jobId?e.jobId:"";return`${r}:${a}:${t}:${n}:${s}`}var Ase=(r,e)=>{let t=e.pattern;if(t&&e.every)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(e.every)return Math.floor(r/e.every)*e.every+(e.immediately?0:e.every);let n=e.startDate&&new Date(e.startDate)>new Date(r)?new Date(e.startDate):new Date(r),i=(0,_se.parseExpression)(t,Object.assign(Object.assign({},e),{currentDate:n}));try{return e.immediately?new Date().getTime():i.next().getTime()}catch{}};ss.getNextMillis=Ase});var jN=h(cf=>{"use strict";Object.defineProperty(cf,"__esModule",{value:!0});cf.Queue=void 0;var Kse=ha(),jse=ix(),Ose=of(),X=Mt(),Rse=Zp(),Cse=Id(),Dse=$t(),ax=class extends jse.QueueGetters{constructor(e,t,n){var i;super(e,Object.assign({},t),n),this.token=(0,Dse.randomUUID)(),this.libName="bullmq",this.jobsOpts=(i=t?.defaultJobOptions)!==null&&i!==void 0?i:{},this.waitUntilReady().then(s=>{if(!this.closing&&!t?.skipMetasUpdate)return s.hmset(this.keys.meta,this.metaValues)}).catch(s=>{})}emit(e,...t){return super.emit(e,...t)}off(e,t){return super.off(e,t),this}on(e,t){return super.on(e,t),this}once(e,t){return super.once(e,t),this}get defaultJobOptions(){return Object.assign({},this.jobsOpts)}get metaValues(){var e,t,n,i;return{"opts.maxLenEvents":(i=(n=(t=(e=this.opts)===null||e===void 0?void 0:e.streams)===null||t===void 0?void 0:t.events)===null||n===void 0?void 0:n.maxLen)!==null&&i!==void 0?i:1e4,version:`${this.libName}:${Cse.version}`}}async getVersion(){return await(await this.client).hget(this.keys.meta,"version")}get repeat(){return new Promise(async e=>{this._repeat||(this._repeat=new Ose.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._repeat.on("error",this.emit.bind(this,"error"))),e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{this._jobScheduler||(this._jobScheduler=new Rse.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._jobScheduler.on("error",this.emit.bind(this,"error"))),e(this._jobScheduler)})}async setGlobalConcurrency(e){return(await this.client).hset(this.keys.meta,"concurrency",e)}async setGlobalRateLimit(e,t){return(await this.client).hset(this.keys.meta,"max",e,"duration",t)}async removeGlobalConcurrency(){return(await this.client).hdel(this.keys.meta,"concurrency")}async removeGlobalRateLimit(){return(await this.client).hdel(this.keys.meta,"max","duration")}async add(e,t,n){return this.trace(X.SpanKind.PRODUCER,"add",`${this.name}.${e}`,async(i,s)=>{var a;if(s&&!(!((a=n?.telemetry)===null||a===void 0)&&a.omitContext)){let c={metadata:s};n=Object.assign(Object.assign({},n),{telemetry:c})}let o=await this.addJob(e,t,n);return i?.setAttributes({[X.TelemetryAttributes.JobName]:e,[X.TelemetryAttributes.JobId]:o.id}),o})}async addJob(e,t,n){if(n&&n.repeat){if(n.repeat.endDate&&+new Date(n.repeat.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.repeat).updateRepeatableJob(e,t,Object.assign(Object.assign({},this.jobsOpts),n),{override:!0})}else{let i=n?.jobId;if(i=="0"||i?.startsWith("0:"))throw new Error("JobId cannot be '0' or start with 0:");let s=Object.assign(Object.assign(Object.assign({},this.jobsOpts),n),{jobId:i}),a=await this.Job.create(this,e,t,s);return this.emit("waiting",a),a}}async addBulk(e){return this.trace(X.SpanKind.PRODUCER,"addBulk",this.name,async(t,n)=>(t&&t.setAttributes({[X.TelemetryAttributes.BulkNames]:e.map(i=>i.name),[X.TelemetryAttributes.BulkCount]:e.length}),await this.Job.createBulk(this,e.map(i=>{var s,a,o,c,l,u;let d=(s=i.opts)===null||s===void 0?void 0:s.telemetry;if(n){let f=(o=(a=i.opts)===null||a===void 0?void 0:a.telemetry)===null||o===void 0?void 0:o.omitContext,m=((l=(c=i.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0?void 0:l.metadata)||!f&&n;(m||f)&&(d={metadata:m,omitContext:f})}let p=Object.assign(Object.assign(Object.assign({},this.jobsOpts),i.opts),{jobId:(u=i.opts)===null||u===void 0?void 0:u.jobId,telemetry:d});return{name:i.name,data:i.data,opts:p}}))))}async upsertJobScheduler(e,t,n){var i,s;if(t.endDate&&+new Date(t.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.jobScheduler).upsertJobScheduler(e,t,(i=n?.name)!==null&&i!==void 0?i:e,(s=n?.data)!==null&&s!==void 0?s:{},Object.assign(Object.assign({},this.jobsOpts),n?.opts),{override:!0})}async pause(){await this.trace(X.SpanKind.INTERNAL,"pause",this.name,async()=>{await this.scripts.pause(!0),this.emit("paused")})}async close(){await this.trace(X.SpanKind.INTERNAL,"close",this.name,async()=>{this.closing||this._repeat&&await this._repeat.close(),await super.close()})}async rateLimit(e){await this.trace(X.SpanKind.INTERNAL,"rateLimit",this.name,async t=>{t?.setAttributes({[X.TelemetryAttributes.QueueRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,"PX",e))})}async resume(){await this.trace(X.SpanKind.INTERNAL,"resume",this.name,async()=>{await this.scripts.pause(!1),this.emit("resumed")})}async isPaused(){return await(await this.client).hexists(this.keys.meta,"paused")===1}isMaxed(){return this.scripts.isMaxed()}async getRepeatableJobs(e,t,n){return(await this.repeat).getRepeatableJobs(e,t,n)}async getJobScheduler(e){return(await this.jobScheduler).getScheduler(e)}async getJobSchedulers(e,t,n){return(await this.jobScheduler).getJobSchedulers(e,t,n)}async getJobSchedulersCount(){return(await this.jobScheduler).getSchedulersCount()}async removeRepeatable(e,t,n){return this.trace(X.SpanKind.INTERNAL,"removeRepeatable",`${this.name}.${e}`,async i=>(i?.setAttributes({[X.TelemetryAttributes.JobName]:e,[X.TelemetryAttributes.JobId]:n}),!await(await this.repeat).removeRepeatable(e,t,n)))}async removeJobScheduler(e){return!await(await this.jobScheduler).removeJobScheduler(e)}async removeDebounceKey(e){return this.trace(X.SpanKind.INTERNAL,"removeDebounceKey",`${this.name}`,async t=>(t?.setAttributes({[X.TelemetryAttributes.JobKey]:e}),await(await this.client).del(`${this.keys.de}:${e}`)))}async removeDeduplicationKey(e){return this.trace(X.SpanKind.INTERNAL,"removeDeduplicationKey",`${this.name}`,async t=>(t?.setAttributes({[X.TelemetryAttributes.DeduplicationKey]:e}),(await this.client).del(`${this.keys.de}:${e}`)))}async removeRateLimitKey(){return(await this.client).del(this.keys.limiter)}async removeRepeatableByKey(e){return this.trace(X.SpanKind.INTERNAL,"removeRepeatableByKey",`${this.name}`,async t=>(t?.setAttributes({[X.TelemetryAttributes.JobKey]:e}),!await(await this.repeat).removeRepeatableByKey(e)))}async remove(e,{removeChildren:t=!0}={}){return this.trace(X.SpanKind.INTERNAL,"remove",this.name,async n=>{n?.setAttributes({[X.TelemetryAttributes.JobId]:e,[X.TelemetryAttributes.JobOptions]:JSON.stringify({removeChildren:t})});let i=await this.scripts.remove(e,t);return i===1&&this.emit("removed",e),i})}async updateJobProgress(e,t){await this.trace(X.SpanKind.INTERNAL,"updateJobProgress",this.name,async n=>{n?.setAttributes({[X.TelemetryAttributes.JobId]:e,[X.TelemetryAttributes.JobProgress]:JSON.stringify(t)}),await this.scripts.updateProgress(e,t),this.emit("progress",e,t)})}async addJobLog(e,t,n){return Kse.Job.addJobLog(this,e,t,n)}async drain(e=!1){await this.trace(X.SpanKind.INTERNAL,"drain",this.name,async t=>{t?.setAttributes({[X.TelemetryAttributes.QueueDrainDelay]:e}),await this.scripts.drain(e)})}async clean(e,t,n="completed"){return this.trace(X.SpanKind.INTERNAL,"clean",this.name,async i=>{let s=t||1/0,a=Math.min(1e4,s),o=Date.now()-e,c=0,l=[],u=n==="waiting"?"wait":n;for(;c<s;){let d=await this.scripts.cleanJobsInSet(u,o,a);if(this.emit("cleaned",d,u),c+=d.length,l.push(...d),d.length<a)break}return i?.setAttributes({[X.TelemetryAttributes.QueueGrace]:e,[X.TelemetryAttributes.JobType]:n,[X.TelemetryAttributes.QueueCleanLimit]:s,[X.TelemetryAttributes.JobIds]:l}),l})}async obliterate(e){await this.trace(X.SpanKind.INTERNAL,"obliterate",this.name,async()=>{await this.pause();let t=0;do t=await this.scripts.obliterate(Object.assign({force:!1,count:1e3},e));while(t)})}async retryJobs(e={}){await this.trace(X.SpanKind.PRODUCER,"retryJobs",this.name,async t=>{t?.setAttributes({[X.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.retryJobs(e.state,e.count,e.timestamp);while(n)})}async promoteJobs(e={}){await this.trace(X.SpanKind.INTERNAL,"promoteJobs",this.name,async t=>{t?.setAttributes({[X.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.promoteJobs(e.count);while(n)})}async trimEvents(e){return this.trace(X.SpanKind.INTERNAL,"trimEvents",this.name,async t=>(t?.setAttributes({[X.TelemetryAttributes.QueueEventMaxLength]:e}),await(await this.client).xtrim(this.keys.events,"MAXLEN","~",e)))}async removeDeprecatedPriorityKey(){return(await this.client).del(this.toKey("priority"))}async removeOrphanedJobs(e=1e3,t=0){let n=await this.client,i=new Set(Object.keys(this.keys)),s=Object.keys(this.keys).filter(d=>d!==""),a=["logs","dependencies","processed","failed","unsuccessful","lock"],o=this.qualifiedName+":",c=o+"*",l=0,u="0";do{let[d,p]=await n.scan(u,"MATCH",c,"COUNT",e);u=d;let f=new Set;for(let y of p){let b=y.slice(o.length);if(i.has(b))continue;let g=b.indexOf(":");if(g!==-1){let I=b.slice(0,g);if(i.has(I))continue}let x=g===-1?b:b.slice(0,g);if(g!==-1){let I=b.slice(g+1);if(!a.includes(I))continue}f.add(x)}if(f.size===0)continue;let m=await this.scripts.removeOrphanedJobs([...f],s,a);if(l+=m||0,t>0&&l>=t)break}while(u!=="0");return l}};cf.Queue=ax});var cx=h(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var Qe=Mt(),Pse=(r,e)=>async function(n,i,s){let a,o,c,l;try{let u=new Promise((d,p)=>{(async()=>{try{c=(m,y)=>{p(new Error("Unexpected exit code: "+m+" signal: "+y))},a=await e.retain(r),a.on("exit",c),o=async m=>{var y,b,g,x,I;try{switch(m.cmd){case Qe.ParentCommand.Completed:d(m.value);break;case Qe.ParentCommand.Failed:case Qe.ParentCommand.Error:{let k=new Error;Object.assign(k,m.value),p(k);break}case Qe.ParentCommand.Progress:await n.updateProgress(m.value);break;case Qe.ParentCommand.Log:await n.log(m.value);break;case Qe.ParentCommand.MoveToDelayed:await n.moveToDelayed((y=m.value)===null||y===void 0?void 0:y.timestamp,(b=m.value)===null||b===void 0?void 0:b.token);break;case Qe.ParentCommand.MoveToWait:await n.moveToWait((g=m.value)===null||g===void 0?void 0:g.token);break;case Qe.ParentCommand.MoveToWaitingChildren:{let k=await n.moveToWaitingChildren((x=m.value)===null||x===void 0?void 0:x.token,(I=m.value)===null||I===void 0?void 0:I.opts);a.send({requestId:m.requestId,cmd:Qe.ChildCommand.MoveToWaitingChildrenResponse,value:k})}break;case Qe.ParentCommand.Update:await n.updateData(m.value);break;case Qe.ParentCommand.GetChildrenValues:{let k=await n.getChildrenValues();a.send({requestId:m.requestId,cmd:Qe.ChildCommand.GetChildrenValuesResponse,value:k})}break;case Qe.ParentCommand.GetIgnoredChildrenFailures:{let k=await n.getIgnoredChildrenFailures();a.send({requestId:m.requestId,cmd:Qe.ChildCommand.GetIgnoredChildrenFailuresResponse,value:k})}break;case Qe.ParentCommand.GetDependenciesCount:{let k=await n.getDependenciesCount(m.value);a.send({requestId:m.requestId,cmd:Qe.ChildCommand.GetDependenciesCountResponse,value:k})}break;case Qe.ParentCommand.GetDependencies:{let k=await n.getDependencies(m.value);a.send({requestId:m.requestId,cmd:Qe.ChildCommand.GetDependenciesResponse,value:k})}break}}catch(k){p(k)}},a.on("message",o),a.send({cmd:Qe.ChildCommand.Start,job:n.asJSONSandbox(),token:i}),s&&(l=()=>{try{a.send({cmd:Qe.ChildCommand.Cancel,value:s.reason})}catch{}},s.aborted?l():s.addEventListener("abort",l,{once:!0}))}catch(m){p(m)}})()});return await u,u}finally{s&&l&&s.removeEventListener("abort",l),a&&(a.off("message",o),a.off("exit",c),a.exitCode===null&&a.signalCode===null&&e.release(a))}};ox.default=Pse});var RN=h((uf,ON)=>{"use strict";Object.defineProperty(uf,"__esModule",{value:!0});uf.Worker=void 0;var lf=require("fs"),Mse=require("url"),pc=require("path"),Lse=_u(),Ta=$t(),Nse=yi(),qse=of(),Fse=Gb(),Jse=Zo(),Use=cx(),Gse=Lb(),Aa=sd(),Z=Mt(),Bse=Zp(),$se=Z0(),Vse=10,lx=class extends Nse.QueueBase{static RateLimitError(){return new Aa.RateLimitError}constructor(e,t,n,i){var s;if(super(e,Object.assign(Object.assign({drainDelay:5,concurrency:1,lockDuration:3e4,maximumRateLimitDelay:3e4,maxStalledCount:1,stalledInterval:3e4,autorun:!0,runRetryDelay:15e3},n),{blockingConnection:!0}),i),this.abortDelayController=null,this.blockUntil=0,this.drained=!1,this.limitUntil=0,this.processorAcceptsSignal=!1,this.stalledCheckerRunning=!1,this.waiting=null,this.running=!1,this.mainLoopRunning=null,!n||!n.connection)throw new Error("Worker requires a connection");if(typeof this.opts.maxStalledCount!="number"||this.opts.maxStalledCount<0)throw new Error("maxStalledCount must be greater or equal than 0");if(typeof this.opts.maxStartedAttempts=="number"&&this.opts.maxStartedAttempts<0)throw new Error("maxStartedAttempts must be greater or equal than 0");if(typeof this.opts.stalledInterval!="number"||this.opts.stalledInterval<=0)throw new Error("stalledInterval must be greater than 0");if(typeof this.opts.drainDelay!="number"||this.opts.drainDelay<=0)throw new Error("drainDelay must be greater than 0");if(this.concurrency=this.opts.concurrency,this.opts.lockRenewTime=this.opts.lockRenewTime||this.opts.lockDuration/2,this.id=(0,Ta.randomUUID)(),this.createLockManager(),t){if(typeof t=="function")this.processFn=t,this.processorAcceptsSignal=t.length>=3;else{if(t instanceof Mse.URL){if(!lf.existsSync(t))throw new Error(`URL ${t} does not exist in the local file system`);t=t.href}else{let p=t+([".js",".ts",".flow",".cjs",".mjs"].includes(pc.extname(t))?"":".js");if(!lf.existsSync(p))throw new Error(`File ${p} does not exist`)}let o=pc.dirname(ON.filename||__filename),c=pc.join(o,"main-worker.js"),l=pc.join(o,"main.js"),u=this.opts.useWorkerThreads?c:l;try{lf.statSync(u)}catch{let p=this.opts.useWorkerThreads?"main-worker.js":"main.js";u=pc.join(process.cwd(),`dist/cjs/classes/${p}`),lf.statSync(u)}this.childPool=new Fse.ChildPool({mainFile:u,useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),this.createSandbox(t),this.processorAcceptsSignal=!0}this.opts.autorun&&this.run().catch(o=>this.emit("error",o))}let a=this.clientName()+(this.opts.name?`:w:${this.opts.name}`:"");this.blockingConnection=new Jse.RedisConnection((0,Ta.isRedisInstance)(n.connection)?n.connection.isCluster?n.connection.duplicate(void 0,{redisOptions:Object.assign(Object.assign({},((s=n.connection.options)===null||s===void 0?void 0:s.redisOptions)||{}),{connectionName:a})}):n.connection.duplicate({connectionName:a}):Object.assign(Object.assign({},n.connection),{connectionName:a}),{shared:!1,blocking:!0,skipVersionCheck:n.skipVersionCheck}),this.blockingConnection.on("error",o=>this.emit("error",o)),this.blockingConnection.on("ready",()=>setTimeout(()=>this.emit("ready"),0))}createLockManager(){this.lockManager=new $se.LockManager(this,{lockRenewTime:this.opts.lockRenewTime,lockDuration:this.opts.lockDuration,workerId:this.id,workerName:this.opts.name})}createSandbox(e){this.processFn=(0,Use.default)(e,this.childPool).bind(this)}async extendJobLocks(e,t,n){return this.scripts.extendLocks(e,t,n)}emit(e,...t){return super.emit(e,...t)}off(e,t){return super.off(e,t),this}on(e,t){return super.on(e,t),this}once(e,t){return super.once(e,t),this}callProcessJob(e,t,n){return this.processFn(e,t,n)}createJob(e,t){return this.Job.fromJSON(this,e,t)}async waitUntilReady(){return await super.waitUntilReady(),this.blockingConnection.client}cancelJob(e,t){return this.lockManager.cancelJob(e,t)}cancelAllJobs(e){this.lockManager.cancelAllJobs(e)}set concurrency(e){if(typeof e!="number"||e<1||!isFinite(e))throw new Error("concurrency must be a finite number greater than 0");this._concurrency=e}get concurrency(){return this._concurrency}get repeat(){return new Promise(async e=>{if(!this._repeat){let t=await this.client;this._repeat=new qse.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:t})),this._repeat.on("error",this.emit.bind(this,"error"))}e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{if(!this._jobScheduler){let t=await this.client;this._jobScheduler=new Bse.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:t})),this._jobScheduler.on("error",this.emit.bind(this,"error"))}e(this._jobScheduler)})}async run(){if(!this.processFn)throw new Error("No process function is defined.");if(this.running)throw new Error("Worker is already running.");try{if(this.running=!0,this.closing||this.paused)return;await this.startStalledCheckTimer(),this.opts.skipLockRenewal||this.lockManager.start();let e=await this.client,t=await this.blockingConnection.client;this.mainLoopRunning=this.mainLoop(e,t),await this.mainLoopRunning}finally{this.running=!1}}async waitForRateLimit(){var e;let t=this.limitUntil;if(t>Date.now()){(e=this.abortDelayController)===null||e===void 0||e.abort(),this.abortDelayController=new Lse.AbortController;let n=this.getRateLimitDelay(t-Date.now());await this.delay(n,this.abortDelayController),this.drained=!1,this.limitUntil=0}}async mainLoop(e,t){let n=new Gse.AsyncFifoQueue,i=0;for(;!this.closing&&!this.paused||n.numTotal()>0;){for(;!this.closing&&!this.paused&&!this.waiting&&n.numTotal()<this._concurrency&&!this.isRateLimited();){let a=`${this.id}:${i++}`,o=this.retryIfFailed(()=>this._getNextJob(e,t,a,{block:!0}),{delayInMs:this.opts.runRetryDelay,onlyEmitError:!0});if(n.add(o),this.waiting&&n.numTotal()>1||!await o&&n.numTotal()>1||this.blockUntil)break}let s;do s=await n.fetch();while(!s&&n.numQueued()>0);if(s){let a=s.token;n.add(this.processJob(s,a,()=>n.numTotal()<=this._concurrency))}else n.numQueued()===0&&await this.waitForRateLimit()}}async getNextJob(e,{block:t=!0}={}){var n,i;let s=await this._getNextJob(await this.client,await this.blockingConnection.client,e,{block:t});return this.trace(Z.SpanKind.INTERNAL,"getNextJob",this.name,async a=>(a?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.QueueName]:this.name,[Z.TelemetryAttributes.WorkerName]:this.opts.name,[Z.TelemetryAttributes.WorkerOptions]:JSON.stringify({block:t}),[Z.TelemetryAttributes.JobId]:s?.id}),s),(i=(n=s?.opts)===null||n===void 0?void 0:n.telemetry)===null||i===void 0?void 0:i.metadata)}async _getNextJob(e,t,n,{block:i=!0}={}){if(this.paused||this.closing)return;let s;if(this.drained&&i&&!this.limitUntil&&!this.waiting){this.waiting=this.waitForJob(t,this.blockUntil);try{this.blockUntil=await this.waiting,(this.blockUntil<=0||this.blockUntil-Date.now()<1)&&(s=await this.moveToActive(e,n,this.opts.name))}finally{this.waiting=null}}else this.isRateLimited()||(s=await this.moveToActive(e,n,this.opts.name));return s&&this.emit("active",s,"waiting"),s}async rateLimit(e){await this.trace(Z.SpanKind.INTERNAL,"rateLimit",this.name,async t=>{t?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,"PX",e))})}get minimumBlockTimeout(){return this.blockingConnection.capabilities.canBlockFor1Ms?.001:.002}isRateLimited(){return this.limitUntil>Date.now()}async moveToActive(e,t,n){let[i,s,a,o]=await this.scripts.moveToActive(e,t,n);return this.updateDelays(a,o),this.nextJobFromJobData(i,s,t)}async waitForJob(e,t){if(this.paused)return 1/0;let n;try{if(!this.closing&&!this.isRateLimited()){let i=this.getBlockTimeout(t);if(i>0){i=this.blockingConnection.capabilities.canDoubleTimeout?i:Math.ceil(i),n=setTimeout(async()=>{e.disconnect(!this.closing)},i*1e3+1e3),this.updateDelays();let s=await e.bzpopmin(this.keys.marker,i);if(s){let[a,o,c]=s;if(o){let l=parseInt(c);return t&&l>t?t:l}}}return 0}}catch(i){(0,Ta.isNotConnectionError)(i)&&this.emit("error",i),this.closing||await this.delay()}finally{clearTimeout(n)}return 1/0}getBlockTimeout(e){let t=this.opts;if(e){let n=e-Date.now();return n<=0?n:n<this.minimumBlockTimeout*1e3?this.minimumBlockTimeout:Math.min(n/1e3,Vse)}else return Math.max(t.drainDelay,this.minimumBlockTimeout)}getRateLimitDelay(e){return Math.min(e,this.opts.maximumRateLimitDelay)}async delay(e,t){await(0,Ta.delay)(e||Ta.DELAY_TIME_1,t)}updateDelays(e=0,t=0){let n=Math.max(e,0);n>0?this.limitUntil=Date.now()+n:this.limitUntil=0,this.blockUntil=Math.max(t,0)||0}async nextJobFromJobData(e,t,n){if(!e)this.drained||(this.emit("drained"),this.drained=!0);else{this.drained=!1;let i=this.createJob(e,t);i.token=n;try{await this.retryIfFailed(async()=>{let s=!!i.repeatJobKey,a=s&&i.repeatJobKey.split(":").length>=5,o=s&&!a;a&&(o=await(await this.jobScheduler).isJobScheduler(i.repeatJobKey)),o?await(await this.jobScheduler).upsertJobScheduler(i.repeatJobKey,i.opts.repeat,i.name,i.data,i.opts,{override:!1,producerId:i.id}):i.opts.repeat&&await(await this.repeat).updateRepeatableJob(i.name,i.data,i.opts,{override:!1})},{delayInMs:this.opts.runRetryDelay})}catch(s){let a=s instanceof Error?s.message:String(s),o=new Error(`Failed to add repeatable job for next iteration: ${a}`);this.emit("error",o);return}return i}}async processJob(e,t,n=()=>!0){var i,s;let a=(s=(i=e.opts)===null||i===void 0?void 0:i.telemetry)===null||s===void 0?void 0:s.metadata;return this.trace(Z.SpanKind.CONSUMER,"process",this.name,async o=>{o?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name,[Z.TelemetryAttributes.JobId]:e.id,[Z.TelemetryAttributes.JobName]:e.name});let c=this.lockManager.trackJob(e.id,t,e.processedOn,this.processorAcceptsSignal);try{let l=this.getUnrecoverableErrorMessage(e);if(l)return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(new Aa.UnrecoverableError(l),e,t,n,o)),{delayInMs:this.opts.runRetryDelay,span:o});let u=await this.callProcessJob(e,t,c?c.signal:void 0);return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleCompleted(u,e,t,n,o)),{delayInMs:this.opts.runRetryDelay,span:o})}catch(l){return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(l,e,t,n,o)),{delayInMs:this.opts.runRetryDelay,span:o,onlyEmitError:!0})}finally{this.lockManager.untrackJob(e.id);let l=Date.now();o?.setAttributes({[Z.TelemetryAttributes.JobFinishedTimestamp]:l,[Z.TelemetryAttributes.JobAttemptFinishedTimestamp]:e.finishedOn||l,[Z.TelemetryAttributes.JobProcessedTimestamp]:e.processedOn})}},a)}getUnrecoverableErrorMessage(e){if(e.deferredFailure)return e.deferredFailure;if(this.opts.maxStartedAttempts&&this.opts.maxStartedAttempts<e.attemptsStarted)return"job started more than allowable limit"}async handleCompleted(e,t,n,i=()=>!0,s){if(!this.connection.closing){let a=await t.moveToCompleted(e,n,i()&&!(this.closing||this.paused));if(this.emit("completed",t,e,"active"),s?.addEvent("job completed",{[Z.TelemetryAttributes.JobResult]:JSON.stringify(e)}),s?.setAttributes({[Z.TelemetryAttributes.JobAttemptsMade]:t.attemptsMade}),Array.isArray(a)){let[o,c,l,u]=a;return this.updateDelays(l,u),this.nextJobFromJobData(o,c,n)}}}async handleFailed(e,t,n,i=()=>!0,s){if(!this.connection.closing){if(e.message===Aa.RATE_LIMIT_ERROR){let o=await this.moveLimitedBackToWait(t,n);this.limitUntil=o>0?Date.now()+o:0;return}if(e instanceof Aa.DelayedError||e.name=="DelayedError"||e instanceof Aa.WaitingError||e.name=="WaitingError"||e instanceof Aa.WaitingChildrenError||e.name=="WaitingChildrenError"){let o=await this.client;return this.moveToActive(o,n,this.opts.name)}let a=await t.moveToFailed(e,n,i()&&!(this.closing||this.paused));if(this.emit("failed",t,e,"active"),s?.addEvent("job failed",{[Z.TelemetryAttributes.JobFailedReason]:e.message}),s?.setAttributes({[Z.TelemetryAttributes.JobAttemptsMade]:t.attemptsMade}),Array.isArray(a)){let[o,c,l,u]=a;return this.updateDelays(l,u),this.nextJobFromJobData(o,c,n)}}}async pause(e){await this.trace(Z.SpanKind.INTERNAL,"pause",this.name,async t=>{var n;t?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name,[Z.TelemetryAttributes.WorkerDoNotWaitActive]:e}),this.paused||(this.paused=!0,e||await this.whenCurrentJobsFinished(),(n=this.stalledCheckStopper)===null||n===void 0||n.call(this),this.emit("paused"))})}resume(){(!this.running||this.paused)&&this.trace(Z.SpanKind.INTERNAL,"resume",this.name,e=>{e?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name}),this.paused=!1,this.running?this.startStalledCheckTimer().catch(t=>{this.emit("error",t)}):this.processFn&&this.run(),this.emit("resumed")}).catch(e=>{this.emit("error",e)})}isPaused(){return!!this.paused}isRunning(){return this.running}async close(e=!1){return this.closing?this.closing:(this.closing=(async()=>{await this.trace(Z.SpanKind.INTERNAL,"close",this.name,async t=>{var n,i;t?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name,[Z.TelemetryAttributes.WorkerForceClose]:e}),this.emit("closing","closing queue"),(n=this.abortDelayController)===null||n===void 0||n.abort();let s=[()=>e||this.whenCurrentJobsFinished(!1),()=>this.lockManager.close(),()=>{var a;return(a=this.childPool)===null||a===void 0?void 0:a.clean()},()=>this.blockingConnection.close(e),()=>this.connection.close(e)];for(let a of s)try{await a()}catch(o){this.emit("error",o)}(i=this.stalledCheckStopper)===null||i===void 0||i.call(this),this.closed=!0,this.emit("closed")})})(),await this.closing)}async startStalledCheckTimer(){this.opts.skipStalledCheck||!this.closing&&!this.stalledCheckerRunning&&await this.trace(Z.SpanKind.INTERNAL,"startStalledCheckTimer",this.name,async e=>{e?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name}),this.stalledCheckerRunning=!0,this.stalledChecker().catch(t=>{this.emit("error",t)}).finally(()=>{this.stalledCheckerRunning=!1})})}async stalledChecker(){for(;!(this.closing||this.paused);)await this.checkConnectionError(()=>this.moveStalledJobsToWait()),await new Promise(e=>{let t=setTimeout(e,this.opts.stalledInterval);this.stalledCheckStopper=()=>{clearTimeout(t),e()}})}async whenCurrentJobsFinished(e=!0){this.waiting?await this.blockingConnection.disconnect(e):e=!1,this.mainLoopRunning&&await this.mainLoopRunning,e&&await this.blockingConnection.reconnect()}async retryIfFailed(e,t){var n;let i=0,s=t.maxRetries||1/0;do try{return await e()}catch(a){if((n=t.span)===null||n===void 0||n.recordException(a.message),(0,Ta.isNotConnectionError)(a)){if(!this.paused&&!this.closing&&this.emit("error",a),t.onlyEmitError)return;throw a}else if(t.delayInMs&&!this.closing&&!this.closed&&await this.delay(t.delayInMs,this.abortDelayController),i+1>=s)throw a}while(++i<s)}async moveStalledJobsToWait(){await this.trace(Z.SpanKind.INTERNAL,"moveStalledJobsToWait",this.name,async e=>{let t=await this.scripts.moveStalledJobsToWait();e?.setAttributes({[Z.TelemetryAttributes.WorkerId]:this.id,[Z.TelemetryAttributes.WorkerName]:this.opts.name,[Z.TelemetryAttributes.WorkerStalledJobs]:t}),t.forEach(n=>{e?.addEvent("job stalled",{[Z.TelemetryAttributes.JobId]:n}),this.emit("stalled",n,"active")})})}moveLimitedBackToWait(e,t){return e.moveToWait(t)}};uf.Worker=lx});var CN=h(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});var He=(Tt(),ht(kt));He.__exportStar(Lb(),Le);He.__exportStar(Nb(),Le);He.__exportStar(Fb(),Le);He.__exportStar(Gb(),Le);He.__exportStar(oD(),Le);He.__exportStar(sd(),Le);He.__exportStar(MM(),Le);He.__exportStar(ha(),Le);He.__exportStar(Zp(),Le);He.__exportStar(Z0(),Le);He.__exportStar(yi(),Le);He.__exportStar(_N(),Le);He.__exportStar(kN(),Le);He.__exportStar(ix(),Le);He.__exportStar(Kd(),Le);He.__exportStar(jN(),Le);He.__exportStar(Zo(),Le);He.__exportStar(of(),Le);He.__exportStar(cx(),Le);He.__exportStar(c0(),Le);He.__exportStar(RN(),Le)});var PN=h(DN=>{"use strict";Object.defineProperty(DN,"__esModule",{value:!0})});var LN=h(MN=>{"use strict";Object.defineProperty(MN,"__esModule",{value:!0})});var qN=h(NN=>{"use strict";Object.defineProperty(NN,"__esModule",{value:!0})});var JN=h(FN=>{"use strict";Object.defineProperty(FN,"__esModule",{value:!0})});var GN=h(UN=>{"use strict";Object.defineProperty(UN,"__esModule",{value:!0})});var $N=h(BN=>{"use strict";Object.defineProperty(BN,"__esModule",{value:!0})});var HN=h(VN=>{"use strict";Object.defineProperty(VN,"__esModule",{value:!0})});var YN=h(zN=>{"use strict";Object.defineProperty(zN,"__esModule",{value:!0})});var QN=h(WN=>{"use strict";Object.defineProperty(WN,"__esModule",{value:!0})});var ZN=h(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0})});var t2=h(e2=>{"use strict";Object.defineProperty(e2,"__esModule",{value:!0})});var n2=h(r2=>{"use strict";Object.defineProperty(r2,"__esModule",{value:!0})});var s2=h(i2=>{"use strict";Object.defineProperty(i2,"__esModule",{value:!0})});var o2=h(a2=>{"use strict";Object.defineProperty(a2,"__esModule",{value:!0})});var l2=h(c2=>{"use strict";Object.defineProperty(c2,"__esModule",{value:!0})});var d2=h(u2=>{"use strict";Object.defineProperty(u2,"__esModule",{value:!0})});var f2=h(p2=>{"use strict";Object.defineProperty(p2,"__esModule",{value:!0})});var h2=h(m2=>{"use strict";Object.defineProperty(m2,"__esModule",{value:!0})});var b2=h(df=>{"use strict";Object.defineProperty(df,"__esModule",{value:!0});df.ClientType=void 0;var y2;(function(r){r.blocking="blocking",r.normal="normal"})(y2||(df.ClientType=y2={}))});var v2=h(g2=>{"use strict";Object.defineProperty(g2,"__esModule",{value:!0})});var E2=h(x2=>{"use strict";Object.defineProperty(x2,"__esModule",{value:!0})});var w2=h(S2=>{"use strict";Object.defineProperty(S2,"__esModule",{value:!0})});var _2=h(I2=>{"use strict";Object.defineProperty(I2,"__esModule",{value:!0})});var T2=h(k2=>{"use strict";Object.defineProperty(k2,"__esModule",{value:!0})});var K2=h(A2=>{"use strict";Object.defineProperty(A2,"__esModule",{value:!0})});var O2=h(j2=>{"use strict";Object.defineProperty(j2,"__esModule",{value:!0})});var C2=h(R2=>{"use strict";Object.defineProperty(R2,"__esModule",{value:!0})});var P2=h(D2=>{"use strict";Object.defineProperty(D2,"__esModule",{value:!0})});var L2=h(M2=>{"use strict";Object.defineProperty(M2,"__esModule",{value:!0})});var q2=h(N2=>{"use strict";Object.defineProperty(N2,"__esModule",{value:!0})});var J2=h(F2=>{"use strict";Object.defineProperty(F2,"__esModule",{value:!0})});var G2=h(U2=>{"use strict";Object.defineProperty(U2,"__esModule",{value:!0})});var $2=h(B2=>{"use strict";Object.defineProperty(B2,"__esModule",{value:!0})});var V2=h(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});var le=(Tt(),ht(kt));le.__exportStar(PN(),ce);le.__exportStar(LN(),ce);le.__exportStar(qN(),ce);le.__exportStar(JN(),ce);le.__exportStar(GN(),ce);le.__exportStar($N(),ce);le.__exportStar(HN(),ce);le.__exportStar(YN(),ce);le.__exportStar(QN(),ce);le.__exportStar(ZN(),ce);le.__exportStar(t2(),ce);le.__exportStar(n2(),ce);le.__exportStar(s2(),ce);le.__exportStar(o2(),ce);le.__exportStar(l2(),ce);le.__exportStar(d2(),ce);le.__exportStar(f2(),ce);le.__exportStar(h2(),ce);le.__exportStar(b2(),ce);le.__exportStar(v2(),ce);le.__exportStar(E2(),ce);le.__exportStar(w2(),ce);le.__exportStar(_2(),ce);le.__exportStar(T2(),ce);le.__exportStar(K2(),ce);le.__exportStar(O2(),ce);le.__exportStar(C2(),ce);le.__exportStar(P2(),ce);le.__exportStar(L2(),ce);le.__exportStar(q2(),ce);le.__exportStar(J2(),ce);le.__exportStar(G2(),ce);le.__exportStar($2(),ce)});var z2=h(H2=>{"use strict";Object.defineProperty(H2,"__esModule",{value:!0})});var W2=h(Y2=>{"use strict";Object.defineProperty(Y2,"__esModule",{value:!0})});var X2=h(Q2=>{"use strict";Object.defineProperty(Q2,"__esModule",{value:!0})});var eq=h(Z2=>{"use strict";Object.defineProperty(Z2,"__esModule",{value:!0})});var rq=h(tq=>{"use strict";Object.defineProperty(tq,"__esModule",{value:!0})});var iq=h(nq=>{"use strict";Object.defineProperty(nq,"__esModule",{value:!0})});var aq=h(sq=>{"use strict";Object.defineProperty(sq,"__esModule",{value:!0})});var cq=h(oq=>{"use strict";Object.defineProperty(oq,"__esModule",{value:!0})});var uq=h(lq=>{"use strict";Object.defineProperty(lq,"__esModule",{value:!0})});var pq=h(dq=>{"use strict";Object.defineProperty(dq,"__esModule",{value:!0})});var mq=h(fq=>{"use strict";Object.defineProperty(fq,"__esModule",{value:!0})});var hq=h(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});var Cr=(Tt(),ht(kt));Cr.__exportStar(z2(),Zt);Cr.__exportStar(W2(),Zt);Cr.__exportStar(X2(),Zt);Cr.__exportStar(eq(),Zt);Cr.__exportStar(rq(),Zt);Cr.__exportStar(iq(),Zt);Cr.__exportStar(aq(),Zt);Cr.__exportStar(cq(),Zt);Cr.__exportStar(uq(),Zt);Cr.__exportStar(pq(),Zt);Cr.__exportStar(mq(),Zt)});var bq=h(yq=>{"use strict";Object.defineProperty(yq,"__esModule",{value:!0})});var gq=h(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});var as=(Tt(),ht(kt));as.__exportStar(CN(),An);as.__exportStar(Mt(),An);as.__exportStar(V2(),An);as.__exportStar(hq(),An);as.__exportStar($t(),An);as.__exportStar(bq(),An);as.__exportStar(Td(),An)});var Ka,Hse,pf,vq=L(()=>{"use strict";Ka=Et(gq(),1);ve();Hse=300*1e3,pf=class r{name;config;concurrency;lockDurationMs;defaultJobOptions;queueFactory;workerFactory;queue=null;worker=null;queueEvents=null;started=!1;counters={stalled:0,errored:0};listeners=[];jobStartTimes=new Map;recentlyStalled=new Map;static STALLED_DEDUPE_WINDOW_MS=3e4;constructor(e){this.name=e.name,this.config=e.config,this.concurrency=e.concurrency??1,this.lockDurationMs=e.lockDurationMs??Hse,this.defaultJobOptions=e.defaultJobOptions??{attempts:3,backoff:{type:"exponential",delay:5e3},removeOnComplete:{age:10080*60,count:1e3},removeOnFail:{age:720*60*60,count:1e3}},this.queueFactory=e.queueFactory,this.workerFactory=e.workerFactory}getQueue(){if(this.queue)return this.queue;let e={connection:this.config.connection,prefix:this.config.prefix,defaultJobOptions:this.defaultJobOptions};return this.queue=this.queueFactory?this.queueFactory(this.name,e):new Ka.Queue(this.name,e),this.queue}async add(e,t,n){if(e.includes(":"))throw new Error(`server job ID must not contain ':' (got ${e})`);try{await this.getQueue().add(this.name,t,{...this.defaultJobOptions,...n,jobId:e})}catch(i){throw this.toRedisUnavailableError(i)}}async getJob(e){try{return await this.getQueue().getJob(e)}catch(t){throw this.toRedisUnavailableError(t)}}async remove(e){try{await this.getQueue().remove(e)}catch(t){throw this.toRedisUnavailableError(t)}}async getCounts(){try{let e=await this.getQueue().getJobCounts("waiting","active","delayed","failed","completed");return{waiting:e.waiting??0,active:e.active??0,delayed:e.delayed??0,failed:e.failed??0,completed:e.completed??0}}catch(e){throw this.toRedisUnavailableError(e)}}notifyStalled(e,t){if(this.recentlyStalled.has(e)){_.debug?.("QUEUE",`[generation] job=${e} stalled (suppressed duplicate from ${t})`,{queue:this.name,jobId:e,source:t});return}let n=setTimeout(()=>{this.recentlyStalled.delete(e)},r.STALLED_DEDUPE_WINDOW_MS);typeof n.unref=="function"&&n.unref(),this.recentlyStalled.set(e,n),this.counters.stalled+=1,_.warn("QUEUE",`[generation] job=${e} stalled${t==="queue-events"?" (queue-events)":""}`,{queue:this.name,jobId:e,source:t});for(let i of this.listeners)try{i.onStalled?.(e)}catch{}}notifyQueueError(e,t){this.counters.errored+=1,_.warn("QUEUE",`${this.name} ${t} error`,{error:e instanceof Error?e.message:String(e)});for(let n of this.listeners)try{n.onError?.(e)}catch{}}start(e){if(this.started)throw new Error(`ServerJobQueue ${this.name} is already started`);let t={connection:this.config.connection,prefix:this.config.prefix,autorun:!1,concurrency:this.concurrency,lockDuration:this.lockDurationMs},n=this.workerFactory?this.workerFactory(this.name,e,t):new Ka.Worker(this.name,e,t);if(n.on("error",i=>this.notifyQueueError(i,"worker")),typeof n.on=="function"){let i=n;i.on("active",s=>{s.id&&this.jobStartTimes.set(s.id,Date.now())}),i.on("completed",(s,a)=>{let o=s.id?this.jobStartTimes.get(s.id):void 0,c=o?Date.now()-o:0;s.id&&this.jobStartTimes.delete(s.id);let l=s.data?.source_type??"?";_.info("QUEUE",`[generation] job=${s.id??"?"} source_type=${l} duration=${c}ms`,{queue:this.name,jobId:s.id??null,sourceType:l,durationMs:c});for(let u of this.listeners)try{u.onCompleted?.(s.id??"?",c,a)}catch{}}),i.on("failed",(s,a)=>{s?.id&&this.jobStartTimes.delete(s.id);let o=s?.data?.source_type??"?",c=s?.attemptsMade??0;_.warn("QUEUE",`[generation] job=${s?.id??"?"} source_type=${o} attempts=${c} reason=${a.message}`,{queue:this.name,jobId:s?.id??null,sourceType:o,attemptsMade:c,reason:a.message});for(let l of this.listeners)try{l.onFailed?.(s?.id,c,a.message)}catch{}}),i.on("progress",(s,a)=>{_.debug?.("QUEUE",`[generation] job=${s.id??"?"} progress`,{queue:this.name,jobId:s.id??null,progress:a})}),i.on("stalled",s=>this.notifyStalled(s,"worker"))}if(n.run(),this.worker=n,!this.workerFactory)try{let i=new Ka.QueueEvents(this.name,{connection:this.config.connection,prefix:this.config.prefix});i.on("stalled",({jobId:s})=>this.notifyStalled(s,"queue-events")),i.on("error",s=>this.notifyQueueError(s,"queue-events")),this.queueEvents=i}catch(i){_.warn("QUEUE",`${this.name} failed to start QueueEvents listener`,{error:i instanceof Error?i.message:String(i)})}this.started=!0}observe(e){this.listeners.push(e)}getLifecycleCounters(){return{...this.counters}}isStarted(){return this.started}async close(){let e=[];if(this.queueEvents){try{await this.queueEvents.close()}catch(t){e.push(t instanceof Error?t:new Error(String(t)))}this.queueEvents=null}if(this.worker){try{await this.worker.close()}catch(t){e.push(t instanceof Error?t:new Error(String(t)))}this.worker=null,this.started=!1}if(this.queue){try{await this.queue.close()}catch(t){e.push(t instanceof Error?t:new Error(String(t)))}this.queue=null}for(let t of this.recentlyStalled.values())clearTimeout(t);if(this.recentlyStalled.clear(),e.length>0)throw e[0]}toRedisUnavailableError(e){let t=e instanceof Error?e.message:String(e);return new Error(`ServerJobQueue ${this.name} requires Redis/Valkey when CLAUDE_MEM_QUEUE_ENGINE=bullmq: ${t}`)}}});var ux,os,dx=L(()=>{"use strict";vq();iu();ve();ux=["event","event-batch","summary","reindex"],os=class{constructor(e,t){this.config=e;if(e.engine!=="bullmq")throw new Error(`ActiveServerBetaQueueManager requires CLAUDE_MEM_QUEUE_ENGINE=bullmq (got ${e.engine}); do not instantiate when bullmq is not selected.`);this.queues=t??this.buildQueues(e)}config;kind="queue-manager";queues;closed=!1;getQueue(e){let t=this.queues.get(e);if(!t)throw new Error(`unknown server generation job kind: ${e}`);return t}start(e,t){this.getQueue(e).start(t)}getHealth(){if(this.closed)return{status:"errored",reason:"queue-manager closed"};let e=ux.map(t=>({kind:t,name:ko[t]}));return{status:"active",reason:"BullMQ-backed queue manager wired",details:{engine:this.config.engine,mode:this.config.mode,host:this.config.host,port:this.config.port,prefix:this.config.prefix,lanes:e}}}async getLaneMetrics(){let e=[];for(let t of ux){let n=this.queues.get(t);if(!n)continue;let i=n.getLifecycleCounters();try{let s=await n.getCounts();e.push({kind:t,name:ko[t],waiting:s.waiting,active:s.active,completed:s.completed,failed:s.failed,delayed:s.delayed,stalled:i.stalled,unavailable:!1})}catch(s){e.push({kind:t,name:ko[t],waiting:0,active:0,completed:0,failed:0,delayed:0,stalled:i.stalled,unavailable:!0,unavailableReason:s instanceof Error?s.message:String(s)})}}return e}async close(){if(this.closed)return;this.closed=!0;let e=[];for(let t of this.queues.values())try{await t.close()}catch(n){e.push(n instanceof Error?n:new Error(String(n)))}if(e.length>0)throw _.warn("QUEUE","errors closing server-beta queue manager",{count:e.length,first:e[0].message}),e[0]}buildQueues(e){let t=new Map;for(let n of ux)t.set(n,new pf({name:ko[n],config:e}));return t}}});function xq(r){return{id:r.id,teamId:r.team_id,name:r.name,metadata:ze(r.metadata),createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}var Kn,fc=L(()=>{"use strict";Gr();Kn=class{constructor(e){this.client=e}client;async create(e){let t=e.id??Ne(),n=await W(this.client,`
INSERT INTO projects (id, team_id, name, metadata)
VALUES ($1, $2, $3, $4::jsonb)
RETURNING *
`,[t,e.teamId,e.name,JSON.stringify(e.metadata??{})]);return xq(n)}async getByIdForTeam(e,t){let n=await W(this.client,"SELECT * FROM projects WHERE id = $1 AND team_id = $2",[e,t]);return n?xq(n):null}}});function Eq(r){return{id:r.id,name:r.name,metadata:ze(r.metadata),createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}function Sq(r){return{teamId:r.team_id,userId:r.user_id,role:r.role,metadata:ze(r.metadata),createdAtEpoch:ge(r.created_at),updatedAtEpoch:ge(r.updated_at)}}var cs,ff=L(()=>{"use strict";Gr();cs=class{constructor(e){this.client=e}client;async create(e){let t=e.id??Ne(),n=await W(this.client,`
INSERT INTO teams (id, name, metadata)
VALUES ($1, $2, $3::jsonb)
RETURNING *
`,[t,e.name,JSON.stringify(e.metadata??{})]);return Eq(n)}async addMember(e){let t=await W(this.client,`
INSERT INTO team_members (team_id, user_id, role, metadata)
VALUES ($1, $2, $3, $4::jsonb)
ON CONFLICT (team_id, user_id) DO UPDATE SET
role = excluded.role,
metadata = excluded.metadata,
updated_at = now()
RETURNING *
`,[e.teamId,e.userId,e.role,JSON.stringify(e.metadata??{})]);return Sq(t)}async getByIdForUser(e){let t=await W(this.client,`
SELECT teams.*
FROM teams
INNER JOIN team_members ON team_members.team_id = teams.id
WHERE teams.id = $1 AND team_members.user_id = $2
`,[e.id,e.userId]);return t?Eq(t):null}async getMember(e,t){let n=await W(this.client,"SELECT * FROM team_members WHERE team_id = $1 AND user_id = $2",[e,t]);return n?Sq(n):null}}});async function mf(r){if(Yse(r)){let e=await r.connect();try{await mf(e)}finally{e.release()}return}await r.query("BEGIN");try{await r.query(Wse),await r.query(`
INSERT INTO server_beta_schema_migrations (version, description)
VALUES ($1, $2)
ON CONFLICT (version) DO NOTHING
`,[1,"phase 1 postgres observation storage foundation"]),await r.query("COMMIT")}catch(e){throw await r.query("ROLLBACK"),e}}function Yse(r){let e=r;return typeof e.connect=="function"&&typeof e.release!="function"&&typeof e.totalCount=="number"&&typeof e.idleCount=="number"&&typeof e.waitingCount=="number"}var px,zse,Wse,fx=L(()=>{"use strict";px=1,zse=["server_beta_schema_migrations","teams","projects","team_members","api_keys","audit_log","server_sessions","agent_events","observation_generation_jobs","observations","observation_sources","observation_generation_job_events"];Wse=`
CREATE TABLE IF NOT EXISTS server_beta_schema_migrations (
version INTEGER PRIMARY KEY,
description TEXT NOT NULL,
applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS teams (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS projects (
id TEXT PRIMARY KEY,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
name TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (id, team_id)
);
CREATE TABLE IF NOT EXISTS team_members (
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
user_id TEXT NOT NULL,
role TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (team_id, user_id)
);
CREATE TABLE IF NOT EXISTS api_keys (
id TEXT PRIMARY KEY,
key_hash TEXT NOT NULL UNIQUE,
team_id TEXT REFERENCES teams(id) ON DELETE CASCADE,
project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
actor_id TEXT NOT NULL,
scopes JSONB NOT NULL DEFAULT '[]'::jsonb,
revoked_at TIMESTAMPTZ,
expires_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (project_id IS NULL OR team_id IS NOT NULL),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS audit_log (
id TEXT PRIMARY KEY,
team_id TEXT REFERENCES teams(id) ON DELETE SET NULL,
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
actor_id TEXT,
api_key_id TEXT REFERENCES api_keys(id) ON DELETE SET NULL,
action TEXT NOT NULL,
resource_type TEXT NOT NULL,
resource_id TEXT,
details JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (project_id IS NULL OR team_id IS NOT NULL),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS server_sessions (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
external_session_id TEXT,
idempotency_key TEXT,
content_session_id TEXT,
agent_id TEXT,
agent_type TEXT,
platform_source TEXT,
generation_status TEXT NOT NULL DEFAULT 'idle',
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
ended_at TIMESTAMPTZ,
last_generated_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (project_id, external_session_id),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS agent_events (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
source_adapter TEXT NOT NULL,
source_event_id TEXT,
idempotency_key TEXT NOT NULL,
event_type TEXT NOT NULL,
payload JSONB NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
occurred_at TIMESTAMPTZ NOT NULL,
received_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (idempotency_key),
UNIQUE (id, project_id, team_id),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observation_generation_jobs (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
agent_event_id TEXT REFERENCES agent_events(id) ON DELETE CASCADE,
source_type TEXT NOT NULL CHECK (source_type IN ('agent_event', 'session_summary', 'observation_reindex')),
source_id TEXT NOT NULL,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
job_type TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('queued', 'processing', 'completed', 'failed', 'cancelled')),
idempotency_key TEXT NOT NULL UNIQUE,
bullmq_job_id TEXT UNIQUE,
attempts INTEGER NOT NULL DEFAULT 0,
max_attempts INTEGER NOT NULL DEFAULT 3,
next_attempt_at TIMESTAMPTZ,
locked_at TIMESTAMPTZ,
locked_by TEXT,
completed_at TIMESTAMPTZ,
failed_at TIMESTAMPTZ,
cancelled_at TIMESTAMPTZ,
last_error JSONB,
payload JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (
(source_type = 'agent_event' AND agent_event_id IS NOT NULL AND source_id = agent_event_id)
OR
(source_type = 'session_summary' AND agent_event_id IS NULL AND server_session_id IS NOT NULL AND source_id = server_session_id)
OR
(source_type = 'observation_reindex' AND agent_event_id IS NULL)
),
FOREIGN KEY (agent_event_id, project_id, team_id) REFERENCES agent_events(id, project_id, team_id) ON DELETE CASCADE,
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observations (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
kind TEXT NOT NULL DEFAULT 'observation',
content TEXT NOT NULL,
content_search TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', content)) STORED,
generation_key TEXT,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
embedding JSONB,
created_by_job_id TEXT REFERENCES observation_generation_jobs(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observation_sources (
id TEXT PRIMARY KEY,
observation_id TEXT NOT NULL REFERENCES observations(id) ON DELETE CASCADE,
agent_event_id TEXT REFERENCES agent_events(id) ON DELETE CASCADE,
generation_job_id TEXT REFERENCES observation_generation_jobs(id) ON DELETE SET NULL,
source_type TEXT NOT NULL CHECK (source_type IN ('agent_event', 'session_summary', 'observation_reindex', 'manual')),
source_id TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (observation_id, source_type, source_id),
UNIQUE (source_type, source_id, generation_job_id, observation_id),
CHECK (
(source_type = 'agent_event' AND agent_event_id IS NOT NULL AND source_id = agent_event_id)
OR
(source_type <> 'agent_event' AND agent_event_id IS NULL)
)
);
CREATE TABLE IF NOT EXISTS observation_generation_job_events (
id TEXT PRIMARY KEY,
generation_job_id TEXT NOT NULL REFERENCES observation_generation_jobs(id) ON DELETE CASCADE,
event_type TEXT NOT NULL CHECK (event_type IN ('queued', 'enqueued', 'processing', 'retry_scheduled', 'completed', 'failed', 'cancelled')),
status_after TEXT NOT NULL CHECK (status_after IN ('queued', 'processing', 'completed', 'failed', 'cancelled')),
attempt INTEGER NOT NULL DEFAULT 0,
details JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_agent_events_project_session ON agent_events(project_id, server_session_id, occurred_at);
ALTER TABLE server_sessions ADD COLUMN IF NOT EXISTS idempotency_key TEXT;
ALTER TABLE observations ADD COLUMN IF NOT EXISTS content_search TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', content)) STORED;
ALTER TABLE observations DROP CONSTRAINT IF EXISTS observations_generation_key_key;
ALTER TABLE observation_generation_jobs DROP CONSTRAINT IF EXISTS observation_generation_jobs_source_type_source_id_job_type_key;
CREATE UNIQUE INDEX IF NOT EXISTS idx_server_sessions_project_idempotency
ON server_sessions(project_id, idempotency_key)
WHERE idempotency_key IS NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_observations_generation_key_scope
ON observations(team_id, project_id, generation_key)
WHERE generation_key IS NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_observation_jobs_source_scope
ON observation_generation_jobs(team_id, project_id, source_type, source_id, job_type);
CREATE INDEX IF NOT EXISTS idx_projects_team ON projects(team_id, id);
CREATE INDEX IF NOT EXISTS idx_agent_events_team_project ON agent_events(team_id, project_id, occurred_at);
CREATE INDEX IF NOT EXISTS idx_observations_project_session ON observations(project_id, server_session_id, created_at);
CREATE INDEX IF NOT EXISTS idx_observations_team_project ON observations(team_id, project_id, created_at);
CREATE INDEX IF NOT EXISTS idx_observations_content_search ON observations USING GIN (content_search);
CREATE INDEX IF NOT EXISTS idx_observation_sources_event ON observation_sources(agent_event_id);
CREATE INDEX IF NOT EXISTS idx_observation_sources_source ON observation_sources(source_type, source_id);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_status_next_attempt ON observation_generation_jobs(status, next_attempt_at, created_at);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_team_project ON observation_generation_jobs(team_id, project_id, status, created_at);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_event ON observation_generation_jobs(agent_event_id);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_source ON observation_generation_jobs(source_type, source_id);
CREATE INDEX IF NOT EXISTS idx_observation_job_events_job_created ON observation_generation_job_events(generation_job_id, created_at);
CREATE INDEX IF NOT EXISTS idx_audit_log_scope_created ON audit_log(project_id, team_id, created_at);
`});var wq={};vi(wq,{PostgresAgentEventsRepository:()=>lr,PostgresAuthRepository:()=>pt,PostgresObservationGenerationJobEventsRepository:()=>dt,PostgresObservationGenerationJobRepository:()=>qe,PostgresObservationRepository:()=>ur,PostgresObservationSourcesRepository:()=>Fn,PostgresProjectsRepository:()=>Kn,PostgresServerSessionsRepository:()=>wt,PostgresTeamsRepository:()=>cs,SERVER_BETA_POSTGRES_SCHEMA_VERSION:()=>px,SERVER_BETA_POSTGRES_TABLES:()=>zse,bootstrapServerBetaPostgresSchema:()=>mf,buildAgentEventIdempotencyKey:()=>nT,buildObservationGenerationJobIdempotencyKey:()=>sT,buildObservationGenerationKey:()=>Ml,buildServerSessionIdempotencyKey:()=>fT,checkPostgresHealth:()=>mz,closePostgresPool:()=>hz,createPostgresPool:()=>ru,createPostgresStorageRepositories:()=>mx,getPostgresDatabaseUrl:()=>lK,getSharedPostgresPool:()=>xb,parsePostgresConfig:()=>Io,withPostgresTransaction:()=>Br});function mx(r){return{teams:new cs(r),projects:new Kn(r),auth:new pt(r),sessions:new wt(r),agentEvents:new lr(r),observations:new ur(r),observationSources:new Fn(r),observationGenerationJobs:new qe(r),observationGenerationJobEvents:new dt(r)}}var hx=L(()=>{"use strict";Ds();mn();qn();fo();fc();Un();ff();Ds();mn();tu();qn();fo();Vs();fc();fx();Un();ff()});var tn,mc,yx,hc,Iq=L(()=>{"use strict";tn=require("fs"),mc=require("path"),yx=require("os"),hc=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_OPENROUTER_MAX_TOKENS:"100000",CLAUDE_MEM_DATA_DIR:(0,mc.join)((0,yx.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,mc.join)((0,yx.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return process.env[e]??this.DEFAULTS[e]}static getInt(e){let t=this.get(e);return parseInt(t,10)}static getBool(e){let t=this.get(e);return t==="true"||t===!0}static applyEnvOverrides(e){let t={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(t[n]=process.env[n]);return t}static loadFromFile(e){try{if(!(0,tn.existsSync)(e)){let a=this.getAllDefaults();try{let o=(0,mc.dirname)(e);(0,tn.existsSync)(o)||(0,tn.mkdirSync)(o,{recursive:!0}),(0,tn.writeFileSync)(e,JSON.stringify(a,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",e)}catch(o){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,o instanceof Error?o.message:String(o))}return this.applyEnvOverrides(a)}let t=(0,tn.readFileSync)(e,"utf-8"),n=JSON.parse(t),i=n;if(n.env&&typeof n.env=="object"){i=n.env;try{(0,tn.writeFileSync)(e,JSON.stringify(i,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(a){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,a instanceof Error?a.message:String(a))}}let s={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))i[a]!==void 0&&(s[a]=i[a]);return this.applyEnvOverrides(s)}catch(t){return console.warn("[SETTINGS] Failed to load settings, using defaults:",e,t instanceof Error?t.message:String(t)),this.applyEnvOverrides(this.getAllDefaults())}}}});function Qse(){let r=ja("CLAUDE_MEM_QUEUE_ENGINE").trim().toLowerCase();if(r==="sqlite"||r==="bullmq")return r;throw new Error(`Invalid CLAUDE_MEM_QUEUE_ENGINE=${r}; expected sqlite or bullmq`)}function Tq(){let r=Qse(),e=Xse(ja("CLAUDE_MEM_REDIS_MODE")),t=ja("CLAUDE_MEM_REDIS_URL").trim()||null,n=ja("CLAUDE_MEM_REDIS_HOST").trim()||"127.0.0.1",i=Zse(ja("CLAUDE_MEM_REDIS_PORT")),s=eae(ja("CLAUDE_MEM_QUEUE_REDIS_PREFIX")),a=t?rae(t):tae(n,i);return{engine:r,mode:e,url:t,host:t?_q(t).host:n,port:t?_q(t).port:i,prefix:s,connection:a}}function ja(r){return process.env[r]!==void 0?process.env[r]:(0,kq.existsSync)(zh)?hc.loadFromFile(zh)[r]:hc.get(r)}function Xse(r){let e=r.trim().toLowerCase();if(e==="external"||e==="managed"||e==="docker")return e;throw new Error(`Invalid CLAUDE_MEM_REDIS_MODE=${r}; expected external, managed, or docker`)}function Zse(r){let e=Number.parseInt(r,10);if(!Number.isInteger(e)||e<=0||e>65535)throw new Error(`Invalid CLAUDE_MEM_REDIS_PORT=${r}; expected a TCP port`);return e}function eae(r){return(r.trim()||"claude_mem").replace(/[^a-zA-Z0-9_-]/g,"_")}function tae(r,e){return{host:r,port:e,maxRetriesPerRequest:null,connectTimeout:1e3,lazyConnect:!0}}function rae(r){let e=new URL(r);if(e.protocol!=="redis:"&&e.protocol!=="rediss:")throw new Error("CLAUDE_MEM_REDIS_URL must use redis:// or rediss://");let t=e.pathname.length>1?Number.parseInt(e.pathname.slice(1),10):void 0;if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error(`Invalid Redis database in CLAUDE_MEM_REDIS_URL: ${e.pathname}`);return{host:e.hostname||"127.0.0.1",port:e.port?Number.parseInt(e.port,10):6379,username:e.username?decodeURIComponent(e.username):void 0,password:e.password?decodeURIComponent(e.password):void 0,db:t,tls:e.protocol==="rediss:"?{}:void 0,maxRetriesPerRequest:null,connectTimeout:1e3,lazyConnect:!0}}function _q(r){let e=new URL(r);return{host:e.hostname||"127.0.0.1",port:e.port?Number.parseInt(e.port,10):6379}}var kq,Aq=L(()=>{"use strict";kq=require("fs");Iq();dn()});function hf(r){if(!r)return;let e=Number(r);if(!Number.isNaN(e)&&e>=0)return Math.floor(e*1e3);let t=Date.parse(r);if(!Number.isNaN(t)){let n=t-Date.now();return n>0?n:0}}function bi(r){let{status:e,providerLabel:t}=r,n=r.bodyText??"",i=n.toLowerCase(),s=r.headers?hf(r.headers.get("retry-after")):void 0;if(i.includes("quota exceeded")||i.includes("insufficient credits")||i.includes("insufficient_quota")||i.includes("resource_exhausted"))return new fe(`${t} quota exhausted${e!==void 0?` (status ${e})`:""}`,{kind:"quota_exhausted",cause:r.cause});if(e===429)return new fe(`${t} rate limit (429)`,{kind:"rate_limit",cause:r.cause,...s!==void 0?{retryAfterMs:s}:{}});if(e===401||e===403)return new fe(`${t} auth error (status ${e})`,{kind:"auth_invalid",cause:r.cause});if(e===400||e===404)return new fe(`${t} bad request (status ${e})`,{kind:"unrecoverable",cause:r.cause});if(e!==void 0&&e>=500&&e<600)return new fe(`${t} upstream error (status ${e})`,{kind:"transient",cause:r.cause});if(e===void 0){let a=r.cause instanceof Error?r.cause.message:String(r.cause);return new fe(`${t} network error: ${a}`,{kind:"transient",cause:r.cause})}return new fe(`${t} API error: ${e}${n?` - ${n.substring(0,200)}`:""}`,{kind:"unrecoverable",cause:r.cause})}var fe,yc=L(()=>{"use strict";fe=class extends Error{kind;retryAfterMs;cause;constructor(e,t){super(e),this.name="ServerClassifiedProviderError",this.kind=t.kind,this.cause=t.cause,t.retryAfterMs!==void 0&&(this.retryAfterMs=t.retryAfterMs)}}});var bc,yf,Oa,bx=L(()=>{"use strict";bc=require("fs"),yf=require("path");ve();dn();Oa=class r{static instance=null;activeMode=null;modesDir;constructor(){let e=jl(),t=[(0,yf.join)(e,"modes"),(0,yf.join)(e,"..","plugin","modes")],n=t.find(i=>(0,bc.existsSync)(i));this.modesDir=n||t[0]}static getInstance(){return r.instance||(r.instance=new r),r.instance}parseInheritance(e){let t=e.split("--");if(t.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(t.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:t[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,t){let n={...e};for(let i in t){let s=t[i],a=e[i];this.isPlainObject(s)&&this.isPlainObject(a)?n[i]=this.deepMerge(a,s):n[i]=s}return n}loadModeFile(e){let t=(0,yf.join)(this.modesDir,`${e}.json`);if(!(0,bc.existsSync)(t))throw new Error(`Mode file not found: ${t}`);let n=(0,bc.readFileSync)(t,"utf-8");return JSON.parse(n)}loadMode(e){let t=this.parseInheritance(e);if(!t.hasParent)try{let c=this.loadModeFile(e);return this.activeMode=c,_.debug("SYSTEM",`Loaded mode: ${c.name} (${e})`,void 0,{types:c.observation_types.map(l=>l.id),concepts:c.observation_concepts.map(l=>l.id)}),c}catch(c){if(c instanceof Error?_.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:c.message}):_.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{error:String(c)}),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:n,overrideId:i}=t,s;try{s=this.loadMode(n)}catch(c){c instanceof Error?_.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{message:c.message}):_.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{error:String(c)}),s=this.loadMode("code")}let a;try{a=this.loadModeFile(i),_.debug("SYSTEM",`Loaded override file: ${i} for parent ${n}`)}catch(c){return c instanceof Error?_.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{message:c.message}):_.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{error:String(c)}),this.activeMode=s,s}if(!a)return _.warn("SYSTEM",`Invalid override file: ${i}, using parent mode '${n}' only`),this.activeMode=s,s;let o=this.deepMerge(s,a);return this.activeMode=o,_.debug("SYSTEM",`Loaded mode with inheritance: ${o.name} (${e} = ${n} + ${i})`,void 0,{parent:n,override:i,types:o.observation_types.map(c=>c.id),concepts:o.observation_concepts.map(c=>c.id)}),o}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getObservationTypes(){return this.getActiveMode().observation_types}getObservationConcepts(){return this.getActiveMode().observation_concepts}getTypeIcon(e){return this.getObservationTypes().find(n=>n.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(n=>n.id===e)?.work_emoji||"\u{1F4DD}"}validateType(e){return this.getObservationTypes().some(t=>t.id===e)}getTypeLabel(e){return this.getObservationTypes().find(n=>n.id===e)?.label||e}}});function nae(r){let e=r.match(/^\s*```(?:xml)?\s*\n([\s\S]*?)\n```\s*$/i);return e?e[1]:r}function gx(r,e){if(typeof r!="string"||!r.trim())return{valid:!1};r=nae(r);let t=/<skip_summary(?:\s+reason="([^"]*)")?\s*\/>/.exec(r);if(t)return{valid:!0,observations:[],summary:{request:null,investigated:null,learned:null,completed:null,next_steps:null,notes:null,skipped:!0,skip_reason:t[1]??null}};let n=/<(observation|summary)\b/i.exec(r);if(!n)return{valid:!1};if(n[1].toLowerCase()==="observation"){let a=iae(r,e);return a.length===0?{valid:!1}:{valid:!0,observations:a,summary:null}}let s=sae(r,e);return s?{valid:!0,observations:[],summary:s}:{valid:!1}}function iae(r,e){let t=[],n=/<observation>([\s\S]*?)<\/observation>/g,i;for(;(i=n.exec(r))!==null;){let s=i[1],a=rn(s,"type"),o=rn(s,"title"),c=rn(s,"subtitle"),l=rn(s,"narrative"),u=bf(s,"facts","fact"),d=bf(s,"concepts","concept"),p=bf(s,"files_read","file"),f=bf(s,"files_modified","file"),y=Oa.getInstance().getActiveMode().observation_types.map(I=>I.id),b=y[0],g=b;a?y.includes(a.trim())?g=a.trim():_.error("PARSER",`Invalid observation type: ${a}, using "${b}"`,{correlationId:e}):_.error("PARSER",`Observation missing type field, using "${b}"`,{correlationId:e});let x=d.filter(I=>I!==g);if(x.length!==d.length&&_.debug("PARSER","Removed observation type from concepts array",{correlationId:e,type:g,originalConcepts:d,cleanedConcepts:x}),!o&&!l&&u.length===0&&x.length===0){_.warn("PARSER","Skipping empty observation (all content fields null)",{correlationId:e,type:g});continue}t.push({type:g,title:o,subtitle:c,facts:u,narrative:l,concepts:x,files_read:p,files_modified:f})}return t}function sae(r,e){let n=/<summary>([\s\S]*?)<\/summary>/.exec(r);if(!n)return null;let i=n[1],s=rn(i,"request"),a=rn(i,"investigated"),o=rn(i,"learned"),c=rn(i,"completed"),l=rn(i,"next_steps"),u=rn(i,"notes");return!s&&!a&&!o&&!c&&!l?(_.warn("PARSER","Summary block has no sub-tags \u2014 rejecting false positive",{correlationId:e}),null):{request:s,investigated:a,learned:o,completed:c,next_steps:l,notes:u}}function rn(r,e){let n=new RegExp(`<${e}>([\\s\\S]*?)</${e}>`).exec(r);if(!n)return null;let i=n[1].trim();return i===""?null:i}function bf(r,e,t){let n=[],s=new RegExp(`<${e}>([\\s\\S]*?)</${e}>`).exec(r);if(!s)return n;let a=s[1],o=new RegExp(`<${t}>([\\s\\S]*?)</${t}>`,"g"),c;for(;(c=o.exec(a))!==null;){let l=c[1].trim();l&&n.push(l)}return n}var Kq=L(()=>{"use strict";ve();bx()});function gc(r){let e=Object.fromEntries(Rq.map(i=>[i,0]));jq.lastIndex=0;let t=0,n=r.replace(jq,(i,s)=>(e[s]=(e[s]??0)+1,t+=1,""));return t>Oq&&_.warn("SYSTEM","tag count exceeds limit",void 0,{tagCount:t,maxAllowed:Oq,contentLength:r.length}),{stripped:n.trim(),counts:e}}var Rq,jq,Oq,aae,Hbe,zbe,vx=L(()=>{"use strict";ve();Rq=["private","claude-mem-context","system_instruction","system-instruction","persisted-output","system-reminder"],jq=new RegExp(`<(${Rq.join("|")})\\b[^>]*>[\\s\\S]*?</\\1>`,"g"),Oq=100;aae=["task-notification"],Hbe=new RegExp(`^\\s*<(${aae.join("|")})\\b[^>]*>(?:(?!<\\1\\b|</\\1\\b)[\\s\\S])*</\\1>\\s*$`),zbe=256*1024});async function Cq(r){let{job:e,rawText:t}=r,n=gx(t,e.id);if(!n.valid)return{kind:"parse_error",jobId:e.id,reason:"parser rejected response"};let i=n.observations??[],a=n.summary?.skipped===!0||i.length===0;return await Br(r.pool,async o=>{let c=new ur(o),l=new Fn(o),u=new qe(o),d=new dt(o),p=new pt(o),f=await u.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!f)throw new Error(`generation job ${e.id} not found in scope`);if(f.status==="completed"||f.status==="cancelled"||f.status==="failed")return _.info("SYSTEM","generation job already in terminal status; skipping persistence",{jobId:f.id,status:f.status}),{kind:"completed",jobId:f.id,observations:[],privateContentDetected:a};let m=[];for(let y=0;y<i.length;y++){let b=i[y],g=cae(b);if(!g||g.trim().length===0)continue;let x=gc(g);if(!x.stripped||x.stripped.trim().length===0)continue;let I=Ml({generationJobId:f.id,parsedObservationIndex:y,content:x.stripped}),k=await c.create({projectId:f.projectId,teamId:f.teamId,serverSessionId:f.serverSessionId,kind:b.type??"observation",content:x.stripped,generationKey:I,metadata:{title:b.title,subtitle:b.subtitle,facts:b.facts,narrative:b.narrative,concepts:b.concepts,files_read:b.files_read,files_modified:b.files_modified,provider:r.providerLabel,model:r.modelId??null},createdByJobId:f.id});m.push(k),await l.addSource({observationId:k.id,projectId:f.projectId,teamId:f.teamId,sourceType:f.sourceType,sourceId:f.sourceId,agentEventId:f.agentEventId??null,generationJobId:f.id,metadata:{provider:r.providerLabel,parsedObservationIndex:y,source_adapter:r.sourceAdapter??null,actor_id:r.actorId??null,api_key_id:r.apiKeyId??null}});try{await p.createAuditLog({teamId:f.teamId,projectId:f.projectId,actorId:r.actorId??null,apiKeyId:r.apiKeyId??null,action:"observation.created",resourceType:"observation",resourceId:k.id,details:{generationJobId:f.id,sourceType:f.sourceType,sourceId:f.sourceId,provider:r.providerLabel,model:r.modelId??null,sourceAdapter:r.sourceAdapter??null,parsedObservationIndex:y}})}catch(M){_.warn("SYSTEM","audit_log observation.created insert failed",{observationId:k.id,error:M instanceof Error?M.message:String(M)})}}await u.transitionStatus({id:f.id,projectId:f.projectId,teamId:f.teamId,status:"completed"}),await d.append({generationJobId:f.id,projectId:f.projectId,teamId:f.teamId,eventType:"completed",statusAfter:"completed",attempt:f.attempts,details:{provider:r.providerLabel,model:r.modelId??null,observationCount:m.length,privateContentDetected:a,workerId:r.workerId??null}});try{await p.createAuditLog({teamId:f.teamId,projectId:f.projectId,actorId:r.actorId??null,apiKeyId:r.apiKeyId??null,action:"generation_job.completed",resourceType:"observation_generation_job",resourceId:f.id,details:{generationJobId:f.id,provider:r.providerLabel,model:r.modelId??null,observationCount:m.length,observationIds:m.map(y=>y.id),sourceAdapter:r.sourceAdapter??null}})}catch(y){_.warn("SYSTEM","audit log insert failed during generation",{jobId:f.id,error:y instanceof Error?y.message:String(y)})}return{kind:"completed",jobId:f.id,observations:m,privateContentDetected:a}})}async function vc(r){await Br(r.pool,async e=>{let t=new qe(e),n=new dt(e),i=await t.getByIdForScope({id:r.job.id,projectId:r.job.projectId,teamId:r.job.teamId});if(!i||i.status==="completed"||i.status==="cancelled")return;let s=r.retryable&&i.attempts<i.maxAttempts,a=s?"queued":"failed";await t.transitionStatus({id:i.id,projectId:i.projectId,teamId:i.teamId,status:a,lastError:{reason:r.reason,classification:r.classification??null},...s?{nextAttemptAt:new Date(Date.now()+lae(i.attempts))}:{}}),await n.append({generationJobId:i.id,projectId:i.projectId,teamId:i.teamId,eventType:s?"retry_scheduled":"failed",statusAfter:a,attempt:i.attempts,details:{reason:r.reason,classification:r.classification??null,workerId:r.workerId??null}})})}async function Dq(r){let{job:e,rawText:t}=r;if(e.sourceType!=="session_summary")return{kind:"parse_error",jobId:e.id,reason:"session summary processor invoked on non-summary job"};let n=gx(t,e.id);if(!n.valid)return{kind:"parse_error",jobId:e.id,reason:"parser rejected summary response"};let i=n.summary??null,s=i?.skipped===!0,a=i?oae(i):"",o=s||a.trim().length===0;return await Br(r.pool,async c=>{let l=new ur(c),u=new Fn(c),d=new qe(c),p=new dt(c),f=new pt(c),m=await d.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!m)throw new Error(`session summary generation job ${e.id} not found in scope`);if(m.status==="completed"||m.status==="cancelled"||m.status==="failed")return _.info("SYSTEM","session summary job already in terminal status; skipping persistence",{jobId:m.id,status:m.status}),{kind:"completed",jobId:m.id,observations:[],privateContentDetected:o};let y=[];if(!o){let g=gc(a).stripped??"";if(g.trim().length>0){let x=Ml({generationJobId:m.id,parsedObservationIndex:0,content:g}),I=await l.create({projectId:m.projectId,teamId:m.teamId,serverSessionId:m.serverSessionId,kind:"summary",content:g,generationKey:x,metadata:{request:i?.request??null,investigated:i?.investigated??null,learned:i?.learned??null,completed:i?.completed??null,next_steps:i?.next_steps??null,notes:i?.notes??null,provider:r.providerLabel,model:r.modelId??null},createdByJobId:m.id});y.push(I),await u.addSource({observationId:I.id,projectId:m.projectId,teamId:m.teamId,sourceType:"session_summary",sourceId:m.sourceId,generationJobId:m.id,metadata:{provider:r.providerLabel,parsedObservationIndex:0,source_adapter:r.sourceAdapter??null,actor_id:r.actorId??null,api_key_id:r.apiKeyId??null}});try{await f.createAuditLog({teamId:m.teamId,projectId:m.projectId,actorId:r.actorId??null,apiKeyId:r.apiKeyId??null,action:"observation.created",resourceType:"observation",resourceId:I.id,details:{generationJobId:m.id,sourceType:"session_summary",sourceId:m.sourceId,provider:r.providerLabel,model:r.modelId??null,sourceAdapter:r.sourceAdapter??null,kind:"summary"}})}catch(k){_.warn("SYSTEM","audit_log observation.created (summary) insert failed",{observationId:I.id,error:k instanceof Error?k.message:String(k)})}}}await d.transitionStatus({id:m.id,projectId:m.projectId,teamId:m.teamId,status:"completed"}),await p.append({generationJobId:m.id,projectId:m.projectId,teamId:m.teamId,eventType:"completed",statusAfter:"completed",attempt:m.attempts,details:{provider:r.providerLabel,model:r.modelId??null,observationCount:y.length,privateContentDetected:o,workerId:r.workerId??null,sourceType:"session_summary"}});try{await f.createAuditLog({teamId:m.teamId,projectId:m.projectId,actorId:r.actorId??null,apiKeyId:r.apiKeyId??null,action:"generation_job.completed",resourceType:"observation_generation_job",resourceId:m.id,details:{generationJobId:m.id,provider:r.providerLabel,model:r.modelId??null,observationCount:y.length,observationIds:y.map(b=>b.id),sourceAdapter:r.sourceAdapter??null,sourceType:"session_summary"}})}catch(b){_.warn("SYSTEM","audit log insert failed during summary generation",{jobId:m.id,error:b instanceof Error?b.message:String(b)})}return{kind:"completed",jobId:m.id,observations:y,privateContentDetected:o}})}function oae(r){let e=[];return r.request&&e.push(`Request: ${r.request}`),r.investigated&&e.push(`Investigated: ${r.investigated}`),r.learned&&e.push(`Learned: ${r.learned}`),r.completed&&e.push(`Completed: ${r.completed}`),r.next_steps&&e.push(`Next steps: ${r.next_steps}`),r.notes&&e.push(`Notes: ${r.notes}`),e.join(`
`).trim()}function cae(r){let e=[];return r.title&&e.push(r.title),r.subtitle&&e.push(r.subtitle),r.narrative&&e.push(r.narrative),r.facts&&r.facts.length>0&&e.push(r.facts.map(t=>`- ${t}`).join(`
`)),e.join(`
`).trim()}function lae(r){let e=5e3*Math.pow(5,Math.max(0,r));return Math.min(e,600*1e3)}var Pq=L(()=>{"use strict";Kq();ve();fo();qn();mn();Vs();vx()});var gf,vf,Mq=L(()=>{"use strict";ve();Ds();qn();fc();mn();iu();yc();Pq();Un();gf=class extends Error{reason;constructor(e,t){super(t),this.reason=e}},vf=class{constructor(e){this.options=e}options;async process(e){let t=`bullmq:${e.id??"?"}`,n=e.data?.request_id??null,i;try{i=dK(e.data)}catch(o){throw o instanceof _o&&_.error("SYSTEM","rejecting malformed job payload at execution",{correlationId:t,issues:o.issues}),o}if(i.kind!=="event"&&i.kind!=="event-batch"&&i.kind!=="summary")throw _.warn("SYSTEM","unsupported job kind for ProviderObservationGenerator",{correlationId:t,kind:i.kind}),new Error(`unsupported job kind: ${i.kind}`);let s=await this.loadCanonicalOutbox(i.generation_job_id);if(!s)return _.info("SYSTEM","job row not found by id; nothing to do",{correlationId:t,generationJobId:i.generation_job_id}),{jobId:i.generation_job_id,status:"completed",observationCount:0};if(s.teamId!==i.team_id||s.projectId!==i.project_id){let o=new gf("scope_mismatch",`BullMQ payload team/project does not match outbox row (jobId=${i.generation_job_id})`);throw await this.auditScopeViolation(i,s,o,t),await vc({pool:this.options.pool,job:s,reason:o.message,classification:"scope_mismatch",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),o}if(i.api_key_id&&await this.isApiKeyRevoked(i.api_key_id)){let c=new gf("revoked_key",`api key ${i.api_key_id} is revoked; refusing to generate for outbox ${s.id}`);throw await this.auditRevokedKey(i,s,c,t),await vc({pool:this.options.pool,job:s,reason:c.message,classification:"revoked_key",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),c}let a=await this.lockOutbox(i.generation_job_id,i.team_id,i.project_id);if(!a)return _.info("SYSTEM","job no longer exists or is in terminal status; nothing to do",{correlationId:t,generationJobId:i.generation_job_id}),{jobId:i.generation_job_id,status:"completed",observationCount:0};_.info("SYSTEM","[generation] job locked for processing",{correlationId:t,jobId:a.id,bullmqJobId:e.id??null,requestId:n,sourceType:a.sourceType,attempt:a.attempts}),await this.auditEvent({teamId:a.teamId,projectId:a.projectId,apiKeyId:i.api_key_id,actorId:i.actor_id,action:"generation_job.processing",resourceId:a.id,details:{sourceType:a.sourceType,sourceId:a.sourceId,sourceAdapter:i.source_adapter,attempt:a.attempts,correlationId:t,requestId:n}});try{let o=await this.loadEvents(a,i),c=await this.loadProject(a),l=await this.options.provider.generate({job:a,events:o,project:{projectId:a.projectId,teamId:a.teamId,serverSessionId:a.serverSessionId,projectName:c?.name??null}}),u={pool:this.options.pool,job:a,rawText:l.rawText,modelId:l.modelId,providerLabel:l.providerLabel,apiKeyId:i.api_key_id,actorId:i.actor_id,sourceAdapter:i.source_adapter,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}},d=a.sourceType==="session_summary"?await Dq(u):await Cq(u);if(d.kind==="parse_error")throw await vc({pool:this.options.pool,job:a,reason:d.reason,classification:"parse_error",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),new Error(`generation parse error: ${d.reason}`);return _.info("SYSTEM","generation completed",{correlationId:t,jobId:d.jobId,bullmqJobId:e.id??null,requestId:n,observationCount:d.observations.length,privateContentDetected:d.privateContentDetected}),{jobId:d.jobId,status:"completed",observationCount:d.observations.length}}catch(o){let c=o instanceof fe?o:null,l=c?c.kind==="transient"||c.kind==="rate_limit":!1;throw await vc({pool:this.options.pool,job:a,reason:o instanceof Error?o.message:String(o),classification:c?.kind??"unknown",retryable:l,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),o}}async loadCanonicalOutbox(e){let n=(await this.options.pool.query("SELECT * FROM observation_generation_jobs WHERE id = $1",[e])).rows[0];return n?{id:n.id,projectId:n.project_id,teamId:n.team_id,agentEventId:n.agent_event_id,sourceType:n.source_type,sourceId:n.source_id,serverSessionId:n.server_session_id,jobType:n.job_type,status:n.status,idempotencyKey:n.idempotency_key,bullmqJobId:n.bullmq_job_id,attempts:n.attempts,maxAttempts:n.max_attempts,nextAttemptAtEpoch:n.next_attempt_at?.getTime()??null,lockedAtEpoch:n.locked_at?.getTime()??null,lockedBy:n.locked_by,completedAtEpoch:n.completed_at?.getTime()??null,failedAtEpoch:n.failed_at?.getTime()??null,cancelledAtEpoch:n.cancelled_at?.getTime()??null,lastError:n.last_error&&typeof n.last_error=="object"?n.last_error:null,payload:n.payload&&typeof n.payload=="object"&&!Array.isArray(n.payload)?n.payload:{},createdAtEpoch:n.created_at.getTime(),updatedAtEpoch:n.updated_at.getTime()}:null}async isApiKeyRevoked(e){let n=(await this.options.pool.query("SELECT revoked_at, expires_at FROM api_keys WHERE id = $1",[e])).rows[0];return!!(!n||n.revoked_at||n.expires_at&&n.expires_at.getTime()<=Date.now())}async auditScopeViolation(e,t,n,i){_.error("SYSTEM","BullMQ payload scope mismatch \u2014 refusing to generate",{correlationId:i,generationJobId:e.generation_job_id,payloadTeamId:e.team_id,payloadProjectId:e.project_id,canonicalTeamId:t.teamId,canonicalProjectId:t.projectId}),await this.auditEvent({teamId:t.teamId,projectId:t.projectId,apiKeyId:e.api_key_id,actorId:e.actor_id,action:"generation_job.scope_violation",resourceId:t.id,details:{reason:"scope_mismatch",message:n.message,payloadTeamId:e.team_id,payloadProjectId:e.project_id,canonicalTeamId:t.teamId,canonicalProjectId:t.projectId,sourceAdapter:e.source_adapter,correlationId:i}})}async auditRevokedKey(e,t,n,i){_.warn("SYSTEM","api key revoked between enqueue and execute \u2014 refusing to generate",{correlationId:i,generationJobId:e.generation_job_id,apiKeyId:e.api_key_id}),await this.auditEvent({teamId:t.teamId,projectId:t.projectId,apiKeyId:e.api_key_id,actorId:e.actor_id,action:"generation_job.revoked_key",resourceId:t.id,details:{reason:"revoked_key",message:n.message,sourceAdapter:e.source_adapter,correlationId:i}})}async auditEvent(e){try{await new pt(this.options.pool).createAuditLog({teamId:e.teamId,projectId:e.projectId,actorId:e.actorId,apiKeyId:e.apiKeyId,action:e.action,resourceType:"observation_generation_job",resourceId:e.resourceId,details:e.details??{}})}catch(t){_.warn("SYSTEM","audit_log insert failed in ProviderObservationGenerator",{action:e.action,error:t instanceof Error?t.message:String(t)})}}async lockOutbox(e,t,n){let i=new qe(this.options.pool),s=await i.getByIdForScope({id:e,projectId:n,teamId:t});return!s||s.status==="completed"||s.status==="cancelled"||s.status==="failed"?null:s.status==="processing"?(_.info("SYSTEM","generation job already in processing; skipping duplicate worker run",{jobId:s.id,lockedBy:s.lockedBy,lockedAtEpoch:s.lockedAtEpoch,attempts:s.attempts}),null):await i.transitionStatus({id:s.id,projectId:s.projectId,teamId:s.teamId,status:"processing",lockedBy:this.options.workerId??"server-beta-worker"})}async loadEvents(e,t){let n=new lr(this.options.pool);if(e.sourceType==="session_summary")return e.serverSessionId?await new wt(this.options.pool).listUnprocessedEvents({serverSessionId:e.serverSessionId,projectId:e.projectId,teamId:e.teamId}):[];if(e.sourceType!=="agent_event")return[];if(t.kind==="event"){let i=await n.getByIdForScope({id:t.agent_event_id,projectId:e.projectId,teamId:e.teamId});return i?[i]:[]}if(t.kind==="event-batch"){let i=[];for(let s of t.agent_event_ids){let a=await n.getByIdForScope({id:s,projectId:e.projectId,teamId:e.teamId});a&&i.push(a)}return i}return[]}async loadProject(e){return await new Kn(this.options.pool).getByIdForTeam(e.projectId,e.teamId)}}});var xc,Lq=L(()=>{"use strict";ve();mn();Mq();xc=class{constructor(e){this.options=e;this.workerId=e.workerId??`server-beta-${process.pid}`,this.generator=e.generatorFactory?e.generatorFactory(e.pool,e.provider,this.workerId):new vf({pool:e.pool,provider:e.provider,workerId:this.workerId})}options;kind="generation-worker-manager";started=!1;closed=!1;generator;workerId;start(){if(this.started)return;let e=async t=>{try{return await this.generator.process(t)}catch(n){throw _.warn("SYSTEM","observation generator failed",{jobId:t.id,kind:t.data.kind,error:n instanceof Error?n.message:String(n)}),n}};this.options.queueManager.start("event",e),this.options.queueManager.start("summary",e);for(let t of["event","summary"])try{this.options.queueManager.getQueue(t).observe({onStalled:i=>{this.auditStalledJob(i,t)}})}catch(n){_.warn("SYSTEM",`failed to wire stalled observer for ${t} lane`,{error:n instanceof Error?n.message:String(n)})}this.started=!0}async auditStalledJob(e,t){try{let i=(await this.options.pool.query("SELECT id, team_id, project_id FROM observation_generation_jobs WHERE bullmq_job_id = $1 LIMIT 1",[e])).rows[0];if(!i)return;await new pt(this.options.pool).createAuditLog({teamId:i.team_id,projectId:i.project_id,actorId:null,apiKeyId:null,action:"generation_job.stalled",resourceType:"observation_generation_job",resourceId:i.id,details:{lane:t,bullmqJobId:e}})}catch(n){_.warn("SYSTEM","failed to audit stalled generation_job",{bullmqJobId:e,error:n instanceof Error?n.message:String(n)})}}getHealth(){return this.closed?{status:"errored",reason:"generation-worker-manager closed"}:{status:this.started?"active":"disabled",reason:this.started?"BullMQ Worker attached to event queue with ProviderObservationGenerator":"wired but not started",details:{provider:this.options.provider.providerLabel,workerId:this.workerId}}}async close(){this.closed||(this.closed=!0)}}});function Ra(r,e={}){let t=e.mode??pae(),n=!1,i=!0,s=[];for(let d of r.events){let p=dae(d);p.hadPrivate&&(n=!0),p.body.length>0&&(i=!1,s.push(p.body))}let a=r.events.length>0&&i,o=r.project.serverSessionId?`
<server_session_id>${jn(r.project.serverSessionId)}</server_session_id>`:"",c=r.project.projectName?`
<project_name>${jn(r.project.projectName)}</project_name>`:"",l=fae(t);return{prompt:["<server_beta_observation_request>",` <project_id>${jn(r.project.projectId)}</project_id>`,` <team_id>${jn(r.project.teamId)}</team_id>`+o+c,` <generation_job_id>${jn(r.job.id)}</generation_job_id>`," <agent_events>",s.length>0?s.join(`
`):" <!-- empty after privacy stripping -->"," </agent_events>","</server_beta_observation_request>","","You are observing an agent at work. Return one or more","<observation>...</observation> XML blocks summarizing durable, useful","discoveries from the events above. If the events contain nothing worth","recording (e.g., everything was scrubbed by privacy filters or the","activity was trivial), return a single self-closing <skip_summary />","tag and nothing else. Do not include any prose outside the XML.","","Schema for each <observation> block:",l].join(`
`),hadPrivateContent:n,skippedAll:a}}function dae(r){let e=typeof r.payload=="string"?r.payload:JSON.stringify(r.payload??{},null,2),t=gc(e),n=(t.counts.private??0)>0,i=t.stripped.length>Nq?t.stripped.slice(0,Nq)+`
[...truncated]`:t.stripped;return i.trim().length===0?{body:"",hadPrivate:n}:{body:[" <agent_event>",` <id>${jn(r.id)}</id>`,` <event_type>${jn(r.eventType)}</event_type>`,` <source_adapter>${jn(r.sourceAdapter)}</source_adapter>`,` <occurred_at>${new Date(r.occurredAtEpoch).toISOString()}</occurred_at>`," <payload>",jn(i)," </payload>"," </agent_event>"].join(`
`),hadPrivate:n}}function pae(){try{return Oa.getInstance().getActiveMode()}catch{return{observation_types:uae}}}function fae(r){return["<observation>",` <type>[ ${r.observation_types.map(t=>t.id).join(" | ")} ]</type>`," <title>...</title>"," <subtitle>...</subtitle>"," <facts><fact>...</fact></facts>"," <narrative>...</narrative>"," <concepts><concept>...</concept></concepts>"," <files_read><file>...</file></files_read>"," <files_modified><file>...</file></files_modified>","</observation>"].join(`
`)}function jn(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}var uae,Nq,xf=L(()=>{"use strict";bx();vx();uae=[{id:"discovery"},{id:"progress"},{id:"blocker"},{id:"decision"}],Nq=16*1024});function xx(r){let e=r.status,t=r.bodyText??"",n=t.toLowerCase(),i=r.headers?hf(r.headers.get("retry-after")):void 0;if(n.includes("overloaded"))return new fe(`Anthropic overloaded${e!==void 0?` (status ${e})`:""}`,{kind:"transient",cause:r.cause});if(e===401||e===403||n.includes("invalid api key"))return new fe(`Anthropic auth invalid${e!==void 0?` (status ${e})`:""}`,{kind:"auth_invalid",cause:r.cause});if(e===429)return new fe("Anthropic rate limit (429)",{kind:"rate_limit",cause:r.cause,...i!==void 0?{retryAfterMs:i}:{}});if(n.includes("quota exceeded"))return new fe("Anthropic quota exhausted",{kind:"quota_exhausted",cause:r.cause});if(n.includes("prompt is too long")||n.includes("context window")||n.includes("max_tokens"))return new fe("Anthropic context overflow",{kind:"unrecoverable",cause:r.cause});if(e===529)return new fe("Anthropic overloaded (529)",{kind:"transient",cause:r.cause});if(e!==void 0&&e>=500&&e<600)return new fe(`Anthropic upstream error (status ${e})`,{kind:"transient",cause:r.cause});if(e===400)return new fe("Anthropic bad request (400)",{kind:"unrecoverable",cause:r.cause});if(e===void 0){let s=r.cause instanceof Error?r.cause.message:String(r.cause);return new fe(`Anthropic network error: ${s}`,{kind:"transient",cause:r.cause})}return new fe(`Anthropic API error: ${e}${t?` - ${t.substring(0,200)}`:""}`,{kind:"unrecoverable",cause:r.cause})}async function bae(r){try{return await r.text()}catch{return""}}var mae,hae,yae,Ef,qq=L(()=>{"use strict";ve();yc();xf();mae="https://api.anthropic.com/v1/messages",hae="2023-06-01",yae="claude-3-5-sonnet-latest",Ef=class{providerLabel="claude";apiKey;model;maxOutputTokens;fetchImpl;constructor(e){if(!e.apiKey)throw new fe("Anthropic API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??yae,this.maxOutputTokens=e.maxOutputTokens??4096,this.fetchImpl=e.fetchImpl??fetch}async generate(e,t){let{prompt:n,skippedAll:i}=Ra(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s;try{s=await this.fetchImpl(mae,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.apiKey,"anthropic-version":hae},body:JSON.stringify({model:this.model,max_tokens:this.maxOutputTokens,temperature:.3,messages:[{role:"user",content:n}]}),signal:t})}catch(d){throw xx({cause:d})}if(!s.ok){let d=await bae(s);throw xx({status:s.status,bodyText:d,headers:s.headers,cause:new Error(`Anthropic API error: ${s.status} - ${d}`)})}let a;try{a=await s.json()}catch(d){throw new fe("Anthropic returned invalid JSON",{kind:"parse_error",cause:d})}if(a.error)throw xx({status:s.status,bodyText:`${a.error.type??""} ${a.error.message??""}`,headers:s.headers,cause:new Error(`Anthropic API error: ${a.error.type} - ${a.error.message}`)});let c=(Array.isArray(a.content)?a.content:[]).filter(d=>d?.type==="text"&&typeof d.text=="string").map(d=>d.text).join(`
`).trim();c||_.warn("SDK","Anthropic returned empty content array",{provider:"claude",model:this.model});let l=a.usage??{},u=typeof l.input_tokens=="number"||typeof l.output_tokens=="number"?(l.input_tokens??0)+(l.output_tokens??0):void 0;return{rawText:c,...u!==void 0?{tokensUsed:u}:{},providerLabel:this.providerLabel,modelId:this.model}}}});async function xae(r){try{return await r.text()}catch{return""}}var gae,vae,Sf,Fq=L(()=>{"use strict";ve();yc();xf();gae="https://generativelanguage.googleapis.com/v1/models",vae="gemini-2.5-flash",Sf=class{providerLabel="gemini";apiKey;model;maxOutputTokens;fetchImpl;constructor(e){if(!e.apiKey)throw new fe("Gemini API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??vae,this.maxOutputTokens=e.maxOutputTokens??4096,this.fetchImpl=e.fetchImpl??fetch}async generate(e,t){let{prompt:n,skippedAll:i}=Ra(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s=`${gae}/${encodeURIComponent(this.model)}:generateContent?key=${encodeURIComponent(this.apiKey)}`,a;try{a=await this.fetchImpl(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{role:"user",parts:[{text:n}]}],generationConfig:{temperature:.3,maxOutputTokens:this.maxOutputTokens}}),signal:t})}catch(u){throw bi({cause:u,providerLabel:"Gemini"})}if(!a.ok){let u=await xae(a);throw bi({status:a.status,bodyText:u,headers:a.headers,cause:new Error(`Gemini API error: ${a.status} - ${u}`),providerLabel:"Gemini"})}let o;try{o=await a.json()}catch(u){throw new fe("Gemini returned invalid JSON",{kind:"parse_error",cause:u})}if(o.error)throw bi({status:a.status,bodyText:`${o.error.status??""} ${o.error.message??""}`,headers:a.headers,cause:new Error(`Gemini API error: ${o.error.status} - ${o.error.message}`),providerLabel:"Gemini"});let c=o.candidates?.[0]?.content?.parts?.[0]?.text?.trim()??"";c||_.warn("SDK","Gemini returned empty content",{provider:"gemini",model:this.model});let l=typeof o.usageMetadata?.totalTokenCount=="number"?o.usageMetadata.totalTokenCount:void 0;return{rawText:c,...l!==void 0?{tokensUsed:l}:{},providerLabel:this.providerLabel,modelId:this.model}}}});async function wae(r){try{return await r.text()}catch{return""}}var Eae,Sae,wf,Jq=L(()=>{"use strict";ve();yc();xf();Eae="https://openrouter.ai/api/v1/chat/completions",Sae="anthropic/claude-3.5-sonnet",wf=class{providerLabel="openrouter";apiKey;model;maxOutputTokens;siteUrl;appName;fetchImpl;constructor(e){if(!e.apiKey)throw new fe("OpenRouter API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??Sae,this.maxOutputTokens=e.maxOutputTokens??4096,this.siteUrl=e.siteUrl??"https://github.com/thedotmack/claude-mem",this.appName=e.appName??"claude-mem",this.fetchImpl=e.fetchImpl??fetch}async generate(e,t){let{prompt:n,skippedAll:i}=Ra(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s;try{s=await this.fetchImpl(Eae,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"HTTP-Referer":this.siteUrl,"X-Title":this.appName,"Content-Type":"application/json"},body:JSON.stringify({model:this.model,messages:[{role:"user",content:n}],temperature:.3,max_tokens:this.maxOutputTokens}),signal:t})}catch(l){throw bi({cause:l,providerLabel:"OpenRouter"})}if(!s.ok){let l=await wae(s);throw bi({status:s.status,bodyText:l,headers:s.headers,cause:new Error(`OpenRouter API error: ${s.status} - ${l}`),providerLabel:"OpenRouter"})}let a;try{a=await s.json()}catch(l){throw new fe("OpenRouter returned invalid JSON",{kind:"parse_error",cause:l})}if(a.error)throw bi({status:s.status,bodyText:`${a.error.code??""} ${a.error.message??""}`,headers:s.headers,cause:new Error(`OpenRouter API error: ${a.error.code} - ${a.error.message}`),providerLabel:"OpenRouter"});let o=a.choices?.[0]?.message?.content?.trim()??"";o||_.warn("SDK","OpenRouter returned empty content",{provider:"openrouter",model:this.model});let c=typeof a.usage?.total_tokens=="number"?a.usage.total_tokens:void 0;return{rawText:o,...c!==void 0?{tokensUsed:c}:{},providerLabel:this.providerLabel,modelId:this.model}}}});var Ca,If,Da,_f,kf,Uq=L(()=>{"use strict";Ca=class{constructor(e){this.reason=e}reason;getHealth(){return{status:"disabled",reason:this.reason}}async close(){}},If=class extends Ca{kind="queue-manager"},Da=class extends Ca{kind="generation-worker-manager"},_f=class extends Ca{kind="provider-registry"},kf=class extends Ca{kind="event-broadcaster"}});var Ex={};vi(Ex,{createServerBetaService:()=>Iae,detectDockerEnvironment:()=>Bq,validateServerBetaEnv:()=>$q});function Bq(r=process.env){if(r.CLAUDE_MEM_DOCKER==="1"||r.CLAUDE_MEM_DOCKER==="true")return!0;try{if((0,Gq.existsSync)("/.dockerenv"))return!0}catch{}return!1}function $q(r={}){let e=r.env??process.env,t=r.isDocker??Bq(e),n=[],i=(e.CLAUDE_MEM_RUNTIME??"").trim();i?i!=="server-beta"&&t&&n.push(`CLAUDE_MEM_RUNTIME=${i} is invalid in Docker; the server-beta image only runs CLAUDE_MEM_RUNTIME=server-beta.`):t&&_.warn("SYSTEM","CLAUDE_MEM_RUNTIME unset; server-beta container assumes runtime=server-beta");let s=(e.CLAUDE_MEM_AUTH_MODE??"api-key").trim();t&&(s==="local-dev"&&n.push("CLAUDE_MEM_AUTH_MODE=local-dev is not allowed in Docker. Set CLAUDE_MEM_AUTH_MODE=api-key and create a key with `claude-mem server api-key create`."),(e.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="1"||e.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="true")&&n.push("CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS is not allowed in Docker. Loopback bypass cannot be enforced inside a container; remove the variable."));let a=(e.CLAUDE_MEM_QUEUE_ENGINE??"").trim().toLowerCase();t&&(a?a!=="bullmq"&&n.push(`CLAUDE_MEM_QUEUE_ENGINE=${a} is not allowed in Docker. Only "bullmq" is supported (no in-process queues across container boundaries).`):n.push('CLAUDE_MEM_QUEUE_ENGINE is required in Docker; set it to "bullmq".'));let o=!!(e.CLAUDE_MEM_SERVER_DATABASE_URL??"").trim();o||n.push("CLAUDE_MEM_SERVER_DATABASE_URL is required to start server-beta (Postgres connection string).");let c=!!(e.CLAUDE_MEM_REDIS_URL??"").trim();if(a==="bullmq"&&!c&&n.push("CLAUDE_MEM_REDIS_URL is required when CLAUDE_MEM_QUEUE_ENGINE=bullmq."),n.length>0){let l=["server-beta startup configuration is invalid:",...n.map(u=>` - ${u}`)].join(`
`);throw new Error(l)}return{isDocker:t,runtime:i||"server-beta",authMode:s,queueEngine:a||"disabled",hasDatabaseUrl:o,hasRedisUrl:c}}async function Iae(r={}){r.skipEnvValidation||$q();let e=r.pool??xb({requireDatabaseUrl:!0}),t=await Aae(e,r.bootstrapSchema??!0),n=r.queueManager??Tae(),i=r.generationDisabled??(process.env.CLAUDE_MEM_GENERATION_DISABLED==="1"||process.env.CLAUDE_MEM_GENERATION_DISABLED==="true"),s=r.generationWorkerManager??(i?new Da("CLAUDE_MEM_GENERATION_DISABLED is set; this server runs HTTP only. A separate `claude-mem server worker start` process consumes the BullMQ queues."):_ae(e,n,r.generationProvider)),a={runtime:"server-beta",postgres:{pool:e,bootstrap:t},authMode:r.authMode??Kae(process.env.CLAUDE_MEM_AUTH_MODE),queueManager:n,generationWorkerManager:s,providerRegistry:new _f("Phase 5 keeps the provider registry boundary as inert; per-call providers are owned by the generation worker manager."),eventBroadcaster:new kf("Phase 2 boundary only; SSE/event broadcasting is not wired."),storage:mx(e)};return s instanceof xc&&s.start(),new Ec({graph:a})}function _ae(r,e,t){if(!(e instanceof os))return new Da("queue manager is disabled; set CLAUDE_MEM_QUEUE_ENGINE=bullmq to enable provider generation.");let n=t??kae();return n?new xc({pool:r,queueManager:e,provider:n}):new Da("no server generation provider configured; set CLAUDE_MEM_SERVER_PROVIDER and the matching API key to enable.")}function kae(){let r=(process.env.CLAUDE_MEM_SERVER_PROVIDER??"").trim().toLowerCase();if(!r)return null;try{if(r==="claude"||r==="anthropic"){let e=process.env.ANTHROPIC_API_KEY??process.env.CLAUDE_MEM_ANTHROPIC_API_KEY??"";if(!e)return null;let t={apiKey:e};return process.env.CLAUDE_MEM_SERVER_MODEL&&(t.model=process.env.CLAUDE_MEM_SERVER_MODEL),new Ef(t)}if(r==="gemini"){let e=process.env.GEMINI_API_KEY??process.env.CLAUDE_MEM_GEMINI_API_KEY??"";if(!e)return null;let t={apiKey:e};return process.env.CLAUDE_MEM_SERVER_MODEL&&(t.model=process.env.CLAUDE_MEM_SERVER_MODEL),new Sf(t)}if(r==="openrouter"){let e=process.env.OPENROUTER_API_KEY??process.env.CLAUDE_MEM_OPENROUTER_API_KEY??"";if(!e)return null;let t={apiKey:e};return process.env.CLAUDE_MEM_SERVER_MODEL&&(t.model=process.env.CLAUDE_MEM_SERVER_MODEL),new wf(t)}}catch{return null}return null}function Tae(){let r=Tq();return r.engine!=="bullmq"?new If(`Queue engine is "${r.engine}"; set CLAUDE_MEM_QUEUE_ENGINE=bullmq to activate the server-beta queue manager.`):new os(r)}async function Aae(r,e){if(!e)return{initialized:!1,schemaVersion:null,appliedAt:null};await mf(r);let n=(await r.query(`
SELECT version, applied_at
FROM server_beta_schema_migrations
WHERE version = $1
`,[1])).rows[0];return{initialized:n?.version===1,schemaVersion:typeof n?.version=="number"?n.version:null,appliedAt:n?.applied_at?new Date(n.applied_at).toISOString():null}}function Kae(r){return r==="local-dev"||r==="disabled"?r:"api-key"}var Gq,Sx=L(()=>{"use strict";Gq=require("fs");ve();hx();fx();Aq();dx();Lq();qq();Fq();Jq();Vq();Uq()});var r4={};vi(r4,{HOOK_API_KEY_SCOPES:()=>Qq,bootstrapServerBetaApiKey:()=>Xq,createRawApiKey:()=>Zq,hashApiKey:()=>e4,persistServerBetaSettings:()=>Oae,rotateServerBetaApiKey:()=>jae});async function Xq(r={}){let e=r.closePool??r.pool===void 0,t=r.pool??t4();try{let n=await Rae(t),i=await Cae(t,n),s=Zq(),a=e4(s),o=new pt(t),c=await o.createApiKey({keyHash:a,teamId:n,projectId:i,actorId:Yq,scopes:[...Qq]});return await o.createAuditLog({teamId:n,projectId:i,actorId:Yq,apiKeyId:c.id,action:"api_key.create",resourceType:"api_key",resourceId:c.id,details:{source:"server-beta-bootstrap"}}),{rawKey:s,apiKeyId:c.id,teamId:n,projectId:i}}finally{e&&await t.end().catch(()=>{})}}async function jae(r={}){let e=r.pool===void 0,t=r.pool??t4();try{return r.previousApiKeyId&&await t.query("UPDATE api_keys SET revoked_at = now() WHERE id = $1 AND revoked_at IS NULL",[r.previousApiKeyId]),await Xq({pool:t,closePool:!1})}finally{e&&await t.end().catch(()=>{})}}function Oae(r,e){let t=(0,Wq.dirname)(r);(0,Dr.existsSync)(t)||(0,Dr.mkdirSync)(t,{recursive:!0});let n={};if((0,Dr.existsSync)(r))try{n=JSON.parse((0,Dr.readFileSync)(r,"utf-8"))}catch{n={}}let i=n.env&&typeof n.env=="object"?n.env:n;i.CLAUDE_MEM_SERVER_BETA_API_KEY=e.apiKey,i.CLAUDE_MEM_SERVER_BETA_PROJECT_ID=e.projectId,e.serverBaseUrl&&(i.CLAUDE_MEM_SERVER_BETA_URL=e.serverBaseUrl),(0,Dr.writeFileSync)(r,JSON.stringify(i,null,2),"utf-8");try{(0,Dr.chmodSync)(r,384)}catch{}}function Zq(){return`cmem_${(0,Tf.randomBytes)(32).toString("base64url")}`}function e4(r){return(0,Tf.createHash)("sha256").update(r).digest("hex")}async function Rae(r){let e=await r.query("SELECT id FROM teams WHERE name = $1 LIMIT 1",[Hq]);return e.rows[0]?e.rows[0].id:(await new cs(r).create({name:Hq,metadata:{source:"local-hook-bootstrap"}})).id}async function Cae(r,e){let t=await r.query("SELECT id FROM projects WHERE team_id = $1 AND name = $2 LIMIT 1",[e,zq]);return t.rows[0]?t.rows[0].id:(await new Kn(r).create({teamId:e,name:zq,metadata:{source:"local-hook-bootstrap"}})).id}function t4(){let r=Io({requireDatabaseUrl:!0});if(!r)throw new Error("Cannot bootstrap server-beta API key: CLAUDE_MEM_SERVER_DATABASE_URL is not set.");return ru(r)}var Tf,Dr,Wq,Hq,zq,Yq,Qq,n4=L(()=>{"use strict";Tf=require("crypto"),Dr=require("fs"),Wq=require("path");Vs();tu();mn();fc();ff();Hq="local-hook-team",zq="local-hook-project",Yq="system:local-hook-bootstrap",Qq=Object.freeze(["events:write","sessions:write","observations:read","jobs:read"])});var Uae={};vi(Uae,{ServerBetaService:()=>Ec,runServerBetaApiKeyCli:()=>u4,runServerBetaCli:()=>Kf,runServerBetaGenerationWorker:()=>d4});module.exports=ht(Uae);async function l4(r){let e=r.queueManager;if(!(e instanceof os))return[];try{return await e.getLaneMetrics()}catch{return[]}}function Pae(r){let e=r.getHttpServer()?.address();return e&&typeof e!="string"?e.port:null}async function Kf(r=process.argv.slice(2)){let e=r[0]??"--daemon",t=p4(),n=process.env.CLAUDE_MEM_SERVER_HOST??c4;if(e==="worker"){let i=(r[1]??"--daemon").toLowerCase();if(i==="start"||i==="--daemon"||i==="run"){await d4();return}console.error("Usage: server-beta-service worker start"),process.exit(1)}if(e==="server"&&r[1]?.toLowerCase()==="api-key"){await u4(r.slice(2));return}switch(e){case"start":{let i=Af();if(Nn(i)){console.log(JSON.stringify({status:"ready",runtime:gi,pid:i.pid,port:i.port}));return}let s=Lae(t);s===void 0&&(console.error("Failed to spawn server beta daemon."),process.exit(1)),console.log(JSON.stringify({status:"starting",runtime:gi,pid:s,port:t}));return}case"stop":{let i=Af();if(!Nn(i)){Ix(),console.log("Server beta is not running");return}process.kill(i.pid,"SIGTERM"),await Jae(i.pid,5e3),Ix(),console.log("Server beta stopped");return}case"restart":{await Kf(["stop"]),await Kf(["start"]);return}case"status":{let i=qae(),s=Af();i&&Nn(s)?(console.log("Server beta is running"),console.log(` PID: ${i.pid}`),console.log(` Port: ${i.port}`),console.log(` Runtime: ${i.runtime}`),console.log(` Started: ${i.startedAt}`)):console.log("Server beta is not running");return}case"--daemon":{let i=Af();(Nn(i)||await Fae(t,n))&&process.exit(0);let{createServerBetaService:s}=await Promise.resolve().then(()=>(Sx(),Ex)),a=await s(),o=async()=>{await a.stop(),process.exit(0)};process.once("SIGTERM",o),process.once("SIGINT",o),await a.start();return}default:console.error("Usage: server-beta-service start|stop|restart|status"),process.exit(1)}}async function u4(r){let e=r[0]?.toLowerCase(),t=Mae(r.slice(1));process.env.CLAUDE_MEM_SERVER_DATABASE_URL||(console.error("CLAUDE_MEM_SERVER_DATABASE_URL is required for `server api-key` commands."),process.exit(1));let{getSharedPostgresPool:n}=await Promise.resolve().then(()=>(hx(),wq)),{PostgresAuthRepository:i}=await Promise.resolve().then(()=>(mn(),oT)),{createHash:s,randomBytes:a}=await import("crypto"),o=n({requireDatabaseUrl:!0}),c=new i(o);if(e==="create"){let l=(t.scope??t.scopes??"memories:read").split(",").map(y=>y.trim()).filter(Boolean),u=t.team??null,d=t.project??null;if(!u||!d){let{bootstrapServerBetaApiKey:y}=await Promise.resolve().then(()=>(n4(),r4)),b=await y({pool:o,closePool:!1});u=b.teamId,d=b.projectId}let p=`cmem_${a(24).toString("hex")}`,f=s("sha256").update(p).digest("hex"),m=await c.createApiKey({keyHash:f,teamId:u,projectId:d,scopes:l,actorId:"system:server-beta-cli"});console.log(JSON.stringify({id:m.id,key:p,name:t.name??"server-api-key",teamId:u,projectId:d,scopes:l},null,2));return}if(e==="list"){let l=t.team??null,u=Number.parseInt(t.limit??"100",10),d=Number.parseInt(t.offset??"0",10),p=Number.isFinite(u)&&u>0&&u<=500?u:100,f=Number.isFinite(d)&&d>=0?d:0,m=l?"WHERE team_id = $1":"",y=l?[l,p,f]:[p,f],b=l?2:1,g=l?3:2,x=await o.query(`SELECT id, team_id, project_id, scopes, revoked_at, expires_at, last_used_at, created_at
FROM api_keys
${m}
ORDER BY created_at DESC
LIMIT $${b} OFFSET $${g}`,y);console.log(JSON.stringify({teamId:l,limit:p,offset:f,count:x.rows.length,keys:x.rows.map(I=>({id:I.id,teamId:I.team_id,projectId:I.project_id,scopes:I.scopes,status:I.revoked_at?"revoked":"active",lastUsedAt:I.last_used_at?.toISOString()??null,expiresAt:I.expires_at?.toISOString()??null,createdAt:I.created_at.toISOString()}))},null,2));return}if(e==="revoke"){let l=r[1];l||(console.error("Usage: server-beta-service server api-key revoke <id>"),process.exit(1)),(await o.query(`UPDATE api_keys SET revoked_at = now()
WHERE id = $1 AND revoked_at IS NULL
RETURNING id`,[l])).rowCount===0&&(console.error(`API key not found or already revoked: ${l}`),process.exit(1)),console.log(JSON.stringify({id:l,status:"revoked"},null,2));return}console.error(`Unknown server api-key subcommand: ${e??"(none)"}`),console.error("Usage: server-beta-service server api-key create|list|revoke"),process.exit(1)}function Mae(r){let e={};for(let t=0;t<r.length;t++){let n=r[t];if(n&&n.startsWith("--")){let i=n.indexOf("=");i>-1?e[n.slice(2,i)]=n.slice(i+1):(e[n.slice(2)]=r[t+1]??"",t+=1)}}return e}async function d4(){let{validateServerBetaEnv:r,createServerBetaService:e}=await Promise.resolve().then(()=>(Sx(),Ex));r(),delete process.env.CLAUDE_MEM_GENERATION_DISABLED;let t=await e(),n=t.getRuntimeState();_.info("SYSTEM","Server beta generation worker started (no HTTP)",{pid:process.pid,queue:n.boundaries.queueManager,generation:n.boundaries.generationWorkerManager}),console.log(JSON.stringify({status:"worker-running",runtime:gi,pid:process.pid}));let i=!1,s=async()=>{if(!i){i=!0;try{await t.stop()}finally{process.exit(0)}}};process.once("SIGTERM",s),process.once("SIGINT",s),await new Promise(()=>{})}function p4(){let r=Number.parseInt(process.env.CLAUDE_MEM_SERVER_PORT??"",10);return Number.isInteger(r)&&r>0?r:Dae+(process.getuid?.()??77)%100}function Lae(r){let e=typeof __filename<"u"?__filename:(0,o4.fileURLToPath)(Gae.url),t=(0,i4.spawn)(process.execPath,[e,"--daemon"],{detached:!0,stdio:"ignore",env:{...process.env,CLAUDE_MEM_SERVER_PORT:String(r)}});return t.unref(),t.pid}function Nae(r){(0,xt.mkdirSync)((0,a4.dirname)(Be.serverBetaRuntime()),{recursive:!0});let e={pid:r.pid,port:r.port,startedAt:r.startedAt,startToken:sy(r.pid)??void 0};(0,xt.writeFileSync)(Be.serverBetaPid(),JSON.stringify(e,null,2)),(0,xt.writeFileSync)(Be.serverBetaPort(),`${r.port}
`),(0,xt.writeFileSync)(Be.serverBetaRuntime(),JSON.stringify(r,null,2))}function Af(){if(!(0,xt.existsSync)(Be.serverBetaPid()))return null;try{return JSON.parse((0,xt.readFileSync)(Be.serverBetaPid(),"utf-8"))}catch{return null}}function qae(){if(!(0,xt.existsSync)(Be.serverBetaRuntime()))return null;try{return JSON.parse((0,xt.readFileSync)(Be.serverBetaRuntime(),"utf-8"))}catch{return null}}function Ix(){(0,xt.rmSync)(Be.serverBetaPid(),{force:!0}),(0,xt.rmSync)(Be.serverBetaPort(),{force:!0}),(0,xt.rmSync)(Be.serverBetaRuntime(),{force:!0})}async function Fae(r,e){return new Promise(t=>{let n=s4.default.connect({port:r,host:e});n.once("connect",()=>{n.destroy(),t(!0)}),n.once("error",()=>t(!1))})}async function Jae(r,e){let t=Date.now()+e;for(;Date.now()<t;){if(!Nn({pid:r,port:0,startedAt:""}))return;await new Promise(n=>setTimeout(n,100))}}var i4,xt,s4,a4,o4,Gae,gi,c4,Dae,wx,Ec,Vq=L(()=>{i4=require("child_process"),xt=require("fs"),s4=Et(require("net"),1),a4=require("path"),o4=require("url");eT();dn();ve();Rs();jK();jb();RK();dx();Gae={},gi="server-beta",c4="127.0.0.1",Dae=37877,wx=class{constructor(e){this.graph=e}graph;setupRoutes(e){e.get("/healthz",(t,n)=>{n.json({status:"ok",runtime:gi})}),e.get("/v1/info",async(t,n)=>{let i=await l4(this.graph);n.json({name:"claude-mem-server",runtime:gi,authMode:this.graph.authMode,postgres:{initialized:this.graph.postgres.bootstrap.initialized,schemaVersion:this.graph.postgres.bootstrap.schemaVersion},boundaries:{queueManager:this.graph.queueManager.getHealth(),generationWorkerManager:this.graph.generationWorkerManager.getHealth(),providerRegistry:this.graph.providerRegistry.getHealth(),eventBroadcaster:this.graph.eventBroadcaster.getHealth()},queueLanes:i})})}};Ec=class{graph;host;requestedPort;boundPort=null;persistRuntimeState;server=null;stopping=!1;constructor(e){this.graph=e.graph,this.host=e.host??process.env.CLAUDE_MEM_SERVER_HOST??c4,this.requestedPort=e.port??p4(),this.persistRuntimeState=e.persistRuntimeState??!0}async start(){if(this.server)return;let e=new Cl({getInitializationComplete:()=>this.graph.postgres.bootstrap.initialized,getMcpReady:()=>!0,onShutdown:()=>this.stop(),onRestart:async()=>{await this.stop(),await this.start()},workerPath:"",runtime:gi,getAiStatus:()=>({provider:"disabled",authMethod:this.graph.authMode,lastInteraction:null}),getQueueHealth:async()=>{let i=this.graph.queueManager.getHealth(),s=i.details??{};if(i.status!=="active"||s.engine!=="bullmq")return null;let a=await l4(this.graph);return{engine:"bullmq",redis:{status:"ok",mode:String(s.mode??"unknown"),host:String(s.host??"127.0.0.1"),port:typeof s.port=="number"?s.port:6379,prefix:String(s.prefix??"claude_mem")},lanes:a.map(o=>({kind:o.kind,name:o.name,waiting:o.waiting,active:o.active,completed:o.completed,failed:o.failed,delayed:o.delayed,stalled:o.stalled,unavailable:o.unavailable,...o.unavailableReason?{unavailableReason:o.unavailableReason}:{}}))}}});e.registerRoutes(new wx(this.graph));let t=new ou({pool:this.graph.postgres.pool,queueManager:this.graph.queueManager,authMode:this.graph.authMode==="disabled"?"api-key":this.graph.authMode,runtime:gi});e.registerRoutes(t);let n=this.graph.authMode==="disabled"?"api-key":this.graph.authMode;e.registerRoutes(new lu({pool:this.graph.postgres.pool,ingestEvents:t.getIngestEventsService(),authMode:n})),e.registerRoutes(new uu({pool:this.graph.postgres.pool,endSession:t.getEndSessionService(),authMode:n})),e.finalizeRoutes(),await e.listen(this.requestedPort,this.host),this.server=e,this.boundPort=Pae(e)??this.requestedPort,this.persistRuntimeState&&Nae(this.runtimeState()),_.info("SYSTEM","Server beta started",{host:this.host,port:this.boundPort,pid:process.pid})}async stop(){if(!this.stopping){this.stopping=!0;try{if(this.server){try{await this.server.close()}catch(e){if(e?.code!=="ERR_SERVER_NOT_RUNNING")throw e}this.server=null}await Promise.all([this.graph.queueManager.close(),this.graph.generationWorkerManager.close(),this.graph.providerRegistry.close(),this.graph.eventBroadcaster.close()]),await this.graph.postgres.pool.end()}finally{this.persistRuntimeState&&Ix(),this.boundPort=null,this.stopping=!1,_.info("SYSTEM","Server beta stopped")}}}getRuntimeState(){return this.runtimeState()}runtimeState(){return{runtime:gi,pid:process.pid,port:this.boundPort??this.requestedPort,host:this.host,startedAt:new Date().toISOString(),bootstrap:this.graph.postgres.bootstrap,boundaries:{queueManager:this.graph.queueManager.getHealth(),generationWorkerManager:this.graph.generationWorkerManager.getHealth(),providerRegistry:this.graph.providerRegistry.getHealth(),eventBroadcaster:this.graph.eventBroadcaster.getHealth()}}}};(process.argv[1]?.endsWith("ServerBetaService.ts")||process.argv[1]?.endsWith("server-beta-service.cjs"))&&Kf().catch(r=>{console.error(r instanceof Error?r.message:String(r)),process.exit(1)})});Vq();0&&(module.exports={ServerBetaService,runServerBetaApiKeyCli,runServerBetaCli,runServerBetaGenerationWorker});
/*! Bundled license information:
depd/index.js:
(*!
* depd
* Copyright(c) 2014-2018 Douglas Christopher Wilson
* MIT Licensed
*)
statuses/index.js:
(*!
* statuses
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
toidentifier/index.js:
(*!
* toidentifier
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
http-errors/index.js:
(*!
* http-errors
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
bytes/index.js:
(*!
* bytes
* Copyright(c) 2012-2014 TJ Holowaychuk
* Copyright(c) 2015 Jed Watson
* MIT Licensed
*)
unpipe/index.js:
(*!
* unpipe
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
raw-body/index.js:
(*!
* raw-body
* Copyright(c) 2013-2014 Jonathan Ong
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
ee-first/index.js:
(*!
* ee-first
* Copyright(c) 2014 Jonathan Ong
* MIT Licensed
*)
on-finished/index.js:
(*!
* on-finished
* Copyright(c) 2013 Jonathan Ong
* Copyright(c) 2014 Douglas Christopher Wilson
* MIT Licensed
*)
content-type/index.js:
(*!
* content-type
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
mime-db/index.js:
(*!
* mime-db
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015-2022 Douglas Christopher Wilson
* MIT Licensed
*)
mime-types/index.js:
(*!
* mime-types
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
media-typer/index.js:
(*!
* media-typer
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
type-is/index.js:
(*!
* type-is
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
body-parser/lib/read.js:
body-parser/lib/types/raw.js:
body-parser/lib/types/text.js:
body-parser/index.js:
(*!
* body-parser
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
body-parser/lib/types/json.js:
body-parser/lib/types/urlencoded.js:
(*!
* body-parser
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
encodeurl/index.js:
(*!
* encodeurl
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
escape-html/index.js:
(*!
* escape-html
* Copyright(c) 2012-2013 TJ Holowaychuk
* Copyright(c) 2015 Andreas Lubbe
* Copyright(c) 2015 Tiancheng "Timothy" Gu
* MIT Licensed
*)
parseurl/index.js:
(*!
* parseurl
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
finalhandler/index.js:
(*!
* finalhandler
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
express/lib/view.js:
express/lib/application.js:
express/lib/request.js:
express/lib/express.js:
express/index.js:
(*!
* express
* Copyright(c) 2009-2013 TJ Holowaychuk
* Copyright(c) 2013 Roman Shtylman
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
etag/index.js:
(*!
* etag
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
forwarded/index.js:
(*!
* forwarded
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
proxy-addr/index.js:
(*!
* proxy-addr
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
express/lib/utils.js:
express/lib/response.js:
(*!
* express
* Copyright(c) 2009-2013 TJ Holowaychuk
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
router/lib/layer.js:
router/lib/route.js:
router/index.js:
(*!
* router
* Copyright(c) 2013 Roman Shtylman
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
negotiator/index.js:
(*!
* negotiator
* Copyright(c) 2012 Federico Romero
* Copyright(c) 2012-2014 Isaac Z. Schlueter
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
accepts/index.js:
(*!
* accepts
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
fresh/index.js:
(*!
* fresh
* Copyright(c) 2012 TJ Holowaychuk
* Copyright(c) 2016-2017 Douglas Christopher Wilson
* MIT Licensed
*)
range-parser/index.js:
(*!
* range-parser
* Copyright(c) 2012-2014 TJ Holowaychuk
* Copyright(c) 2015-2016 Douglas Christopher Wilson
* MIT Licensed
*)
content-disposition/index.js:
(*!
* content-disposition
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
cookie/index.js:
(*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
send/index.js:
(*!
* send
* Copyright(c) 2012 TJ Holowaychuk
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
vary/index.js:
(*!
* vary
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
serve-static/index.js:
(*!
* serve-static
* Copyright(c) 2010 Sencha Inc.
* Copyright(c) 2011 TJ Holowaychuk
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
object-assign/index.js:
(*
object-assign
(c) Sindre Sorhus
@license MIT
*)
*/