jsdk-offical
Version:
JSDK is the most comprehensive TypeScript framework, like JDK.
2 lines • 338 kB
JavaScript
//JSDK 2.7.0 MIT
var JS;(function(JS){let an;(function(an){let AnimState;(function(AnimState){AnimState[AnimState["STOPPED"]=0]="STOPPED";AnimState[AnimState["RUNNING"]=1]="RUNNING";AnimState[AnimState["PAUSED"]=2]="PAUSED"})(AnimState=an.AnimState||(an.AnimState={}));class AnimInit{constructor(){this.duration=1e3;this.delay=0;this.endDelay=0;this.autoreset=false;this.direction="forward";this.loop=1}}an.AnimInit=AnimInit;class Anim{constructor(cfg){this._timer=null;this._loop=0;this._targets=[];this._bus=new EventBus(this);this._cfg=Jsons.union(this._cfg,cfg);this.targets(this._cfg.targets);this.direction(this._cfg.direction=="backward"?"backward":"forward");if(this._cfg.on)Jsons.forEach(this._cfg.on,(v,k)=>{this.on(k,v)})}config(){return Jsons.clone(this._cfg)}on(ev,fn){this._bus.on(ev,fn);return this}off(ev){this._bus.off(ev);return this}_tars(t){if(Types.isArrayLike(t)){if(t instanceof NodeList)return Arrays.newArray(t);let as=[];t.forEach(a=>{typeof a=="string"?as.add(Arrays.newArray($L(a))):as.add(a)});return as}else if(typeof t=="string"){return Arrays.newArray($L(t))}else if(t instanceof HTMLElement){return[t]}return t instanceof Object?[t]:[]}targets(t){let els=this._tars(t);els.forEach(el=>{this._targets.add(el)});return this}direction(d){if(!d)return this._dir;this._dir=d;return this}getState(){return this._timer?this._timer.getState():AnimState.STOPPED}isRunning(){return this.getState()==AnimState.RUNNING}getLooped(){return this._loop}_reset(){let T=this;T._loop=0;T._dir=T._cfg.direction=="backward"?"backward":"forward"}_resetTargets(){}_setupTimer(){let T=this,r=T._timer,c=T._cfg;r.on("starting",()=>{T._reset();T._bus.fire("starting")});r.on("pausing",()=>{T._bus.fire("pausing")});r.on("paused",()=>{T._bus.fire("paused")});r.on("updating",(e,t,d,l)=>{T._bus.fire("updating",[t,d,l])});r.on("updated",(e,t,d,l)=>{T._bus.fire("updated",[t,d,l])});r.on("finished",()=>{T._bus.fire("finished");if(c.autoreset)T._resetTargets()})}pause(){if(this._timer)this._timer.pause();return this}stop(){let T=this;if(T._timer)T._timer.stop();T._reset();return T}replay(){this.stop();this.play()}}an.Anim=Anim})(an=JS.an||(JS.an={}))})(JS||(JS={}));var AnimState=JS.an.AnimState;var AnimInit=JS.an.AnimInit;var Anim=JS.an.Anim;var JS;(function(JS){let an;(function(an){class AnimTimer extends Timer{constructor(tick,cfg){super(tick,cfg);this._loopEnd=false}_runTask(t){let T=this,d=T._cfg.duration;T._bus.fire("updating",[t,d,T._count+1]);T._task(t);T._bus.fire("updated",[t,d,T._count+1])}_loopTick(t){if(!this.isRunning())return;var T=this,c=T._cfg,p=c.loop;if(T._count<p){var d=c.duration,delay=T._count==0?0:c.delay||0,endDelay=c.endDelay||0,et=t-T._ts;T._et=et;if(et>=delay&&et<d+delay){if(T._loopEnd){T._loopEnd=false;T._bus.fire("looping",[T._count+1])}T._runTask(et-delay)}else if(et>=d+delay){if(!T._loopEnd){T._runTask(d);T._loopEnd=true}if(et>=d+delay+endDelay){++T._count;T._ts=t;T._bus.fire("looped",[T._count])}}}else{T._finish()}}_cancelTimer(){if(this._timer)cancelAnimationFrame(this._timer);this._timer=null}pause(){this._cancelTimer();super.pause();return this}tick(ts){let T=this;if(this._et==0){this._ts0=ts;this._ts=ts;this._count=0;this._pt=0;T._bus.fire("starting");this._loopEnd=true;T._state(TimerState.RUNNING)}if(T.getState()==TimerState.PAUSED){let dt=ts-T._pt;T._ts0+=dt;T._ts+=dt;T._pt=0;T._state(TimerState.RUNNING)}if(this.isRunning())this._loopTick(System.highResTime())}_loop(t){this.tick(t);if(this.isRunning())this._timer=requestAnimationFrame(function(ts){this._loop(ts)}.bind(this))}start(){if(this.isRunning())return;this._timer=requestAnimationFrame(t=>{this._loop(t)})}}an.AnimTimer=AnimTimer})(an=JS.an||(JS.an={}))})(JS||(JS={}));var AnimTimer=JS.an.AnimTimer;var JS;(function(JS){let an;(function(an){const PI=Math.PI,pow=Math.pow,sqrt=Math.sqrt,abs=Math.abs,sin=Math.sin,cos=Math.cos,asin=Math.asin;let minMax=(n,min,max)=>{return Math.min(Math.max(n,min),max)};class Easings{}Easings.LINEAR=function(t,b,c,d){return c*t/d+b};Easings.QUAD_IN=function(t,b,c,d){return c*(t/=d)*t+b};Easings.QUAD_OUT=function(t,b,c,d){return-c*(t/=d)*(t-2)+b};Easings.QUAD_IN_OUT=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*(--t*(t-2)-1)+b};Easings.CUBIC_IN=function(t,b,c,d){return c*(t/=d)*t*t+b};Easings.CUBIC_OUT=function(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b};Easings.CUBIC_IN_OUT=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b};Easings.QUART_IN=function(t,b,c,d){return c*(t/=d)*t*t*t+b};Easings.QUART_OUT=function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b};Easings.QUART_IN_OUT=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b};Easings.QUINT_IN=function(t,b,c,d){return c*(t/=d)*t*t*t*t+b};Easings.QUINT_OUT=function(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b};Easings.QUINT_IN_OUT=function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b};Easings.SINE_IN=function(t,b,c,d){return-c*cos(t/d*(PI/2))+c+b};Easings.SINE_OUT=function(t,b,c,d){return c*sin(t/d*(PI/2))+b};Easings.SINE_IN_OUT=function(t,b,c,d){return-c/2*(cos(PI*t/d)-1)+b};Easings.EXPO_IN=function(t,b,c,d){return t==0?b:c*pow(2,10*(t/d-1))+b};Easings.EXPO_OUT=function(t,b,c,d){return t==d?b+c:c*(-pow(2,-10*t/d)+1)+b};Easings.EXPO_IN_OUT=function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*pow(2,10*(t-1))+b;return c/2*(-pow(2,-10*--t)+2)+b};Easings.CIRC_IN=function(t,b,c,d){return-c*(sqrt(1-(t/=d)*t)-1)+b};Easings.CIRC_OUT=function(t,b,c,d){return c*sqrt(1-(t=t/d-1)*t)+b};Easings.CIRC_IN_OUT=function(t,b,c,d){if((t/=d/2)<1)return-c/2*(sqrt(1-t*t)-1)+b;return c/2*(sqrt(1-(t-=2)*t)+1)+b};Easings.ELASTIC_IN=function(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<abs(c)){a=c;var s=p/4}else var s=p/(2*PI)*asin(c/a);return-(a*pow(2,10*(t-=1))*sin((t*d-s)*(2*PI)/p))+b};Easings.ELASTIC_OUT=function(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<abs(c)){a=c;var s=p/4}else var s=p/(2*PI)*asin(c/a);return a*pow(2,-10*t)*sin((t*d-s)*(2*PI)/p)+c+b};Easings.ELASTIC_IN_OUT=function(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<abs(c)){a=c;var s=p/4}else var s=p/(2*PI)*asin(c/a);if(t<1)return-.5*(a*pow(2,10*(t-=1))*sin((t*d-s)*(2*PI)/p))+b;return a*pow(2,-10*(t-=1))*sin((t*d-s)*(2*PI)/p)*.5+c+b};Easings.BACK_IN=function(t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b};Easings.BACK_OUT=function(t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b};Easings.BACK_IN_OUT=function(t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=1.525)+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=1.525)+1)*t+s)+2)+b};Easings.BOUNCE_IN=function(t,b,c,d){return c-Easings.BOUNCE_OUT(d-t,0,c,d)+b};Easings.BOUNCE_OUT=function(t,b,c,d){const n1=2.75,n2=7.5625;if((t/=d)<1/n1){return c*(n2*t*t)+b}else if(t<2/n1){return c*(n2*(t-=1.5/n1)*t+.75)+b}else if(t<2.5/2.75){return c*(n2*(t-=2.25/n1)*t+.9375)+b}else{return c*(n2*(t-=2.625/n1)*t+.984375)+b}};Easings.BOUNCE_IN_OUT=function(t,b,c,d){if(t<d/2)return Easings.BOUNCE_IN(t*2,0,c,d)*.5+b;return Easings.BOUNCE_OUT(t*2-d,0,c,d)*.5+c*.5+b};Easings.STEPS=function(t,b,c,d,steps){steps=steps==void 0?10:steps<1?1:steps;let m=Math.ceil(minMax(t/d,1e-6,1)*steps)*(1/steps);return b+c*m};an.Easings=Easings})(an=JS.an||(JS.an={}))})(JS||(JS={}));var Easings=JS.an.Easings;var JS;(function(JS){let util;(function(util){class Images{static parseFrames(frames){let frs=[],items=frames.items,isA=util.Types.isArray(items),len=isA?items.length:items.total;for(let i=0;i<len;i++){let x,y;if(isA){x=items[0];y=items[1]}else{let offs=items,axis=offs.axis,sign=axis.startsWith("-")?-1:1;x=axis.endsWith("x")?offs.ox+sign*i*(frames.w+(offs.split||0)):offs.ox;y=axis.endsWith("y")?offs.oy+sign*i*(frames.h+(offs.split||0)):offs.oy}frs.push({src:frames.src,w:frames.w,h:frames.h,x,y})}return frs}}util.Images=Images})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Images=JS.util.Images;var JS;(function(JS){let an;(function(an){class FrameAnimInit extends an.AnimInit{}an.FrameAnimInit=FrameAnimInit;class FrameAnim extends an.Anim{constructor(cfg){super(Jsons.union(new FrameAnimInit,cfg));this._frames=[];this._fi=-1;this._lt=0;this._frames=Images.parseFrames(this._cfg.frames)}_updateImage(el,fr){let json={backgroundImage:`url("${fr.src}")`,backgroundPosition:`-${fr.x}px -${fr.y}px`,width:fr.w!=void 0?fr.w+"px":null,height:fr.h!=void 0?fr.h+"px":null};el.css(json)}_reset(){super._reset();this._fi=-1}_resetTargets(){let fn=this._cfg.onUpdateImage||this._updateImage,i=this._cfg.direction=="backward"?this._frames.length-1:0;this._targets.forEach(ta=>{fn(ta,this._frames[i])})}_updateFrame(dt){let m=this,c=m._cfg,size=m._frames.length,fn=c.onUpdateImage||m._updateImage;this._targets.forEach(ta=>{fn(ta,m._frames[m._fi]);m._dir=="forward"?m._fi++:m._fi--})}_setupTimer(){super._setupTimer();let m=this,c=m._cfg,r=m._timer,size=m._frames.length;r.on("looping",(e,loop)=>{if((loop-1)%size==0){if(loop>1&&c.direction=="alternate")m._dir=m._dir=="backward"?"forward":"backward";m._fi=m._dir=="backward"?size-1:0;m._lt=e.timeStamp;m._bus.fire("looping",[(loop-1)/size+1])}m._bus.fire("updating",[e.timeStamp-m._lt,c.duration])});r.on("looped",(e,loop)=>{m._bus.fire("updated",[e.timeStamp-m._lt,c.duration]);if(loop%size==0){m._loop=loop/size;m._bus.fire("looped",[m._loop])}})}play(){let m=this,c=m._cfg,l=c.loop,maxLoop=l==false||l<0?0:l===true?Infinity:l,framesSize=m._frames.length;return Promises.create(function(){if(m.isRunning()||m._frames.length==0)this.resolve(false);m._loop=0;if(!m._timer){m._timer=new Timer(t=>{m._updateFrame(t)},{intervalMode:"BF",delay:c.delay||0,loop:maxLoop*framesSize,interval:(c.duration+c.endDelay)/framesSize});m._setupTimer()}m._timer.on("finished",()=>{this.resolve(true)});m._timer.start()})}}an.FrameAnim=FrameAnim})(an=JS.an||(JS.an={}))})(JS||(JS={}));var FrameAnimInit=JS.an.FrameAnimInit;var FrameAnim=JS.an.FrameAnim;var JS;(function(JS){let an;(function(an_1){let J=Jsons,first=a=>{return a.length==0?null:a[0]},last=a=>{return a.length==0?null:a[a.length-1]};class TimelineInit{constructor(){this.duration=1e3;this.delay=0;this.endDelay=0;this.autoreset=false}}an_1.TimelineInit=TimelineInit;class Timeline{constructor(cfg){this._seqAnims=[];this._synAnims=[];this._bus=new EventBus(this);this._isRunning=false;this._seqFinished=false;this._synFinished=false;this._cfg=J.union(new TimelineInit,cfg);this._targets=[];let els=this._tars(this._cfg.targets);els.forEach(el=>{this._targets.add(el)})}on(ev,fn){this._bus.on(ev,fn);return this}off(ev){this._bus.off(ev);return this}_tars(t){if(Types.isArrayLike(t)){if(t instanceof NodeList)return Arrays.newArray(t);let as=[];t.forEach(a=>{typeof a=="string"?as.add(Arrays.newArray($L(a))):as.add(a)});return as}else if(typeof t=="string"){return Arrays.newArray($L(t))}else if(t instanceof HTMLElement){return[t]}return t instanceof Object?[t]:[]}add(a,start){let c=this._cfg;a=J.union({targets:this._targets,duration:c.duration,endDelay:c.endDelay,autoreset:c.autoreset},a,{delay:(start||0)+(a.delay||c.delay||0)});let anim=a.type=="tween"?new an_1.TweenAnim(a):new an_1.FrameAnim(a);if(this._synAnims.length==0||start!=void 0){this._synAnims.add(anim)}else{let anims=this._seqAnims,lastAnim;if(anims.length<1){lastAnim=first(this._synAnims)}else{lastAnim=anims[anims.length-1]}lastAnim.on("finished",()=>{anim.play()});this._seqAnims.add(anim)}return this}_resolve(ctx,f){if(f)this._isRunning=false;ctx.resolve(f)}play(){let m=this;return Promises.create(function(){if(m._isRunning)m._resolve(this,false);m._isRunning=true;m._seqFinished=false;m._synFinished=false;m._bus.fire("starting");if(m._synAnims.length==0){m._bus.fire("finished");m._resolve(this,false)}let lastAnim=last(m._seqAnims);if(lastAnim)lastAnim.on("finished",()=>{m._seqFinished=true;if(m._synFinished){m._bus.fire("finished");m._resolve(this,true)}});let plans=[];m._synAnims.forEach(an=>{plans.push(Promises.createPlan(function(){an.play().then(()=>{this.resolve()})}))});Promises.all(plans).then(()=>{m._synFinished=true;if(m._seqFinished){m._bus.fire("finished");m._resolve(this,true)}})})}}an_1.Timeline=Timeline})(an=JS.an||(JS.an={}))})(JS||(JS={}));var TimelineInit=JS.an.TimelineInit;var Timeline=JS.an.Timeline;var JS;(function(JS){let an;(function(an){let J=Jsons;class TweenAnimInit extends an.AnimInit{constructor(){super(...arguments);this.easing="LINEAR";this.round=3}}an.TweenAnimInit=TweenAnimInit;let ValidTransforms=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],has=(s,w)=>{return s.indexOf(w)>-1},isDom=a=>{return a.nodeType||a instanceof SVGElement},parseEasingParameters=string=>{var match=/\(([^)]+)\)/.exec(string);return match?match[1].split(",").map(function(p){return parseFloat(p)}):[]},getAnimationType=(el,key)=>{if(isDom(el)&&el.hasAttribute(key))return"attribute";if(isDom(el)&&ValidTransforms.indexOf(key)>-1)return"transform";if(isDom(el)&&key!=="transform"&&key in el.style)return"css";return"property"},getTargetVal=(key,el)=>{let type=getAnimationType(el,key),n;if(type=="property"){n=el[key]}else if(type=="attribute"){n=el.attr(key)}else if(type=="css"){n=el.css(key)}else if(type=="transform"&&ValidTransforms.indexOf(key)>-1){n=getTransformValue(el,key)}return{key,type,val:n||"0"}},parseTransform=el=>{if(!isDom(el)){return}let str=el.style.transform||"",reg=/(\w+)\(([^)]*)\)/g,transforms=new Map,m;while(m=reg.exec(str)){transforms.set(m[1],m[2])}return transforms},getTransformUnit=key=>{if(has(key,"translate")||key==="perspective")return"px";if(has(key,"rotate")||has(key,"skew"))return"deg";return null},getTransformValue=(el,key)=>{return parseTransform(el).get(key)||defaultTransformValue(key)},defaultTransformValue=key=>{return has(key,"scale")?"1":0+getTransformUnit(key)},setTargetVals=(kvs,el)=>{let trans=[];kvs.forEach((kv,i)=>{let type=kv.type,v=`${kv.val}`;if(type=="property"){el[kv.key]=kv.val}else if(type=="attribute"){el.attr(kv.key,v)}else if(type=="css"){el.css(kv.key,v)}else if(type=="transform"){trans.add(i)}});let s="";trans.forEach(j=>{let kv=kvs[j];s+=`${kv.key}(${kv.val})`});if(s)el.style.transform=s},degUnit=(key,v)=>{if(typeof v!=="string")return v+"";if(key.startsWith("rotate")||key.startsWith("skew")){if(v.endsWith("rad"))return parseFloat(v)*180/Math.PI+"deg";if(v.endsWith("turn"))return parseFloat(v)*360+"deg";return v}else return v},setTargetVal=(val,key,type,el)=>{if(type=="property"){el[key]=val}else if(type=="attribute"){el.attr(key,val==void 0?val:val+"")}else if(type=="css"){el.css(key,val)}};class TweenAnim extends an.Anim{constructor(cfg){super(Jsons.union(new TweenAnimInit,cfg));this._iniValues=[]}_getValues(ta){let a=[];Jsons.forEach(this._cfg.keys,(v,k)=>{a.add(getTargetVal(k,ta))});return a}_saveIniValues(){if(this._iniValues.length==0){this._iniValues=[];this._targets.forEach(ta=>{this._iniValues.push(this._getValues(ta))})}}_resetTargets(){if(this._iniValues.length>=this._targets.length)this._targets.forEach((ta,i)=>{let kvs=this._iniValues[i];setTargetVals(kvs,ta)})}_calc(from,to,t,d,target,i,total){let cfg=this._cfg,b,c,n;if(this._dir=="forward"){b=from;c=to-from}else{b=to;c=from-to}if(typeof cfg.easing=="string"){let fn=an.Easings[cfg.easing],args=[t,b,c,d];if(!Types.isFunction(fn)){let name=cfg.easing.split("(")[0],a=parseEasingParameters(cfg.easing);fn=an.Easings[name];args.add(a)}n=fn.apply(null,args)}else{let fn=cfg.easing.call(null,target,i,total);n=fn(t,b,c,d)}return n.round(cfg.round)}_calcColor(el,i,total,key,type,from,to,t,d){let fromCol=CssTool.convertToRGB(from),toCol=CssTool.convertToRGB(to),newR=this._calc(fromCol.r,toCol.r,t,d,el,i,total),newG=this._calc(fromCol.g,toCol.g,t,d,el,i,total),newB=this._calc(fromCol.b,toCol.b,t,d,el,i,total),newCol=CssTool.rgbString({r:newR,g:newG,b:newB});setTargetVal(newCol,key,type,el)}_calcPercent(el,i,total,key,type,from,to,t,d){let newV=this._calc(parseFloat(from),parseFloat(to),t,d,el,i,total);setTargetVal(newV+"%",key,type,el)}_calcNormal(el,i,total,key,type,from,to,t,d){setTargetVal(this._calcNormalVal(el,i,total,key,from,to,t,d),key,type,el)}_calcNormalVal(el,i,total,key,from,to,t,d){let toVal=Types.isNumber(to)?to:CssTool.numberOf(degUnit(key,CssTool.calcValue(to,from)));return this._calc(CssTool.numberOf(degUnit(key,from)),toVal,t,d,el,i,total)}_updateTargets(t){let total=this._targets.length,d=this._cfg.duration;this._targets.forEach((ta,i)=>{let trans="";Jsons.forEach(this._cfg.keys,(v,k)=>{let oKV=this._iniValues[i].find(v=>{return v.key==k}),newVal,oldVal;if(Types.isArray(v)){oldVal=v[0];newVal=v[1]}else if(Types.isFunction(v)){let rst=v.call(null,ta,i,total);if(Types.isArray(rst)){oldVal=rst[0];newVal=rst[1]}else{oldVal=oKV.val;newVal=rst}}else{oldVal=oKV.val;newVal=v}if(CssTool.isColor(newVal)){this._calcColor(ta,i,total,k,oKV.type,oldVal,newVal,t,d)}else if(Types.isString(newVal)&&newVal.endsWith("%")){this._calcPercent(ta,i,total,k,oKV.type,oldVal,newVal,t,d)}else if(oKV.type=="transform"){let val=this._calcNormalVal(ta,i,total,k,oldVal,newVal,t,d);v=CssTool.normValue(val,defaultTransformValue(k),getTransformUnit(k));trans+=` ${k}(${v})`}else this._calcNormal(ta,i,total,k,oKV.type,oldVal,newVal,t,d)});if(trans)ta.style.transform=trans})}seek(dt){if(this._iniValues.length==0){this._targets.forEach(ta=>{this._iniValues.push(this._getValues(ta))})}this._updateTargets(dt)}_setupTimer(){super._setupTimer();let T=this,c=T._cfg,r=T._timer;r.on("looping",(e,loop)=>{if(loop>1&&c.direction=="alternate")T._dir=T._dir=="backward"?"forward":"backward";T._bus.fire("looping",[loop])});r.on("looped",(e,loop)=>{T._loop=loop;T._bus.fire("looped",[loop])})}_prepare(){let T=this,c=T._cfg;if(!T._timer){T._timer=new an.AnimTimer(t=>{T._updateTargets(t)},{delay:c.delay,endDelay:c.endDelay,duration:c.duration,loop:c.loop});T._setupTimer()}}play(){let T=this,c=T._cfg;return Promises.create(function(){if(T.isRunning())this.resolve(false);T._prepare();T._timer.on("finished",()=>{this.resolve(true)});T._saveIniValues();T._timer.start()})}}an.TweenAnim=TweenAnim})(an=JS.an||(JS.an={}))})(JS||(JS={}));var TweenAnimInit=JS.an.TweenAnimInit;var TweenAnim=JS.an.TweenAnim;Promise.prototype.always=function(fn){return this.then(t1=>{return fn.call(this,t1,true)}).catch(t2=>{return fn.call(this,t2,false)})};var JS;(function(JS){let core;(function(core){let AS=Array.prototype.slice,newArray=(a,from)=>{return a==void 0?[]:AS.apply(a,[from==void 0?0:from])};class Promises{static create(fn,...args){return new Promise((resolve,reject)=>{fn.apply({resolve,reject},newArray(arguments,1))})}static createPlan(fn){return function(){return Promises.create.apply(Promises,[fn].concat(Array.prototype.slice.apply(arguments)))}}static newPlan(p,args,ctx){return()=>{return p.apply(ctx||p,args)}}static resolvePlan(v){return()=>{return Promise.resolve(v)}}static rejectPlan(v){return()=>{return Promise.reject(v)}}static order(ps){var seq=Promise.resolve();ps.forEach(plan=>{seq=seq.then(plan)});return seq}static all(ps){var a=[];ps.forEach(task=>{a.push(task())});return Promise.all(a)}static race(ps){var a=[];ps.forEach(task=>{a.push(task())});return Promise.race(a)}}core.Promises=Promises})(core=JS.core||(JS.core={}))})(JS||(JS={}));var Promises=JS.core.Promises;var JS;(function(JS){let core;(function(core){let D,_head=()=>{return D.querySelector("head")},_uncached=u=>{return`${u}${u.indexOf("?")<0?"?":"&"}_=${(new Date).getTime()}`},_loading=(k,a,b)=>{if(!a){k["onreadystatechange"]=(()=>{if(k["readyState"]=="loaded"||k["readyState"]=="complete")b()});k.onload=k.onerror=b}};if(self["HTMLElement"])D=document;class Loader{static css(url,async=false,uncached){if(!url)return Promise.reject(null);return core.Promises.create(function(){let k=D.createElement("link"),back=()=>{k.onload=k.onerror=k["onreadystatechange"]=null;k=null;this.resolve(url)};k.type="text/css";k.rel="stylesheet";k.charset="utf-8";_loading(k,async,back);k.href=uncached?_uncached(url):url;_head().appendChild(k);if(async)back()})}static js(url,async=false,uncached){if(!url)return Promise.reject(null);return core.Promises.create(function(){let s=D.createElement("script"),back=()=>{s.onload=s.onerror=s["onreadystatechange"]=null;s=null;this.resolve(url)};s.type="text/javascript";s.async=async;_loading(s,async,back);s.src=uncached?_uncached(url):url;_head().appendChild(s);if(async)back()})}}core.Loader=Loader})(core=JS.core||(JS.core={}))})(JS||(JS={}));var Loader=JS.core.Loader;var JS;(function(JS){JS.version="2.7.0";function config(d,v){let l=arguments.length;if(l==0)return _cfg;if(!d)return;if(typeof d==="string"){if(l==1){return _cfg[d]}else{_cfg[d]=v;return}}else{for(let k in d){if(d.hasOwnProperty(k))_cfg[k]=d[k]}}}JS.config=config;let P=Promises,_cfg={},_ldd={},_ts=u=>{let c=JS.config("cachedImport");if(c===true)return u;let s="_="+(c?c:""+Date.now());return u.lastIndexOf("?")>0?`${u}&${s}`:`${u}?${s}`},_min=(u,t)=>{if(JS.config("minImport")){if(u.endsWith(".min."+t))return u;if(u.endsWith("."+t))return u.slice(0,u.length-t.length-1)+".min."+t}else return u},_impLib=v=>{let a=v.endsWith("#async"),n=a?v.slice(0,v.length-6):v,c=JS.config("libs")[n];if(c){let ps=typeof c=="string"?[c]:c,tasks=[];ps.forEach(path=>{if(path.startsWith("$")){tasks.push(_impLib(path.slice(1)))}else{tasks.push(_impFile(path+(a?"#async":"")))}});return P.newPlan(P.order,[tasks])}else{console.error("Not found the <"+n+"> library in JSDK settings.");return P.resolvePlan(null)}},_impFile=s=>{let u=s;if(s.startsWith("!")){let jr=JS.config("jsdkRoot");jr=jr?jr:JS.config("libRoot")+"/jsdk/"+JS.version;u=jr+s.slice(1)}else if(s.startsWith("~")){u=JS.config("libRoot")+s.slice(1)}let us=u.split("#"),len=us.length,u0=us[0],ayc=len>1&&us[1]=="async";if(_ldd[u0])return P.resolvePlan(null);_ldd[u0]=1;if(u0.endsWith(".js")){return P.newPlan(Loader.js,[_ts(_min(u0,"js")),ayc])}else if(u0.endsWith(".css")){return P.newPlan(Loader.css,[_ts(_min(u0,"css")),ayc])}};function imports(url){if(JS.config("closeImport"))return Promise.resolve();let us=typeof url==="string"?[url]:url,tasks=[];us.forEach(uri=>{tasks.push(uri.startsWith("$")?_impLib(uri.slice(1)):_impFile(uri))});return P.order(tasks)}JS.imports=imports})(JS||(JS={}));var JS;(function(JS){let lang;(function(lang){let Type;(function(Type){Type["null"]="null";Type["undefined"]="undefined";Type["string"]="string";Type["boolean"]="boolean";Type["number"]="number";Type["date"]="date";Type["array"]="array";Type["json"]="json";Type["object"]="object";Type["function"]="function";Type["class"]="class";Type["symbol"]="symbol"})(Type=lang.Type||(lang.Type={}))})(lang=JS.lang||(JS.lang={}))})(JS||(JS={}));var Type=JS.lang.Type;var JS;(function(JS){let util;(function(util){let _of=function(a,s){return typeof a===s},_is=function(a,s){return toString.call(a)===`[object ${s}]`},_isKlass=function(obj){if(typeof obj!="function")return false;let proto=obj.prototype;if(proto===undefined||proto.constructor!==obj)return false;if(Object.getOwnPropertyNames(proto).length>=2)return true;var str=obj.toString();if(str.slice(0,5)=="class")return true;if(/^function\s+\(|^function\s+anonymous\(/.test(str))return false;if(/\b\(this\b|\bthis[\.\[]\b/.test(str)){if(/classCallCheck\(this/.test(str))return true;return/^function\sdefault_\d+\s*\(/.test(str)}return false},_superklass=klass=>{if(Object===klass)return null;let sup=Object.getPrototypeOf(klass);return Object.getPrototypeOf(Object)===sup?Object:sup};class Types{static isSymbol(o){return _of(o,"symbol")}static isArguments(o){return _is(o,"Arguments")}static isNaN(n){return n!=null&&isNaN(n)}static isNumber(n){return _of(n,"number")}static isNumeric(n){return(this.isNumber(n)||this.isString(n))&&!isNaN(n-parseFloat(n))}static isFloat(n){return Number(n).isFloat()}static isInt(n){return Number(n).isInt()}static isBoolean(obj){return _of(obj,"boolean")}static isString(obj){return _of(obj,"string")}static isDate(obj){return _is(obj,"Date")}static isDefined(obj){return obj!=void 0}static isNull(obj){return obj===null}static isUndefined(obj){return obj===void 0}static isObject(obj){return _is(obj,"Object")}static isJsonObject(obj){let OP=Object.prototype;if(!obj||OP.toString.call(obj)!=="[object Object]")return false;let proto=Object.getPrototypeOf(obj);if(!proto)return true;let ctor=OP.hasOwnProperty.call(proto,"constructor")&&proto.constructor,fnToString=Function.prototype.toString;return typeof ctor==="function"&&fnToString.call(ctor)===fnToString.call(Object)}static isArray(obj){return Array.isArray(obj)||obj instanceof Array}static isArrayLike(obj){if(this.isString(obj))return false;let l=obj&&obj["length"]||null;return typeof l=="number"&&l>=0&&l<=Number.MAX_SAFE_INTEGER}static isError(obj){return _of(obj,"Error")}static isFile(obj){return _is(obj,"File")}static isFormData(obj){return _is(obj,"FormData")}static isBlob(obj){return _is(obj,"Blob")}static isFunction(fn,pure){return _of(fn,"function")&&(!pure?true:!this.equalKlass(fn))}static isRegExp(obj){return _is(obj,"RegExp")}static isArrayBuffer(obj){return _is(obj,"ArrayBuffer")}static isTypedArray(value){return value&&this.isNumber(value.length)&&/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/.test(toString.call(value))}static isElement(el){return el&&typeof el==="object"&&(el.nodeType===1||el.nodeType===9)}static isWindow(el){return el!=null&&el===el.window}static isKlass(obj,klass){if(!this.ofKlass(obj,klass))return false;return obj.constructor&&obj.constructor===klass}static ofKlass(obj,klass){return obj instanceof klass}static equalKlass(kls,klass){if(!_isKlass(kls))return false;return klass?kls===klass:true}static subklassOf(kls1,kls2){if(kls2===Object||kls1===kls2)return true;let superXls=_superklass(kls1);while(superXls!=null){if(superXls===kls2)return true;superXls=_superklass(superXls)}return false}static type(obj){if(obj===null)return Type.null;let type=typeof obj;if(type=="number"||type=="bigint")return Type.number;if(type=="object"){if(this.isJsonObject(obj))return Type.json;if(this.isArray(obj))return Type.array;if(this.isDate(obj))return Type.date;return Type.object}return _isKlass(obj)?Type.class:type}}util.Types=Types})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Types=JS.util.Types;var JS;(function(JS){let util;(function(util){let N=Number,_test=function(s,exp){return s&&exp.test(s.trim())},EMAIL=/^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?\.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/,EMAIL_DOMAIN=/^@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?\.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/,YYYY_MM_DD=/^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/,HALFWIDTH_CHARS=/^[\u0000-\u00FF]+$/,FULLWIDTH_CHARS=/^[\u0391-\uFFE5]+$/,NUMBERS_ONLY=/^\d+$/,LETTERS_ONLY=/^[A-Za-z]+$/,LETTERS_OR_NUMBERS=/^[A-Za-z\d]+$/,ENGLISH_ONLY=/^[A-Za-z\d\s\`\~\!\@\#\$\%\^\&\*\(\)\_\-\+\=\[\]\{\}\|\:\;\"\'\<\>\,\.\?\\\/]+$/,CHINESE_ONLY=/^[\u4E00-\u9FA5]+$/,IP=/^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$/;class Check{static isEmpty(v){return v==void 0||v===""||v.hasOwnProperty("length")&&v.length==0||Check.isEmptyObject(v)}static isEmptyObject(v){var name;for(name in v){return false}return true}static isBlank(s){return s==void 0||s.trim()===""}static isFormatDate(s,format){return _test(s,format||YYYY_MM_DD)}static isEmail(s,exp){return _test(s,exp?exp:EMAIL)}static isEmails(s,exp){s=s||"";if(this.isBlank(s))return false;return s.split(/;|\s+/).every(as=>{return as.length==0||this.isEmail(as,exp)})}static isEmailDomain(str){return _test(str,EMAIL_DOMAIN)}static isOnlyNumber(str){return _test(str,NUMBERS_ONLY)}static isPositive(n){return N(n).isPositive()}static isNegative(n){return N(n).isNegative()}static isHalfwidthChars(str){return _test(str,HALFWIDTH_CHARS)}static isFullwidthChars(str){return _test(str,FULLWIDTH_CHARS)}static isEnglishOnly(str){return _test(str,ENGLISH_ONLY)}static isChineseOnly(str){return _test(str,CHINESE_ONLY)}static isFormatNumber(n,iLength,fLength){if(!util.Types.isNumeric(n))return false;let num=N(n),iLen=num.integerLength(),dLen=num.fractionLength();if(iLen>iLength)return false;if(util.Types.isDefined(fLength)&&dLen>fLength)return false;return true}static greater(n1,n2){return N(n1)>N(n2)}static greaterEqual(n1,n2){return N(n1)>=N(n2)}static less(n1,n2){return N(n1)<N(n2)}static lessEqual(n1,n2){return N(n1)<=N(n2)}static isBetween(n,min,max){let num=N(n);return num>N(min)&&num<N(max)}static shorter(s,len){return s&&s.length<len}static longer(s,len){return s&&s.length>len}static equalLength(s,len){return s&&s.length==len}static isLettersOnly(s){return _test(s,LETTERS_ONLY)}static isLettersOrNumbers(s){return _test(s,LETTERS_OR_NUMBERS)}static isIP(s){return _test(s.trim(),IP)}static isExistUrl(url){let xhr=new XMLHttpRequest;return new Promise(function(resolve,reject){xhr.onreadystatechange=(()=>{if(xhr.readyState==4)xhr.status==200?resolve(true):reject(false)});xhr.open("HEAD",url,true);xhr.send()})}static isPattern(s,exp){return _test(s,exp)}static byServer(req,judge){return new Promise(function(resolve,reject){Http.send(req).then(res=>{judge.apply(null,[res])?resolve(true):reject(false)})})}}util.Check=Check})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Check=JS.util.Check;var JS;(function(JS){let util;(function(util){let A=Array,Y=util.Types,E=util.Check.isEmpty;class Jsons{static parse(text,reviver){return text?JSON.parse(text,reviver):null}static stringify(value,replacer,space){return JSON.stringify(value,replacer,space)}static clone(obj){if(obj==void 0||"object"!=typeof obj)return obj;let copy;if(obj instanceof Date){copy=new Date;copy.setTime(obj.getTime());return copy}if(obj instanceof A){copy=[];for(var i=0,len=obj.length;i<len;++i){copy[i]=this.clone(obj[i])}return copy}if(Y.isJsonObject(obj)){copy={};var keys=Reflect.ownKeys(obj);keys.forEach(key=>{copy[key]=this.clone(obj[key])});return copy}return obj}static forEach(json,fn,that){if(!json)return;let keys=Object.keys(json);keys.forEach((key,i)=>{fn.apply(that||json,[json[key],key])})}static some(json,fn,that){if(!json)return;let keys=Object.keys(json);return keys.some((key,i)=>{return fn.apply(that||json,[json[key],key])})}static hasKey(json,key){return json&&key!=void 0&&json.hasOwnProperty(key)}static values(json){if(!json)return null;let arr=[];this.forEach(json,v=>{arr[arr.length]=v});return arr}static keys(json){if(!json)return null;let keys=[];this.forEach(json,(v,k)=>{keys[keys.length]=k});return keys}static equalKeys(json1,json2){let empty1=E(json1),empty2=E(json2);if(empty1&&empty2)return true;if(empty1||empty2)return false;let map2=this.clone(json2);this.forEach(json1,(v,k)=>{delete map2[k]});return E(map2)}static equal(json1,json2){let empty1=E(json1),empty2=E(json2);if(empty1&&empty2)return true;if(empty1||empty2)return false;let map2=this.clone(json2);this.forEach(json1,(v,k)=>{if(k in map2&&map2[k]===v)delete map2[k]});return E(map2)}static replaceKeys(json,keyMapping,needClone){if(!keyMapping)return json;let clone=needClone?this.clone(json):json;this.forEach(clone,function(val,oldKey){let newKey=Y.isFunction(keyMapping)?keyMapping.apply(clone,[val,oldKey]):keyMapping[oldKey];if(newKey!=oldKey&&clone.hasOwnProperty(oldKey)){let temp=clone[oldKey];delete clone[oldKey];clone[newKey]=temp}});return clone}static _union(...args){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++}if(typeof target!=="object"&&!Y.isFunction(target)){target={}}for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue}if(deep&©&&(Y.isJsonObject(copy)||(copyIsArray=A.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&A.isArray(src)?src:[]}else{clone=src&&Y.isJsonObject(src)?src:{}}target[name]=this._union(deep,clone,copy)}else if(copy!==undefined){target[name]=copy}}}}return target}static union(...jsons){if(arguments.length<=1)return jsons[0];return this._union.apply(this,[true,{}].concat(jsons))}static minus(json1,json2){if(E(json1)||E(json2))return json1;let newJson={};this.forEach(json1,(v,k)=>{if(!json2.hasOwnProperty(k))newJson[k]=v});return newJson}static intersect(json1,json2){if(E(json1)||E(json2))return json1;let newJson={};this.forEach(json1,(v,k)=>{if(json2.hasOwnProperty(k))newJson[k]=v});return newJson}static filter(json,fn){let newJson={};this.forEach(json,(v,k)=>{if(fn.apply(json,[v,k]))newJson[k]=v});return newJson}static find(data,path){if(!path)return data;const array=path.split(".");if(array.length==1)return data[path];let v=data;array.forEach(a=>{if(v&&a)v=v[a]});return v}}util.Jsons=Jsons})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Jsons=JS.util.Jsons;var JS;(function(JS){let net;(function(net){let Y=Types,J=Jsons,_URI_REG=/^(([^\:\/\?\#]+)\:)?(\/\/([^\/\?\#]*))?([^\?\#]*)(\\?([^\#]*))?(\#(.*))?/,_AUTH_REG=/^(([^\:@]*)(\:([^\:@]*))?@)?([^\:@]*)(\:(\d{1,3}))?/;let _ADU=null;class URI{constructor(cfg){this._scheme=null;this._user=null;this._pwd=null;this._host=null;this._port=null;this._path=null;this._params=null;this._frag=null;this._parse(cfg)}_parse(cfg){if(Y.isString(cfg)){this._parseStr(cfg)}else if(cfg&&cfg.href){this._parseStr(cfg.href)}else if(cfg){let uri=cfg;this.scheme(uri.scheme?uri.scheme:"http");this.user(uri.user);this.password(uri.password);this.host(uri.host);this.port(Y.isDefined(uri.port)?uri.port:80);this.path(uri.path);this._params=uri.params;this.fragment(uri.fragment)}}_parseStr(uri){let array=_URI_REG.exec(uri);if(!array)throw new URIError("An invalid URI: "+uri);this._scheme=array[2];this._frag=array[9];let auth=array[4];if(auth){let authArr=_AUTH_REG.exec(auth);if(!authArr)throw new URIError("An invalid auth part of URI: "+uri);if(authArr[2])this._user=authArr[2];if(authArr[4])this._pwd=authArr[4];if(authArr[5])this._host=authArr[5];if(Y.isDefined(authArr[7]))this._port=parseInt(authArr[7])}let path=array[5];if(path&&path!="/"){if(!this.isAbsolute()&&path.startsWith("/")&&!uri.startsWith("/"))path=path.slice(1);this.path(path)}let query=array[7];if(query)this._params=URI.parseQueryString(query)}userinfo(){return this._user?this._user+(this._pwd?":"+this._pwd:""):""}fragment(str){if(arguments.length==0)return this._frag;this._frag=str||"";return this}queryString(str){if(arguments.length==0){if(!this._params)return null;let query="";J.forEach(this._params,(v,k)=>{query+=`${query?"&":""}${k}=${v}`});return query}this._params=URI.parseQueryString(str);return this}path(str){if(arguments.length==0)return this._path;this._path=str||null;return this}port(port){if(arguments.length==0)return this._port;this._port=port;return this}host(str){if(arguments.length==0)return this._host;this._host=str||"";return this}user(str){if(arguments.length==0)return this._user;this._user=str||"";return this}password(str){if(arguments.length==0)return this._pwd;this._pwd=str||"";return this}scheme(str){if(arguments.length==0)return this._scheme;this._scheme=str||"";return this}query(key,value,encode){if(!this._params)this._params={};if(arguments.length>1){value=value||"";this._params[key]=encode?encodeURIComponent(value):value;return this}return decodeURIComponent(this._params[key])}queryObject(params,encode){if(arguments.length==0)return this._params;J.forEach(params,(value,key)=>{this.query(key,value,encode)});return this}isAbsolute(){return this._host?true:false}toAbsolute(){let userinfo=this.userinfo(),port=Y.isDefined(this._port)?":"+this._port:"",path=this.path()||"",query=this.queryString()||"",fragment=this._frag?"#"+this._frag:"";path=path+(!query&&!fragment?"":"?"+query+fragment);return(this._scheme||"http")+"://"+(userinfo?userinfo+"@":"")+(this._host||"")+port+(!path||path.startsWith("/")?path:"/"+path)}toRelative(){let query=this.queryString()||"",fragment=this._frag?"#"+this._frag:"";return(this._path||"")+(!query&&!fragment?"":"?"+query+fragment)}toString(){return this.isAbsolute()?this.toAbsolute():this.toRelative()}static getAbsoluteDir(){if(_ADU)return _ADU;var div=document.createElement("div");div.innerHTML='<a href="./"></a>';_ADU=div.firstChild["href"];div=null;return _ADU}static toAbsoluteURL(url){if(url.startsWith("http://")||url.startsWith("https://"))return url;let loc=self.location;if(url.startsWith("/"))return loc.origin+url;let p=loc.pathname||"/";if(p)p=p.slice(0,p.lastIndexOf("/")+1);return this.getAbsoluteDir()+url}static toQueryString(json,encode){if(!json)return"";let q="";J.forEach(json,(v,k)=>{q+=`&${k}=${encode?encodeURIComponent(v):v}`});return q}static parseQueryString(query,decode){if(Check.isEmpty(query))return{};let q=query.startsWith("?")?query.slice(1):query,ps={},arr=q.split("&");arr.forEach(function(v){if(v){let kv=v.split("=");ps[kv[0]]=decode?decodeURIComponent(kv[1]):kv[1]}});return ps}}net.URI=URI})(net=JS.net||(JS.net={}))})(JS||(JS={}));var URI=JS.net.URI;var JS;(function(JS){let util;(function(util){class Locales{static lang(locale){if(!locale)return null;let arr=locale.split("-");if(arr.length==1)return locale;return arr[0]}static country(locale){if(!locale)return null;let arr=locale.split("-");if(arr.length==1)return null;return arr[1]}}util.Locales=Locales})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Locales=JS.util.Locales;var JS;(function(JS){let util;(function(util){class I18N{constructor(lc){this._d={};this.locale(lc)}_load(lc,prefix,suffix){let lang=util.Locales.lang(lc),country=util.Locales.country(lc);if(country){let rst=this._loadJson(`${prefix}_${lang}_${country}.${suffix}`);if(rst)return true}if(lang){let rst=this._loadJson(`${prefix}_${lang}.${suffix}`);if(rst)return true}return this._loadJson(`${prefix}.${suffix}`)}_loadJson(u){let xhr=new XMLHttpRequest;xhr.open("GET",u,false);xhr.responseType="json";xhr.send();if(xhr.status!=200)return false;this.set(xhr.response);return true}load(url,locale){let T=this,lc=locale||T._lc,pos=url.lastIndexOf("."),suffix=pos<0?"":url.slice(pos+1),prefix=pos<0?url:url.slice(0,pos);return T._load(lc,prefix,suffix)}get(k){if(arguments.length==0)return this._d;return k&&this._d?this._d[k]:undefined}getKeys(){return Reflect.ownKeys(this._d)}hasKey(k){return this._d.hasOwnProperty(k)}locale(lc){if(arguments.length==0)return this._lc;this._lc=lc||System.info().locale;return this}set(d){let T=this;d=d||{};if(d.hasOwnProperty(T._lc)){this._d=d[T._lc]}else{let lang=util.Locales.lang(T._lc);this._d=d.hasOwnProperty(lang)?d[lang]:d}return this}}util.I18N=I18N})(util=JS.util||(JS.util={}))})(JS||(JS={}));var I18N=JS.util.I18N;var JS;(function(JS){let util;(function(util){class Dates{static isValidDate(d){if(d==null)return false;return!isNaN(new Date(d).getTime())}static isLeapYear(y){return y%4===0&&y%100!==0||y%400===0}static getDaysOfMonth(m,y){y=y||(new Date).getFullYear();return[31,this.isLeapYear(y)?29:28,31,30,31,30,31,31,30,31,30,31][m]}static getFirstDayOfMonth(d){return d.clone().set({day:1})}static getLastDayOfMonth(d){return d.clone().set({day:Dates.getDaysOfMonth(d.getMonth(),d.getFullYear())})}static getDayOfWeek(d,dayOfWeek){let d2=dayOfWeek!=void 0?dayOfWeek:1,d1=d.getDay();if(d2==0)d2=7;if(d1==0)d1=7;return d.clone().add((d2-d1)%7,"d")}}Dates.I18N_RESOURCE={AM:"AM",PM:"PM",WEEK_DAY_NAMES:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],WEEK_DAY_SHORT_NAMES:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],MONTH_NAMES:["January","February","March","April","May","June","July","August","September","October","November","December"],MONTH_SHORT_NAMES:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]};util.Dates=Dates})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Dates=JS.util.Dates;(function(){var D=Date,$P=D.prototype,pad=function(s,l){new D;if(!l){l=2}return("000"+s).slice(l*-1)};$P.getWeek=function(){let date0=new D(this.getFullYear(),0,1),diff=Math.round((this.valueOf()-date0.valueOf())/864e5);return Math.ceil((diff+(date0.getDay()+1-1))/7)};$P.setWeek=function(week,dayOfWeek){let dw=Types.isDefined(dayOfWeek)?dayOfWeek:1;return this.setTime(Dates.getDayOfWeek(this,dw).add(week-this.getWeek(),"w").getTime())};$P.clone=function(){return new D(this.getTime())};$P.setZeroTime=function(){let T=this;T.setHours(0);T.setMinutes(0);T.setSeconds(0);T.setMilliseconds(0);return T};$P.setLastTime=function(){let T=this;T.setHours(23);T.setMinutes(59);T.setSeconds(59);T.setMilliseconds(999);return T};$P.setNowTime=function(){let T=this,n=new D;T.setHours(n.getHours());T.setMinutes(n.getMinutes());T.setSeconds(n.getSeconds());T.setMilliseconds(n.getMilliseconds());return T};$P.equals=function(d,p="ms"){let T=this;if(p=="ms")return T.diff(d)==0;if(p=="s")return T.getSeconds()==d.getSeconds();if(p=="m")return T.getMinutes()==d.getMinutes();if(p=="h")return T.getHours()==d.getHours();if(p=="y")return T.getFullYear()==d.getFullYear();if(p=="M")return T.getMonth()==d.getMonth();if(p=="d")return T.getFullYear()==d.getFullYear()&&T.getMonth()==d.getMonth()&&T.getDate()==d.getDate();if(p=="w")return T.getWeek()==d.getWeek();return false};$P.between=function(start,end){return this.diff(start)>=0&&this.diff(end)<=0};$P.isAfter=function(d){return this.diff(d)>0};$P.isBefore=function(d){return this.diff(d)<0};$P.isToday=function(){return this.equals(new D,"d")};$P.add=function(v,type){let T=this;if(v==0)return T;switch(type){case"ms":{T.setMilliseconds(T.getMilliseconds()+v);return T}case"s":{return T.add(v*1e3,"ms")}case"m":{return T.add(v*6e4,"ms")}case"h":{return T.add(v*36e5,"ms")}case"d":{T.setDate(T.getDate()+v);return T}case"w":{return T.add(v*7,"d")}case"M":{var n=T.getDate();T.setDate(1);T.setMonth(T.getMonth()+v);T.setDate(Math.min(n,Dates.getDaysOfMonth(T.getMonth(),T.getFullYear())));return T}case"y":{return T.add(v*12,"M")}}return T};$P.setTimezoneOffset=function(offset){var here=this.getTimezoneOffset(),there=Number(offset)*-6/10;return this.add(there-here,"m")};$P.formatTimezoneOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-1e4).toString();return r.charAt(0)+r.substr(2)}else{r=(n+1e4).toString();return"+"+r.substr(1)}};let vt=function(n,min,max){if(!Types.isDefined(n)){return false}else if(n<min||n>max){throw new RangeError(n+" is not a valid value")}return true};$P.set=function(config){let T=this;if(vt(config.millisecond,0,999)){T.add(config.millisecond-T.getMilliseconds(),"ms")}if(vt(config.second,0,59)){T.add(config.second-T.getSeconds(),"s")}if(vt(config.minute,0,59)){T.add(config.minute-T.getMinutes(),"m")}if(vt(config.hour,0,23)){T.add(config.hour-T.getHours(),"h")}if(vt(config.day,1,Dates.getDaysOfMonth(T.getMonth(),T.getFullYear()))){T.add(config.day-T.getDate(),"d")}if(vt(config.week,0,53)){T.setWeek(config.week)}if(vt(config.month,0,11)){T.add(config.month-T.getMonth(),"M")}if(vt(config.year,0,9999)){T.add(config.year-T.getFullYear(),"y")}if(config.timezoneOffset){T.setTimezoneOffset(config.timezoneOffset)}return T};$P.diff=function(date){return this-(date||new D)};$P.format=function(format,locale){let T=this,fmt=format||"YYYY-MM-DD HH:mm:ss",i18n=new I18N(locale).set(Dates.I18N_RESOURCE);return fmt.replace(/YYYY|YY|MMMM|MMM|MM|M|DD|D|hh|h|HH|H|mm|m|ss|s|dddd|ddd|A/g,function(m){switch(m){case"YYYY":return pad(T.getFullYear(),4);case"YY":return pad(T.getFullYear());case"MMMM":return i18n.get("MONTH_NAMES")[T.getMonth()];case"MMM":return i18n.get("MONTH_SHORT_NAMES")[T.getMonth()];case"MM":return pad(T.getMonth()+1);case"M":return T.getMonth()+1;case"DD":return pad(T.getDate());case"D":return T.getDate();case"hh":{let h=T.getHours();return pad(h<13?h===0?12:h:h-12)}case"h":{let h=T.getHours();return h<13?h===0?12:h:h-12}case"HH":return pad(T.getHours());case"H":return T.getHours();case"mm":return pad(T.getMinutes());case"m":return T.getMinutes();case"ss":return pad(T.getSeconds());case"s":return T.getSeconds();case"dddd":return i18n.get("WEEK_DAY_NAMES")[T.getDay()];case"ddd":return i18n.get("WEEK_DAY_SHORT_NAMES")[T.getDay()];case"A":return i18n.get(T.getHours()<12?"AM":"PM");default:return m}})}})();(function(){var N=Number,$N=N.prototype;$N.stringify=function(){if(this.isNaN())return null;if(this.isZero())return"0";let t=this.toString(),m=t.match(/^(\+|\-)?(\d+)\.?(\d*)[Ee](\+|\-)(\d+)$/);if(!m)return t;let zhe=m[2],xiao=m[3],zhi=N(m[5]),fu=m[1]=="-"?"-":"",zfu=m[4],ws=(zfu=="-"?-1:1)*zhi-xiao.length,n=zhe+xiao;if(ws==0)return fu+n;if(ws>0)return fu+n+Strings.padEnd("",ws,"0");let dws=n.length+ws;if(dws<=0)return fu+"0."+Strings.padEnd("",-1*dws,"0")+n;return n.slice(0,dws-1)+"."+n.slice(dws)};$N.round=function(d){if(this.isNaN()||this.isInt()||!N.isFinite(d))return N(this);let n=!d||d<0?0:d,pow=Math.pow(10,n);return Math.round(this*pow)/pow};$N.toInt=function(){return this.round(0)};var f3=s=>{return s.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")};$N.format=function(dLen){let d=dLen==void 0||!Number.isFinite(dLen)?this.fractionLength():dLen,s=this.round(d).abs().stringify(),sign=this.isNegative()?"-":"";let sn=N(s);if(sn.isInt())return sign+f3(sn.toString())+(d<1?"":"."+Strings.padEnd("",d,"0"));let p=s.indexOf("."),ints=s.slice(0,p),digs=s.slice(p+1);return sign+f3(ints)+"."+Strings.padEnd(digs,d,"0")};$N.equals=function(n,dLen){if(this.isNaN())throw new TypeError("This number is NaN!");let num=N(n);if(num.isNaN())throw new TypeError("The compared number is NaN!");return this.round(dLen).valueOf()==num.round(dLen).valueOf()};$N.add=function(n){const v=N(n);if(this.valueOf()==0)return v;if(v.valueOf()==0)return this;if(this.isInt()&&v.isInt())return this.valueOf()+v.valueOf();let m=Math.pow(10,Math.max(this.fractionLength(),v.fractionLength())),n1=this.mul(m).valueOf(),n2=v.mul(m).valueOf();return(n1+n2)/m};$N.sub=function(n){const v=N(n);if(v.valueOf()==0)return this;if(this.isInt()&&v.isInt())return this.valueOf()-v.valueOf();let m=Math.pow(10,Math.max(this.fractionLength(),v.fractionLength())),n1=this.mul(m).valueOf(),n2=v.mul(m).valueOf();return(n1-n2)/m};$N.mul=function(n){if(this.valueOf()==0)return 0;const v=N(n);if(v.valueOf()==0)return 0;if(this.isInt()&&v.isInt())return v.valueOf()*this.valueOf();let s1=this.stringify(this),s2=v.stringify(),m1=s1.indexOf(".")>=0?s1.split(".")[1].length:0,m2=s2.indexOf(".")>=0?s2.split(".")[1].length:0,n1=N(s1.replace(".","")),n2=N(s2.replace(".",""));return n1*n2/Math.pow(10,m1+m2)};$N.div=function(n){if(this.valueOf()==0)return 0;const v=N(n);if(v.valueOf()==0)throw new ArithmeticError("Can not divide an Zero.");let s1=this.stringify(),s2=v.stringify(),m1=s1.indexOf(".")>=0?s1.split(".")[1].length:0,m2=s2.indexOf(".")>=0?s2.split(".")[1].length:0,n1=N(s1.replace(".","")),n2=N(s2.replace(".",""));return n1/n2*Math.pow(10,m2-m1)};$N.isNaN=function(){return isNaN(this)};$N.isFinite=function(){return isFinite(this)};$N.isZero=function(){return this==0};$N.isFloat=function(){if(isNaN(this))return false;return!this.isInt()};$N.isInt=function(){return Math.floor(this)==this};$N.isPositive=function(){if(isNaN(this))return false;return this>0};$N.isNegative=function(){if(isNaN(this))return false;return this<0};$N.isOdd=function(){if(!this.isInt())return false;return(this.valueOf()&1)!=0};$N.isEven=function(){if(!this.isInt())return false;return(this.valueOf()&1)==0};$N.abs=function(){return Math.abs(this)};$N.fractionLength=function(){if(this.isInt()||this.isNaN())return 0;let s=this.stringify();return s.slice(s.indexOf(".")+1).length};$N.integerLength=function(){if(this.isNaN())return 0;return this.abs().toFixed(0).length};$N.fractionalPart=function(){if(this.isInt()||this.isNaN())return"";let s=this.stringify();return s.slice(s.indexOf(".")+1)};$N.integralPart=function(){if(this.isNaN())return"";let s=this.stringify(),i=s.indexOf(".");if(i<0)return s;return s.slice(0,i)}})();var JS;(function(JS){let util;(function(util){let N=Number,_opt=function(v1,opt,v2){var rst=null,v=N(v1);switch(opt){case"+":rst=v.add(v2);break;case"-":rst=v.sub(v2);break;case"*":rst=v.mul(v2);break;case"/":rst=v.div(v2);break}return rst};class Numbers{static min(...numbers){let m=0;numbers.forEach((n,i)=>{if(i==0||n<m)m=n});return m}static max(...numbers){let m=0;numbers.forEach((n,i)=>{if(i==0||n>m)m=n});return m}static termwise(...args){if(arguments.length<=0)return 0;if(arguments.length==1)return N(args[0]).valueOf();var rst=null;for(var i=1;i<args.length;i=i+2){if(i==1){rst=_opt(args[i-1],args[i],args[i+1])}else{rst=_opt(rst,args[i],args[i+1])}}return rst}static algebra(expression,values){let exp=expression.replace(/\s+/g,"");if(values){util.Jsons.forEach(values,(n,k)=>{exp=exp.replace(new RegExp(k,"g"),N(n)+"")})}exp=exp.replace(/\-{2}(\d+\.*\d*)/g,"+$1");exp=exp.replace(/(\(|^)\++(\d+\.*\d*)/g,"$1$2");exp=exp.replace(/(^|\(|\D^\))\-(\d+\.*\d*)/g,"$1(0-$2)");JSLogger.debug(exp);let opts=exp.split(/(\d+\.?\d*)/);opts.forEach((v,i,array)=>{if(v&&v.length>0){if(util.Types.isNumeric(v)){array[i]=`(Number(${v}))`}else{v=v.replace(/[\+\-\*\/]/g,m=>{if(m=="+"){return".add"}else if(m=="-"){return".sub"}else if(m=="*"){return".mul"}else if(m=="/"){return".div"}return m});array[i]=v}}});JSLogger.debug(opts.join(""));return eval(opts.join("")).valueOf()}}util.Numbers=Numbers})(util=JS.util||(JS.util={}))})(JS||(JS={}));var Numbers=JS.util.Numbers;var JS;(function(JS){let util;(function(util){class Konsole{static clear(){console.clear()}static count(label){console.count(label)}static countReset(label){console.countReset(label)}static time(label){console.time(label)}static timeEnd(label){console.timeEnd(label)}static trace(data,css){if(!data)console.trace();let arr=[data];if(typeof data=="string"&&css)arr[arr.length]=css;console.trace.apply(null,arr)}static text(data,css){typeof css?console.log("%c"+data,css):console.log(data)}static _print(d){typeof d=="string"?console.log(d):console.dirxm