From 3a807e67e7c50fd3269147542bd9975e147b3ef4 Mon Sep 17 00:00:00 2001 From: Mackenzie Fox Date: Thu, 31 Jan 2019 14:32:59 -0500 Subject: [PATCH] Platformer Test here it be --- .DS_Store | Bin 0 -> 6148 bytes GAMETEST.c3p | Bin 0 -> 180646 bytes Platformer template/appmanifest.json | 36 + Platformer template/data.json | 1 + Platformer template/icons/icon-114.png | Bin 0 -> 25223 bytes Platformer template/icons/icon-128.png | Bin 0 -> 33382 bytes Platformer template/icons/icon-16.png | Bin 0 -> 1041 bytes Platformer template/icons/icon-256.png | Bin 0 -> 98347 bytes Platformer template/icons/icon-32.png | Bin 0 -> 2967 bytes Platformer template/icons/loading-logo.png | Bin 0 -> 9375 bytes .../images/backgroundtile-sheet0.png | Bin 0 -> 125 bytes .../images/jumpthrutile-sheet0.png | Bin 0 -> 120 bytes .../images/shared-0-sheet0.png | Bin 0 -> 209 bytes .../images/solidtile-sheet0.png | Bin 0 -> 123 bytes Platformer template/index.html | 31 + Platformer template/offline.json | 1 + Platformer template/scripts/c3runtime.js | 630 ++++++++++++++++++ Platformer template/scripts/dispatchWorker.js | 1 + Platformer template/scripts/jobWorker.js | 1 + Platformer template/scripts/main.js | 11 + Platformer template/scripts/offlineClient.js | 1 + Platformer template/scripts/register-sw.js | 1 + Platformer template/scripts/supportCheck.js | 1 + Platformer template/style.css | 34 + Platformer template/sw.js | 1 + 25 files changed, 750 insertions(+) create mode 100644 .DS_Store create mode 100644 GAMETEST.c3p create mode 100755 Platformer template/appmanifest.json create mode 100755 Platformer template/data.json create mode 100755 Platformer template/icons/icon-114.png create mode 100755 Platformer template/icons/icon-128.png create mode 100755 Platformer template/icons/icon-16.png create mode 100755 Platformer template/icons/icon-256.png create mode 100755 Platformer template/icons/icon-32.png create mode 100755 Platformer template/icons/loading-logo.png create mode 100755 Platformer template/images/backgroundtile-sheet0.png create mode 100755 Platformer template/images/jumpthrutile-sheet0.png create mode 100755 Platformer template/images/shared-0-sheet0.png create mode 100755 Platformer template/images/solidtile-sheet0.png create mode 100755 Platformer template/index.html create mode 100755 Platformer template/offline.json create mode 100755 Platformer template/scripts/c3runtime.js create mode 100755 Platformer template/scripts/dispatchWorker.js create mode 100755 Platformer template/scripts/jobWorker.js create mode 100755 Platformer template/scripts/main.js create mode 100755 Platformer template/scripts/offlineClient.js create mode 100755 Platformer template/scripts/register-sw.js create mode 100755 Platformer template/scripts/supportCheck.js create mode 100755 Platformer template/style.css create mode 100755 Platformer template/sw.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..52d6ca37c3465963be8a90c9da4b792b655071e8 GIT binary patch literal 6148 zcmeHKJxc>o5S-N%0WDHmzS2q%OPgm%5DTmL10=Bw#K!)r{I2{no&7)zr;T7Ev#>kw z?d{yVo8tBsfX&}tu7MeVDcuo!4`cJ|?jt*?j1lR)#}k%VFBJt8*j%KQIvJf*Sy{fhs2;WA9SLA23!}J6!>ceJ^)U;8jJt{ literal 0 HcmV?d00001 diff --git a/GAMETEST.c3p b/GAMETEST.c3p new file mode 100644 index 0000000000000000000000000000000000000000..d9dd37032f53be7f924bd0347049c5ebe9259264 GIT binary patch literal 180646 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 z zkccwWUZE@j53o^F8F~p^2S`qUoz~`5WkX>v0L6S0~_mO2#XtJ8658tQj zqPE|Zaf<#|4%YSi6KdvZu(h-DE7SnF;O@oC+Q=ryO`8;KNLg>u4B`uhlcK1I(Im+5 zS?IL7VwDy{iXodL3X*0U5y#SAfz_byu;suGwB9xgTWH-=9%OA!-7;zEEry1F>8l@! zxob-QOVer+$F}UKF57vaRV_$HjicFm|9Rl>&ZArRH1Eo(OPzkp=$~CMXX({%dL41< zGMA5EJAPXE-DAgzOf+18+)LKlqefpTEd<7i(=mQII>brRb^HK$7&Pr{sK{%T%5&ap zwMRmnY#?1(5k`*#AV6(YIcd0p9(*p`14;(k^Vy30ln!(XlJs6$rd*GWWr?jLCw}J` zz5J9Mz#GrhPtNdx2nj_<5~uJz0V@N)+qZvQ-(?T~*I}qf{+HrL`rTMfr)U?e|H4k`tLRfB(zsIafMiksk-^p_!vJ?o0bYQ+{W#f;Z>+3 z0Tuze4_k~~UUpeUp^E%N#2~wM!srH3{6GF~2mbzW zUG?mJ)699#^_wbHW1;oy5?1T_WhtU5f++(`*I-P%4CIk#mRl6Gd3xi@ivT9aOLoBX zME-Pbf&xAO0*?S`D#Jno*veb7gRKYDy4_QDbYu0JEAO6k*G0LFnRB}Kb^PLZf*Qx4 z%kK_ac2*QVv}V=^{^{uAH+2HKx4pk}%N=8H8Bg1>U+~1sPno1xf{c^sO~g;-r_Rk& z_&Bfqk<1hG7C>*K93W2bH8~8*n?(JdrSnSAOaUX!{2y>IHfw{l3*&7%5LF{e2%AYj zy39V0QGQ`0aun;!68^t_Q*Jyq8vJKFfa9GpAc!0QbKn3g-?;Q|J~8%Z)91Ae5R+;! zsOTpg;jH8ZM1`r|hv;;9)BDZbAVZ%Uj7_h&>HVJ8erba0f zayJ>sW`--nE2>0?O=+T1Mzjd%AQ0IR9mSwY$$4G23=;kTSp`hRh}K(Z$5U+CgAX{# zc_@{%jXdZM&_1*h0Gcv@A+14Lmp+i^Hx2^<4`V|K@J#1I}Bvz*>I*TgfbBEowl%3>kNNfof$fc4qw7D?`Xu zil3sz%}>yACh*|r!;C}I4=ODVqDnzx`#~u*?H8+aS8>tS?&c1pxL%L;J2i9PYCHNg zw0l-b`oM|ZQ@labKI4o%sW=S^60$D3~Qfpfp`lJ|Y~jyZFG$@$zTSvR^EWGNUV zL5uDLB>@=={dzbwNRa~uqE@^%X?5`GMo0c}cA)wIgOn5CY#UQoTUG!d$aG}9vH~&z zhK=IVl}*s4!vW~p5O~Q5))vM6cGN?YkQ=jqZ;JznJ}jL4qEz^>X4tR0tl!{-dzL-) z`#aQoh3~#znE*f_8!^Dc1|uleO-61RdU26bIU6muTAjfo25)E+ISP=`f<0la^8EX}Ztbg!%HgYB_?yhtyx33S9$}`G&v102Aym)kqfM<(y14RyYJ8 zo~iuGA%I61#hJ2$K7Z%{4BV50u|Xe*J`k9~4g$x@_fcjLp{C87Y2e@8)5af>bQTib zXJsmWrVc6u&^~zEyhWAwXhRe95240l^eOqY!CZ{f(QYkf84XcxlNLHofSx%KpGXPc z9uP1|A8EOo1HaSc4pccqxc) zgGK=v0M0|7zoB4La9`|GUwua$z#pY_7XTdo!womRJmA4cem6i{JV7f?(3qnOd`LV~ zB>)QxWF}x)Aq=dag(ZJq!=g$xk2p|wAex7%P?e% zz<`f>FwSgJ5g!L`)WDDJ{6njd zeeptk0Esg8;v>_*`Q%I7fpN`2+Eu5&aFLtFk5~ipe

Gi8Kl`g`feUomj#^nSDE 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%0A5%m_PO*V84?fv&&Duq6nw{Lpti^Twxo|kNT1Q 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 S2?iX6O(SjR}|-qqqr?Y=#6DQ9+SxzU+mS zft_f&Wt)Oy#jS6YZqB)OYkPOSUVG=$MT{|C^4uR!e&6r&d49j=i_tU&|NbZyom2i$ z(Tl~K*41Wbn>2mjI)~kp(=X{*O+FV-SQJHZqq4|9f{elawZCP*vH8fpG2h)0Wx_M6 zctURFy|&kuR_0I*Uv|GU+kWHm!I8ThrfTK({nHQ=X~Z0#LoIh+MAkMHY`P# z(1}S%Awfn=sVL|h_yK0-!Vrz|@YUr{m*MeNNy!4c%?5f_tq2Jbya5gbE^8I} zbbYm4WYvMmtcS=_9O9e^TOTfjva&U*$;r_2s7p%oanw!trl(t(o99st4{Dtj?%eTV zL~fqt((7*>+s+GVG|mL@$eq@**v698TcXiOVng9NTivee0|SFDL)D{?VWpc2uu1O> zc&Geu>HLKr^bE0M9iM*uW^wU)SVRO#Q3NR^1BphbrA0`m0A$d@??G4k#&8JRv7;Vu zefPNQ$7?_JAh>n{{U*XOeosx^Q+g?#h74*FQAm;qi;F1`5E&hdj{DM?HsGZ_ey09MZc&vRg2RfwmB z2=w*epyxs}XVAza_;MbobZ2yKw)D4&+cwKeYL=pDz%xP}0|9?fIn(i3RFW0cA09@= z16+Ss?=u3=doo(`eyE%dhp(}z(KL3`A2#NULP>D}Xc!$hdIy8fD~{TGKHujw!;)i8 zXA`2n`oC%XJK7d>{PT>#c<}*i{#7-jdj%!Wfc8~r;s34wOMn3Y*EgJK6ii?p00000 LNkvXXu0mjfnWFNZ literal 0 HcmV?d00001 diff --git a/Platformer template/icons/icon-256.png b/Platformer template/icons/icon-256.png new file mode 100755 index 0000000000000000000000000000000000000000..0916f5734ed4474cfe03f4a496836ac3cb11eb8f GIT binary patch literal 98347 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

d*qGs2OXG_z~}TNeSxWgAp# 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 N002ovPDHLkV1g8}tnB~* literal 0 HcmV?d00001 diff --git a/Platformer template/icons/loading-logo.png b/Platformer template/icons/loading-logo.png new file mode 100755 index 0000000000000000000000000000000000000000..533e118407dd7f502c9ee85d86f08844fcd9e1bf GIT binary patch literal 9375 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 literal 0 HcmV?d00001 diff --git a/Platformer template/images/jumpthrutile-sheet0.png b/Platformer template/images/jumpthrutile-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..9ab337d8e3a1a96f317e27f2962ccbd97819f2bf GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzdrud~kO=p;H#TxIC70j3J*&R0^p7;v<`PhFXkcJuV&Q-?bRXZgsb7D9^%6_2Vs)BD8PF&O MPgg&ebxsLQ063o^(EtDd literal 0 HcmV?d00001 diff --git a/Platformer template/images/shared-0-sheet0.png b/Platformer template/images/shared-0-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..12040b044203d39802b10c3d0901e0f53d1b95ac GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ8J;eVArbD$DJ2?z&l@x}2)<#s z-`7}p=owdAAbU^Sfea3w_W~7x2M#G1KIDIA)OPJD!wE)(hRcFqiWvOdFI;Afkaf&w zPq0W*kZE|-(OATAN09j?!v^I!-Wk!dhc_v1YhsvV%C5!o;OQX;3x=fui?%Zxc)3(r zF=Q9|=(F==#2PHvs(5gl-P*+oR~Q#78nieyEC|kA&cNW3Klh-->pn%G8yP%Z{an^L HB{Ts5Tt-Qn literal 0 HcmV?d00001 diff --git a/Platformer template/images/solidtile-sheet0.png b/Platformer template/images/solidtile-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..e25b6ea53109511ef867ae80998ce044acc7a616 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzCr=m0kO=p;Hyk+`6a-itd<(7# z9Qju%vS#6oM|PVzr~Q0;&F;9ar)Bo^RSb+wEF1y~4h>L-fbOMdKkHfLTE90PG~Dc* Q2sDks)78&qol`;+0MNc9c>n+a literal 0 HcmV?d00001 diff --git a/Platformer template/index.html b/Platformer template/index.html new file mode 100755 index 0000000..33dfc23 --- /dev/null +++ b/Platformer template/index.html @@ -0,0 +1,31 @@ + + + + +Platformer template + + + + + + + + + + + + +

+ + + + + + + + \ No newline at end of file diff --git a/Platformer template/offline.json b/Platformer template/offline.json new file mode 100755 index 0000000..5e24a80 --- /dev/null +++ b/Platformer template/offline.json @@ -0,0 +1 @@ +{"version":1548962799669,"fileList":["scripts/c3runtime.js","data.json","style.css","scripts/offlineClient.js","images/shared-0-sheet0.png","images/backgroundtile-sheet0.png","images/solidtile-sheet0.png","images/jumpthrutile-sheet0.png","scripts/main.js","scripts/dispatchWorker.js","scripts/jobWorker.js","scripts/supportCheck.js","icons/icon-16.png","icons/icon-32.png","icons/icon-114.png","icons/icon-128.png","icons/icon-256.png","icons/loading-logo.png","scripts/register-sw.js"]} \ No newline at end of file diff --git a/Platformer template/scripts/c3runtime.js b/Platformer template/scripts/c3runtime.js new file mode 100755 index 0000000..5e7ee8a --- /dev/null +++ b/Platformer template/scripts/c3runtime.js @@ -0,0 +1,630 @@ +// Generated by Construct 3, the game and app creator :: https://www.construct.net +"use strict"; +// c3/3rdparty/glmatrix.js +(function(e,t){if('object'==typeof exports&&'object'==typeof module)module.exports=t();else if('function'==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)('object'==typeof exports?exports:e)[a]=r[a]}})(this,function(){var e=Math.acos,t=Math.round,r=Math.min,o=Math.floor,l=Math.ceil,n=Math.sqrt,s=Math.pow,d=Math.cos,u=Math.sin,i=Math.max,m=Math.abs,c=Math.PI;return function(e){function t(r){if(a[r])return a[r].exports;var o=a[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(a,'a',a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=4)}([function(e,t){'use strict';Object.defineProperty(t,'__esModule',{value:!0}),t.setMatrixArrayType=function(e){t.ARRAY_TYPE=a=e},t.toRadian=function(e){return e*l},t.equals=function(e,t){return m(e-t)<=r*i(1,m(e),m(t))};var r=t.EPSILON=1e-6,a=t.ARRAY_TYPE='undefined'==typeof Float32Array?Array:Float32Array,o=t.RANDOM=Math.random,l=c/180},function(e,t,a){'use strict';function r(e,t,a){var r=t[0],o=t[1],l=t[2],s=t[3],n=t[4],d=t[5],u=t[6],i=t[7],c=t[8],m=a[0],f=a[1],P=a[2],p=a[3],E=a[4],y=a[5],A=a[6],O=a[7],R=a[8];return e[0]=m*r+f*s+P*u,e[1]=m*o+f*n+P*i,e[2]=m*l+f*d+P*c,e[3]=p*r+E*s+y*u,e[4]=p*o+E*n+y*i,e[5]=p*l+E*d+y*c,e[6]=A*r+O*s+R*u,e[7]=A*o+O*n+R*i,e[8]=A*l+O*d+R*c,e}function o(e,t,a){return e[0]=t[0]-a[0],e[1]=t[1]-a[1],e[2]=t[2]-a[2],e[3]=t[3]-a[3],e[4]=t[4]-a[4],e[5]=t[5]-a[5],e[6]=t[6]-a[6],e[7]=t[7]-a[7],e[8]=t[8]-a[8],e}Object.defineProperty(t,'__esModule',{value:!0}),t.sub=t.mul=void 0,t.create=function(){var e=new c.ARRAY_TYPE(9);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromMat4=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e},t.clone=function(e){var t=new c.ARRAY_TYPE(9);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t},t.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e},t.fromValues=function(e,t,a,r,o,l,s,n,d){var u=new c.ARRAY_TYPE(9);return u[0]=e,u[1]=t,u[2]=a,u[3]=r,u[4]=o,u[5]=l,u[6]=s,u[7]=n,u[8]=d,u},t.set=function(e,t,a,r,o,l,s,n,d,u){return e[0]=t,e[1]=a,e[2]=r,e[3]=o,e[4]=l,e[5]=s,e[6]=n,e[7]=d,e[8]=u,e},t.identity=function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.transpose=function(e,t){if(e===t){var a=t[1],r=t[2],o=t[5];e[1]=t[3],e[2]=t[6],e[3]=a,e[5]=t[7],e[6]=r,e[7]=o}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e},t.invert=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8],c=i*s-n*u,m=-i*l+n*d,f=u*l-s*d,P=a*c+r*m+o*f;return P?(P=1/P,e[0]=c*P,e[1]=(-i*r+o*u)*P,e[2]=(n*r-o*s)*P,e[3]=m*P,e[4]=(i*a-o*d)*P,e[5]=(-n*a+o*l)*P,e[6]=f*P,e[7]=(-u*a+r*d)*P,e[8]=(s*a-r*l)*P,e):null},t.adjoint=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8];return e[0]=s*i-n*u,e[1]=o*u-r*i,e[2]=r*n-o*s,e[3]=n*d-l*i,e[4]=a*i-o*d,e[5]=o*l-a*n,e[6]=l*u-s*d,e[7]=r*d-a*u,e[8]=a*s-r*l,e},t.determinant=function(e){var t=e[0],a=e[1],r=e[2],o=e[3],l=e[4],s=e[5],n=e[6],d=e[7],u=e[8];return t*(u*l-s*d)+a*(-u*o+s*n)+r*(d*o-l*n)},t.multiply=r,t.translate=function(e,t,a){var r=t[0],o=t[1],l=t[2],s=t[3],n=t[4],d=t[5],u=t[6],i=t[7],c=t[8],m=a[0],f=a[1];return e[0]=r,e[1]=o,e[2]=l,e[3]=s,e[4]=n,e[5]=d,e[6]=m*r+f*s+u,e[7]=m*o+f*n+i,e[8]=m*l+f*d+c,e},t.rotate=function(e,t,a){var r=t[0],o=t[1],l=t[2],n=t[3],i=t[4],m=t[5],f=t[6],P=t[7],p=t[8],E=u(a),s=d(a);return e[0]=s*r+E*n,e[1]=s*o+E*i,e[2]=s*l+E*m,e[3]=s*n-E*r,e[4]=s*i-E*o,e[5]=s*m-E*l,e[6]=f,e[7]=P,e[8]=p,e},t.scale=function(e,t,a){var r=a[0],o=a[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=o*t[3],e[4]=o*t[4],e[5]=o*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e},t.fromTranslation=function(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=t[0],e[7]=t[1],e[8]=1,e},t.fromRotation=function(e,t){var a=u(t),r=d(t);return e[0]=r,e[1]=a,e[2]=0,e[3]=-a,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromScaling=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=t[1],e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromMat2d=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=0,e[3]=t[2],e[4]=t[3],e[5]=0,e[6]=t[4],e[7]=t[5],e[8]=1,e},t.fromQuat=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a+a,n=r+r,d=o+o,u=a*s,i=r*s,c=r*n,m=o*s,f=o*n,P=o*d,p=l*s,E=l*n,y=l*d;return e[0]=1-c-P,e[3]=i-y,e[6]=m+E,e[1]=i+y,e[4]=1-u-P,e[7]=f-p,e[2]=m-E,e[5]=f+p,e[8]=1-u-c,e},t.normalFromMat4=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8],c=t[9],m=t[10],f=t[11],P=t[12],p=t[13],E=t[14],y=t[15],A=a*n-r*s,O=a*d-o*s,R=a*u-l*s,L=r*d-o*n,S=r*u-l*n,_=o*u-l*d,N=i*p-c*P,I=i*E-m*P,Y=i*y-f*P,q=c*E-m*p,g=c*y-f*p,M=m*y-f*E,v=A*M-O*g+R*q+L*Y-S*I+_*N;return v?(v=1/v,e[0]=(n*M-d*g+u*q)*v,e[1]=(d*Y-s*M-u*I)*v,e[2]=(s*g-n*Y+u*N)*v,e[3]=(o*g-r*M-l*q)*v,e[4]=(a*M-o*Y+l*I)*v,e[5]=(r*Y-a*g-l*N)*v,e[6]=(p*_-E*S+y*L)*v,e[7]=(E*R-P*_-y*O)*v,e[8]=(P*S-p*R+y*A)*v,e):null},t.projection=function(e,t,a){return e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/a,e[5]=0,e[6]=-1,e[7]=1,e[8]=1,e},t.str=function(e){return'mat3('+e[0]+', '+e[1]+', '+e[2]+', '+e[3]+', '+e[4]+', '+e[5]+', '+e[6]+', '+e[7]+', '+e[8]+')'},t.frob=function(e){return n(s(e[0],2)+s(e[1],2)+s(e[2],2)+s(e[3],2)+s(e[4],2)+s(e[5],2)+s(e[6],2)+s(e[7],2)+s(e[8],2))},t.add=function(e,t,a){return e[0]=t[0]+a[0],e[1]=t[1]+a[1],e[2]=t[2]+a[2],e[3]=t[3]+a[3],e[4]=t[4]+a[4],e[5]=t[5]+a[5],e[6]=t[6]+a[6],e[7]=t[7]+a[7],e[8]=t[8]+a[8],e},t.subtract=o,t.multiplyScalar=function(e,t,a){return e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e[3]=t[3]*a,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*a,e},t.multiplyScalarAndAdd=function(e,t,a,r){return e[0]=t[0]+a[0]*r,e[1]=t[1]+a[1]*r,e[2]=t[2]+a[2]*r,e[3]=t[3]+a[3]*r,e[4]=t[4]+a[4]*r,e[5]=t[5]+a[5]*r,e[6]=t[6]+a[6]*r,e[7]=t[7]+a[7]*r,e[8]=t[8]+a[8]*r,e},t.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},t.equals=function(e,t){var a=e[0],r=e[1],o=e[2],l=e[3],s=e[4],n=e[5],d=e[6],u=e[7],f=e[8],P=t[0],p=t[1],E=t[2],y=t[3],A=t[4],O=t[5],R=t[6],L=t[7],S=t[8];return m(a-P)<=c.EPSILON*i(1,m(a),m(P))&&m(r-p)<=c.EPSILON*i(1,m(r),m(p))&&m(o-E)<=c.EPSILON*i(1,m(o),m(E))&&m(l-y)<=c.EPSILON*i(1,m(l),m(y))&&m(s-A)<=c.EPSILON*i(1,m(s),m(A))&&m(n-O)<=c.EPSILON*i(1,m(n),m(O))&&m(d-R)<=c.EPSILON*i(1,m(d),m(R))&&m(u-L)<=c.EPSILON*i(1,m(u),m(L))&&m(f-S)<=c.EPSILON*i(1,m(f),m(S))};var l=a(0),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(l);var f=t.mul=r,P=t.sub=o},function(a,s,f){'use strict';function P(){var e=new Y.ARRAY_TYPE(3);return e[0]=0,e[1]=0,e[2]=0,e}function p(e){var t=e[0],a=e[1],r=e[2];return n(t*t+a*a+r*r)}function E(e,t,a){var r=new Y.ARRAY_TYPE(3);return r[0]=e,r[1]=t,r[2]=a,r}function y(e,t,a){return e[0]=t[0]-a[0],e[1]=t[1]-a[1],e[2]=t[2]-a[2],e}function A(e,t,a){return e[0]=t[0]*a[0],e[1]=t[1]*a[1],e[2]=t[2]*a[2],e}function O(e,t,a){return e[0]=t[0]/a[0],e[1]=t[1]/a[1],e[2]=t[2]/a[2],e}function R(e,t){var a=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return n(a*a+r*r+o*o)}function L(e,t){var a=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return a*a+r*r+o*o}function S(e){var t=e[0],a=e[1],r=e[2];return t*t+a*a+r*r}function _(e,t){var a=t[0],r=t[1],o=t[2],l=a*a+r*r+o*o;return 0l?c:e(l)},s.str=function(e){return'vec3('+e[0]+', '+e[1]+', '+e[2]+')'},s.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},s.equals=function(e,t){var a=e[0],r=e[1],o=e[2],l=t[0],s=t[1],n=t[2];return m(a-l)<=Y.EPSILON*i(1,m(a),m(l))&&m(r-s)<=Y.EPSILON*i(1,m(r),m(s))&&m(o-n)<=Y.EPSILON*i(1,m(o),m(n))};var I=f(0),Y=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(I),q=s.sub=y,g=s.mul=A,M=s.div=O,v=s.dist=R,h=s.sqrDist=L,T=s.len=p,b=s.sqrLen=S,x=s.forEach=function(){var e=P();return function(t,a,o,s,n,d){var u,i;for(a||(a=3),o||(o=0),i=s?r(s*a+o,t.length):t.length,u=o;ut[5]&t[0]>t[10]?(r=2*n(1+t[0]-t[5]-t[10]),e[3]=(t[6]-t[9])/r,e[0]=.25*r,e[1]=(t[1]+t[4])/r,e[2]=(t[8]+t[2])/r):t[5]>t[10]?(r=2*n(1+t[5]-t[0]-t[10]),e[3]=(t[8]-t[2])/r,e[0]=(t[1]+t[4])/r,e[1]=.25*r,e[2]=(t[6]+t[9])/r):(r=2*n(1+t[10]-t[0]-t[5]),e[3]=(t[1]-t[4])/r,e[0]=(t[8]+t[2])/r,e[1]=(t[6]+t[9])/r,e[2]=.25*r),e},t.fromRotationTranslationScale=function(e,t,a,r){var o=t[0],l=t[1],s=t[2],n=t[3],d=o+o,u=l+l,i=s+s,c=o*d,m=o*u,f=o*i,P=l*u,p=l*i,E=s*i,y=n*d,A=n*u,O=n*i,R=r[0],L=r[1],S=r[2];return e[0]=(1-(P+E))*R,e[1]=(m+O)*R,e[2]=(f-A)*R,e[3]=0,e[4]=(m-O)*L,e[5]=(1-(c+E))*L,e[6]=(p+y)*L,e[7]=0,e[8]=(f+A)*S,e[9]=(p-y)*S,e[10]=(1-(c+P))*S,e[11]=0,e[12]=a[0],e[13]=a[1],e[14]=a[2],e[15]=1,e},t.fromRotationTranslationScaleOrigin=function(e,t,a,r,l){var o=t[0],s=t[1],n=t[2],d=t[3],u=o+o,i=s+s,c=n+n,m=o*u,f=o*i,P=o*c,p=s*i,E=s*c,y=n*c,A=d*u,O=d*i,R=d*c,L=r[0],S=r[1],_=r[2],N=l[0],I=l[1],Y=l[2];return e[0]=(1-(p+y))*L,e[1]=(f+R)*L,e[2]=(P-O)*L,e[3]=0,e[4]=(f-R)*S,e[5]=(1-(m+y))*S,e[6]=(E+A)*S,e[7]=0,e[8]=(P+O)*_,e[9]=(E-A)*_,e[10]=(1-(m+p))*_,e[11]=0,e[12]=a[0]+N-(e[0]*N+e[4]*I+e[8]*Y),e[13]=a[1]+I-(e[1]*N+e[5]*I+e[9]*Y),e[14]=a[2]+Y-(e[2]*N+e[6]*I+e[10]*Y),e[15]=1,e},t.fromQuat=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a+a,n=r+r,d=o+o,u=a*s,i=r*s,c=r*n,m=o*s,f=o*n,P=o*d,p=l*s,E=l*n,y=l*d;return e[0]=1-c-P,e[1]=i+y,e[2]=m-E,e[3]=0,e[4]=i-y,e[5]=1-u-P,e[6]=f+p,e[7]=0,e[8]=m+E,e[9]=f-p,e[10]=1-u-c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},t.frustum=function(e,t,a,r,o,l,s){var n=1/(a-t),d=1/(o-r),u=1/(l-s);return e[0]=2*l*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*l*d,e[6]=0,e[7]=0,e[8]=(a+t)*n,e[9]=(o+r)*d,e[10]=(s+l)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*(s*l)*u,e[15]=0,e},t.perspective=function(e,t,a,r,o){var s=1/l(t/2),n=1/(r-o);return e[0]=s/a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(o+r)*n,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*o*r*n,e[15]=0,e},t.perspectiveFromFieldOfView=function(e,t,a,r){var o=l(t.upDegrees*c/180),s=l(t.downDegrees*c/180),n=l(t.leftDegrees*c/180),d=l(t.rightDegrees*c/180),u=2/(n+d),i=2/(o+s);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=-(.5*((n-d)*u)),e[9]=.5*((o-s)*i),e[10]=r/(a-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*a/(a-r),e[15]=0,e},t.ortho=function(e,t,a,r,o,l,s){var n=1/(t-a),d=1/(r-o),u=1/(l-s);return e[0]=-2*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+a)*n,e[13]=(o+r)*d,e[14]=(s+l)*u,e[15]=1,e},t.lookAt=function(e,t,a,r){var o=void 0,l=void 0,s=void 0,d=void 0,u=void 0,i=void 0,c=void 0,f=void 0,p=void 0,E=void 0,y=t[0],A=t[1],O=t[2],R=r[0],L=r[1],S=r[2],_=a[0],N=a[1],I=a[2];return m(y-_)p&&(p=-p,i=-i,c=-c,m=-m,f=-f),1e-6<1-p?(P=e(p),E=u(P),y=u((1-l)*P)/E,A=u(l*P)/E):(y=1-l,A=l),r[0]=y*t+A*i,r[1]=y*s+A*c,r[2]=y*n+A*m,r[3]=y*d+A*f,r}function P(e,t){var a=t[0]+t[4]+t[8],r=void 0;if(0t[0]&&(o=1),t[8]>t[3*o+o]&&(o=2);var l=(o+1)%3,s=(o+2)%3;r=n(t[3*o+o]-t[3*l+l]-t[3*s+s]+1),e[o]=.5*r,r=.5/r,e[3]=(t[3*l+s]-t[3*s+l])*r,e[l]=(t[3*l+o]+t[3*o+l])*r,e[s]=(t[3*s+o]+t[3*o+s])*r}return e}Object.defineProperty(a,'__esModule',{value:!0}),a.setAxes=a.sqlerp=a.rotationTo=a.equals=a.exactEquals=a.normalize=a.sqrLen=a.squaredLength=a.len=a.length=a.lerp=a.dot=a.scale=a.mul=a.add=a.set=a.copy=a.fromValues=a.clone=void 0,a.create=l,a.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},a.setAxisAngle=s,a.getAxisAngle=function(t,a){var r=2*e(a[3]),o=u(r/2);return 0==o?(t[0]=1,t[1]=0,t[2]=0):(t[0]=a[0]/o,t[1]=a[1]/o,t[2]=a[2]/o),r},a.multiply=i,a.rotateX=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i+s*n,e[1]=o*i+l*n,e[2]=l*i-o*n,e[3]=s*i-r*n,e},a.rotateY=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i-l*n,e[1]=o*i+s*n,e[2]=l*i+r*n,e[3]=s*i-o*n,e},a.rotateZ=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i+o*n,e[1]=o*i-r*n,e[2]=l*i+s*n,e[3]=s*i-l*n,e},a.calculateW=function(e,t){var a=t[0],r=t[1],o=t[2];return e[0]=a,e[1]=r,e[2]=o,e[3]=n(m(1-a*a-r*r-o*o)),e},a.slerp=f,a.invert=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a*a+r*r+o*o+l*l,n=s?1/s:0;return e[0]=-a*n,e[1]=-r*n,e[2]=-o*n,e[3]=l*n,e},a.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},a.fromMat3=P,a.fromEuler=function(e,t,a,r){var o=.5*c/180;t*=o,a*=o,r*=o;var l=u(t),s=d(t),n=u(a),i=d(a),m=u(r),f=d(r);return e[0]=l*i*f-s*n*m,e[1]=s*n*f+l*i*m,e[2]=s*i*m-l*n*f,e[3]=s*i*f+l*n*m,e},a.str=function(e){return'quat('+e[0]+', '+e[1]+', '+e[2]+', '+e[3]+')'};var p=r(0),E=o(p),y=r(1),A=o(y),O=r(2),R=o(O),L=r(3),S=o(L),_=a.clone=S.clone,N=a.fromValues=S.fromValues,I=a.copy=S.copy,Y=a.set=S.set,q=a.add=S.add,g=a.mul=i,M=a.scale=S.scale,v=a.dot=S.dot,h=a.lerp=S.lerp,T=a.length=S.length,b=a.len=T,x=a.squaredLength=S.squaredLength,D=a.sqrLen=x,k=a.normalize=S.normalize,w=a.exactEquals=S.exactEquals,V=a.equals=S.equals,j=a.rotationTo=function(){var e=R.create(),t=R.fromValues(1,0,0),r=R.fromValues(0,1,0);return function(o,l,a){var n=R.dot(l,a);return-.999999>n?(R.cross(e,t,l),1e-6>R.len(e)&&R.cross(e,r,l),R.normalize(e,e),s(o,e,Math.PI),o):.999999=i&&0<=j&&1>=j}function e(d,a,b){return(a[0]-d[0])*(b[1]-d[1])-(b[0]-d[0])*(a[1]-d[1])}function a(d,a,b){return 0e(d,a,b)}function g(d,a,b){return 0>=e(d,a,b)}function h(d,a,b,c){var f=Math.sqrt;if(!c)return 0===e(d,a,b);var g=tmpPoint1,h=tmpPoint2;g[0]=a[0]-d[0],g[1]=a[1]-d[1],h[0]=b[0]-a[0],h[1]=b[1]-a[1];var i=g[0]*h[0]+g[1]*h[1],j=f(g[0]*g[0]+g[1]*g[1]),k=f(h[0]*h[0]+h[1]*h[1]),l=Math.acos(i/(j*k));return lb?b%c+c:b%c]}function m(a){a.length=0}function n(a,b,c,d){for(var e=c;eJ.length)return e;if(w++,w>s)return console.warn("quickDecomp: max level ("+s+") reached."),e;for(var v=0;vD&&(D+=c.length),d=x,Dd[c][0])&&(c=e);return!a(l(b,c-1),l(b,c),l(b,c+1))&&(j(b),!0)}}} + +// c3/3rdparty/localforage.js +!function(c){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=c();else if("function"==typeof define&&define.amd)define([],c);else{var a;a="undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window,a.localforage=c()}}(function(){return function l(m,a,b){function d(e,f){if(!a[e]){if(!m[e]){var g="function"==typeof require&&require;if(!f&&g)return g(e,!0);if(c)return c(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var j=a[e]={exports:{}};m[e][0].call(j.exports,function(b){var a=m[e][1][b];return d(a||b)},j,j.exports,l,m,a,b)}return a[e].exports}for(var c="function"==typeof require&&require,e=0;e=a.oldVersion&&b.createObjectStore(O)}catch(b){if("ConstraintError"!==b.name)throw b;console.warn("The database \""+g.name+"\" has been upgraded from version "+a.oldVersion+" to version "+a.newVersion+", but the storage \""+g.storeName+"\" already exists.")}}),e.onerror=function(b){b.preventDefault(),c(e.error)},e.onsuccess=function(){h(e.result),k(g)}})}function n(b){return m(b,!1)}function o(b){return m(b,!0)}function p(g,a){if(!g.db)return!0;var b=!g.db.objectStoreNames.contains(g.storeName),c=g.versiong.db.version;if(c&&(g.version!==a&&console.warn("The database \""+g.name+"\" can't be downgraded from version "+g.db.version+" to version "+g.version+"."),g.version=g.db.version),d||b){if(b){var e=g.db.version+1;e>g.version&&(g.version=e)}return!0}return!1}function q(e){return new N(function(a,b){var c=new FileReader;c.onerror=b,c.onloadend=function(b){var c=btoa(b.target.result||"");a({__local_forage_encoded_blob:!0,data:c,type:e.type})},c.readAsBinaryString(e)})}function r(b){return e([d(atob(b.data))],{type:b.type})}function s(b){return b&&b.__local_forage_encoded_blob}function t(d){var e=this,a=e._initReady().then(function(){var b=M[e._dbInfo.name];if(b&&b.dbReady)return b.dbReady});return B(a,d,d),a}function u(e){j(e);for(var a=M[e.name],f=a.forages,b=0;b>4,j[h++]=(15&c)<<4|d>>2,j[h++]=(3&d)<<6|63&e;return i}function y(e){var a,b=new Uint8Array(e),c="";for(a=0;a>2],c+=T[(3&b[a])<<4|b[a+1]>>4],c+=T[(15&b[a+1])<<2|b[a+2]>>6],c+=T[63&b[a+2]];return 2==b.length%3?c=c.substring(0,c.length-1)+"=":1==b.length%3&&(c=c.substring(0,c.length-2)+"=="),c}function z(j,a,i,c){var d=this;j=h(j);var b=new N(function(e,f){d.ready().then(function(){void 0===a&&(a=null);var g=a,h=d._dbInfo;h.serializer.serialize(a,function(a,b){b?f(b):h.db.transaction(function(b){b.executeSql("INSERT OR REPLACE INTO "+h.storeName+" (key, value) VALUES (?, ?)",[j,a],function(){e(g)},function(c,a){f(a)})},function(a){if(a.code===a.QUOTA_ERR){if(0e?void a(null):void j.ready().then(function(){v(j._dbInfo,Q,function(c,d){if(c)return b(c);try{var f=d.objectStore(j._dbInfo.storeName),g=!1,h=f.openCursor();h.onsuccess=function(){var b=h.result;return b?void(0===e?a(b.key):g?a(b.key):(g=!0,b.advance(e))):void a(null)},h.onerror=function(){b(h.error)}}catch(c){b(c)}})}).catch(b)});return g(b,a),b},keys:function(d){var i=this,a=new N(function(d,b){i.ready().then(function(){v(i._dbInfo,Q,function(a,c){if(a)return b(a);try{var e=c.objectStore(i._dbInfo.storeName),f=e.openCursor(),g=[];f.onsuccess=function(){var a=f.result;return a?void(g.push(a.key),a.continue()):void d(g)},f.onerror=function(){b(f.error)}}catch(c){b(c)}})}).catch(b)});return g(a,d),a}},T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",U=/^~~local_forage_type~([^~]+)~/,V="__lfsc__:",W="__lfsc__:".length,X="arbf",Y="blob",Z="si08",$="ui08",_="uic8",aa="si16",ba="si32",ca="ur16",da="ui32",ea="fl32",fa="fl64",ga=9+"arbf".length,ha=Object.prototype.toString,ia={serialize:function(g,a){var b="";if(g&&(b=ha.call(g)),g&&("[object ArrayBuffer]"===b||g.buffer&&"[object ArrayBuffer]"===ha.call(g.buffer))){var c,d=V;g instanceof ArrayBuffer?(c=g,d+=X):(c=g.buffer,"[object Int8Array]"===b?d+=Z:"[object Uint8Array]"===b?d+=$:"[object Uint8ClampedArray]"===b?d+=_:"[object Int16Array]"===b?d+=aa:"[object Uint16Array]"===b?d+=ca:"[object Int32Array]"===b?d+=ba:"[object Uint32Array]"===b?d+=da:"[object Float32Array]"===b?d+=ea:"[object Float64Array]"===b?d+=fa:a(new Error("Failed to get type for BinaryArray"))),a(d+y(c))}else if("[object Blob]"===b){var e=new FileReader;e.onload=function(){var b="~~local_forage_type~"+g.type+"~"+y(this.result);a(V+Y+b)},e.readAsArrayBuffer(g)}else try{a(JSON.stringify(g))}catch(b){console.error("Couldn't convert value into a JSON string: ",g),a(null,b)}},deserialize:function(g){if(g.substring(0,W)!==V)return JSON.parse(g);var a,h=g.substring(ga),c=g.substring(W,ga);if(c===Y&&U.test(h)){var d=h.match(U);a=d[1],h=h.substring(d[0].length)}var i=x(h);switch(c){case X:return i;case Y:return e([i],{type:a});case Z:return new Int8Array(i);case $:return new Uint8Array(i);case _:return new Uint8ClampedArray(i);case aa:return new Int16Array(i);case ca:return new Uint16Array(i);case ba:return new Int32Array(i);case da:return new Uint32Array(i);case ea:return new Float32Array(i);case fa:return new Float64Array(i);default:throw new Error("Unkown type: "+c);}},stringToBuffer:x,bufferToString:y},ja={_driver:"webSQLStorage",_initStorage:function(f){var g=this,b={db:null};if(f)for(var a in f)b[a]="string"==typeof f[a]?f[a]:f[a].toString();var c=new N(function(c,e){try{b.db=openDatabase(b.name,b.version+"",b.description,b.size)}catch(b){return e(b)}b.db.transaction(function(a){a.executeSql("CREATE TABLE IF NOT EXISTS "+b.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],function(){g._dbInfo=b,c()},function(c,a){e(a)})})});return b.serializer=ia,c},_support:function(){return"function"==typeof openDatabase}(),iterate:function(k,a){var f=this,b=new N(function(a,c){f.ready().then(function(){var b=f._dbInfo;b.db.transaction(function(d){d.executeSql("SELECT * FROM "+b.storeName,[],function(e,c){for(var d=c.rows,f=d.length,g=0;g{e="Windows";const b=a.split(" ")[2];b&&("5.0"===b?f="2000":"5.1"===b?f="XP":"5.2"===b?f="XP":"6.0"===b?f="Vista":"6.1"===b?f="7":"6.2"===b?f="8":"6.3"===b?f="8.1":"10.0"===b?f="10":void 0)}),a("isOSX",d.OSX,(a)=>{e="Mac OS X";const b=a.split(" ")[3];b&&(f=b.replace("_","."))}),a("isLinux",c.linux,()=>{e="Linux"}),a("isChromeOS",c.chromeOS,()=>{e="Chrome OS"}),a("isAndroid",!c.windowsTizen&&d.android,(a)=>{e="Android";const b=a.split(" ")[1];b&&(f=b)}),a("isTizen",d.tizen,(a)=>{e="Tizen";const b=a.split(" ")[1];b&&(f=b)}),a("isIPhone",!c.windowsTizen&&d.iphone,(a)=>{e="iOS";const b=a.split(" ")[2];b&&(f=b.replace("_","."))}),a("isIPad",!c.windowsTizen&&d.ipad,(a)=>{e="iOS";const b=a.split(" ")[3];b&&(f=b.replace("_","."))}),a("isWindowsPhone",d.winPhone,(a)=>{e="Windows Phone";const b=a.split(" ")[2];b&&(f=b)}),a("isWindowsPhoneOS",d.winPhoneOS,(a)=>{e="Windows Phone";const b=a.split(" ")[3];b&&(f=b)}),a("isBlackberry",c.blackberry,()=>{e="Blackberry",f="10",h="stock",k="webkit"}),a("isChrome",!c.edge&&!c.opera&&d.chrome,(a)=>{h="Chrome",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isOpera",d.opera,(a)=>{h="Opera",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isChromium",d.chromium,(a)=>{h="Chromium",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isFirefox",d.firefox,(a)=>{h="Firefox",k="Gecko";const b=a.split("/")[1];b&&(i=b)}),a("isInternetExplorer",d.ie,(a)=>{h="Internet Explorer",k="Trident";const b=a.split(" ")[1];b&&(i=b)}),a("isTrident","Internet Explorer"!=h&&c.trident,()=>{k="Trident";const a=/rv:[0-9.]+/i.exec(b);if(a&&a.length){h="Internet Explorer";const b=a[0].split(":")[1];b&&(i=b)}}),a("isEdge",d.edge,(a)=>{h="Edge",k="Edge";const b=a.split("/")[1];b&&(i=b)}),a("isSafari",c.safari&&!c.nokia&&!c.chrome&&!c.chromium&&!c.genericIE&&!c.blackberry,()=>{h="Safari",k="WebKit";const a=/version\/[0-9.]+/i.exec(b),c=/crios\/[0-9.]+/i.exec(b),d=/fxios\/[0-9.]+/i.exec(b);if(a&&a.length){const b=a[0].split("/")[1];b&&(i=b)}if(c&&c.length){h="Chrome for iOS";const a=c[0].split("/")[1];a&&(i=a)}if(d&&d.length){h="Firefox for iOS";const a=d[0].split("/")[1];a&&(i=a)}}),a("isSilk",d.silk,(a)=>{h="Silk";const b=a.split("/")[1];b&&(i=b)}),a("isCrosswalk",c.crosswalk,()=>l="crosswalk"),a("isCordova",self["device"]&&(self["device"]["cordova"]||self["device"]["phonegap"]),()=>l="cordova"),a("isNWJS",d.nwjs,(a)=>{l="nwjs",h="NW.js",k="Chromium";const b=a.split("/")[1];b&&(i=b)}),a("isAmazonWebApp",c.amazonwebapp,()=>l="webapp"),a("isHomeScreenWebApp","nwjs"!=l&&"undefined"!=typeof window&&(window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches||navigator["standalone"]),()=>l="webapp"),a("isFalseSafari","Safari"==h&&("Android"==e||"Tizen"==e||"Blackberry"==e),()=>h="stock"),a("isAndroidWebview","Chrome"==h&&"browser"==l&&c.webview,()=>l="webview"),a("isFirefoxOS","Firefox"==h&&e=="(unknown)",()=>e="Firefox OS"),a("isAndroidFallback",e=="(unknown)"&&!c.windowsTizen&&c.android,()=>e="Android"),a("isTridentFallback",e=="(unknown)"&&c.trident,()=>k="Trident"),a("isWebkitFallback",e=="(unknown)"&&c.webkit,()=>k="WebKit"),a("is64Bit",((a)=>a.test(b)||a.test(navigator.platform)||"x64"===navigator.cpuClass)(/x86_64|x86-64|win64|x64;|x64\)|x64_|amd64|wow64|ia64|arm64|arch64|sparc64|ppc64|irix64/i),()=>g="64-bit"),a("is32Bit",((a)=>a.test(b)||a.test(navigator.platform)||"x86"===navigator.cpuClass)(/x86;|x86\)|i86|i386|i486|i586|i686|armv1|armv2|armv3|armv4|armv5|armv6|armv7/i),()=>g="32-bit"),a("is64BitFallback",g=="(unknown)"&&"Mac OS X"==e&&10.7<=parseFloat(f),()=>g="64-bit"),a("is32BitFallback",g=="(unknown)"&&"Windows"==e||"Android"==e&&5>parseFloat(f),()=>g="32-bit"),a("is32BitBrowser","32-bit"==g||/wow64/i.test(b),()=>j="32-bit"),a("is64BitBrowser",/win64/i.test(b),()=>j="64-bit"),a("isDesktop",(()=>"Windows"==e||"Mac OS X"==e||"Linux"==e||"Chrome OS"==e||"nwjs"==l)(),()=>m=!0),"Edge"==k&&"undefined"!=typeof Windows&&"undefined"!=typeof Windows["System"]&&(l="windows-store"),n="nwjs"==l||"windows-store"==l,C3.Platform={OS:e,OSVersion:f,OSArchitecture:g,Browser:h,BrowserVersion:i,BrowserVersionNumber:parseFloat(i),BrowserArchitecture:j,BrowserEngine:k,Context:l,IsDesktop:m,IsMobile:!m,IsDesktopApp:n,IsChromeWebStore:!!(self["chrome"]&&self["chrome"]["runtime"]&&self["chrome"]["runtime"]["id"]),IsAppleOS:"Mac OS X"==e||"iOS"==e}} + +// ../lib/misc/supports.js +"use strict";{if(C3.Supports={},C3.Supports.WebAnimations=(()=>{try{if("undefined"==typeof document)return!1;const a=document.createElement("div");if("undefined"==typeof a.animate)return!1;const b=a.animate([{opacity:"0"},{opacity:"1"}],1e3);return"undefined"!=typeof b.reverse}catch(a){return!1}})(),C3.Supports.DialogElement="undefined"!=typeof HTMLDialogElement,C3.Supports.RequestIdleCallback=!!self.requestIdleCallback,C3.Supports.ImageBitmap="Safari"!==C3.Platform.Browser&&"Firefox"!==C3.Platform.Browser&&!!self.createImageBitmap,C3.Supports.ImageBitmapOptions=!1,C3.Supports.ImageBitmap)try{self.createImageBitmap(new ImageData(32,32),{premultiplyAlpha:"none"}).then(()=>{C3.Supports.ImageBitmapOptions=!0}).catch(()=>{C3.Supports.ImageBitmapOptions=!1})}catch(a){C3.Supports.ImageBitmapOptions=!1}C3.Supports.ClipboardReadText=!!(navigator["clipboard"]&&navigator["clipboard"]["readText"]&&"Firefox"!==C3.Platform.Browser),C3.Supports.Proxies="undefined"!=typeof Proxy,C3.Supports.DownloadAttribute=(()=>{if("undefined"==typeof document)return!1;const b=document.createElement("a");return"undefined"!=typeof b.download})(),C3.Supports.CanvasToBlob=(()=>"undefined"!=typeof HTMLCanvasElement&&HTMLCanvasElement.prototype.toBlob)(),C3.Supports.CSSElement="undefined"!=typeof CSS&&CSS.supports("background","element(#test)"),C3.Supports.Fetch="function"==typeof fetch,C3.Supports.PersistentStorage=!!(self.isSecureContext&&"Opera"!==C3.Platform.Browser&&navigator["storage"]&&navigator["storage"]["persist"]),C3.Supports.StorageQuotaEstimate=!!(self.isSecureContext&&navigator["storage"]&&navigator["storage"]["estimate"]),C3.Supports.Fullscreen=()=>{if("undefined"==typeof document)return!1;const a=document.documentElement;return!!(a.requestFullscreen||a.msRequestFullscreen||a.mozRequestFullScreen||a.webkitRequestFullscreen)};const a=[{name:"A",value:12},{name:"B",value:13},{name:"C",value:13},{name:"D",value:13},{name:"E",value:13},{name:"F",value:13},{name:"G",value:14},{name:"H",value:12},{name:"I",value:12},{name:"J",value:13},{name:"K",value:14}],b=Math.ceil(496/a.length),c=(b+"").length,d=[];for(const e of a)for(let a=0;a<=b;a++)d.push({name:e.name+(a+"")["padStart"](c,"0"),value:e.value});d.sort((c,a)=>a.value-c.value);const e=d.reduce((a,b)=>{const c=b.name.slice(0,1),d=a.slice(-1);return d===c?a:a+c},"");C3.Supports.ArraySortProbablyStable="GKBCDEFJAHI"===e} + +// ../lib/misc/polyfills.js +"use strict";{if(!String.prototype.trimStart){const a=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*/;String.prototype.trimStart=function(){return this.replace(a,"")}}if(!String.prototype.trimEnd){const a=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*$/;String.prototype.trimEnd=function(){return this.replace(a,"")}}if(Array.prototype.values||(Array.prototype.values=function*(){for(const a of this)yield a}),!Array.prototype.flat){function a(b,c){return b.reduce((b,d)=>0navigator["webkitTemporaryStorage"]["queryUsageAndQuota"]((b,c)=>a({"usage":b,"quota":c}),b))}),"undefined"==typeof HTMLCollection||HTMLCollection.prototype[Symbol.iterator]||(HTMLCollection.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});"undefined"==typeof NodeList||NodeList.prototype[Symbol.iterator]||(NodeList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});"undefined"==typeof DOMTokenList||DOMTokenList.prototype[Symbol.iterator]||(DOMTokenList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});if("undefined"==typeof FileList||FileList.prototype[Symbol.iterator]||(FileList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}}),"undefined"==typeof TextEncoder&&(self.TextEncoder=class{constructor(){Object.defineProperty(this,"encoding",{"value":"utf-8","writable":!1})}encode(a){for(var b=a.length,c=-1,d=new Uint8Array(3*b),e=0,f=0,g=0;g!==b;){if(e=a.charCodeAt(g),g+=1,55296<=e&&56319>=e){if(g===b){d[c+=1]=239,d[c+=1]=191,d[c+=1]=189;break}if(f=a.charCodeAt(g),!(56320<=f&&57343>=f)){d[c+=1]=239,d[c+=1]=191,d[c+=1]=189;continue}else if(e=1024*(e-55296)+f-56320+65536,g+=1,65535>>18,d[c+=1]=128|63&e>>>12,d[c+=1]=128|63&e>>>6,d[c+=1]=128|63&e;continue}}127>=e?d[c+=1]=0|e:2047>=e?(d[c+=1]=192|e>>>6,d[c+=1]=128|63&e):(d[c+=1]=224|e>>>12,d[c+=1]=128|63&e>>>6,d[c+=1]=128|63&e)}return new Uint8Array(d.buffer.slice(0,c+1))}toString(){return"[object TextEncoder]"}},TextEncoder[Symbol.toStringTag]="TextEncoder"),"undefined"==typeof TextDecoder){function a(a){const b=a[Symbol.iterator]();return{next:()=>b.next(),[Symbol.iterator](){return this}}}function b(a){const b=a.next();if(b.done)throw new Error("unexpected end of input");if(0!=(128^192&b.value))throw new Error("invalid byte");return 63&b.value}const c=new Map;c.set("utf-8",(c,d)=>{let e;if(c.buffer)e=new Uint8Array(c.buffer,c.byteOffset,c.byteLength);else if(e instanceof ArrayBuffer)e=new Uint8Array(c);else throw new Error("Invalid parameter");const f=a(e),g=[];try{for(const a of f){let c;if(127>a)c=127&a;else if(223>a)c=(31&a)<<6|b(f);else if(239>a)c=(15&a)<<12|b(f)<<6|b(f);else if(247>a)c=(7&a)<<18|b(f)<<12|b(f)<<6|b(f);else throw new Error("Invalid character");g.push(String.fromCodePoint(c))}}catch(a){if(d)throw a;g.push("\uFFFD")}return g.join("")}),c.set("utf8",c.get("utf-8")),c.set("utf-16le",()=>{throw new Error("utf-16le decoder not implemented")}),self.TextDecoder=class{constructor(a="utf-8",b={}){const d=c.get(a);if(!d)throw new Error(`TextDecoder polyfill does not support "${a}"`);Object.defineProperty(this,"fatal",{"value":!0===b["fatal"],"writable":!1}),Object.defineProperty(this,"_decoder",{"value":d,"writable":!1}),Object.defineProperty(this,"encoding",{"value":a,"writable":!1})}decode(a){return this["_decoder"](a,this["fatal"])}toString(){return"[object TextDecoder]"}},TextDecoder[Symbol.toStringTag]="TextDecoder"}"undefined"==typeof self.isSecureContext&&(self.isSecureContext="https:"===location.protocol)} + +// c3/lib/misc/assert.js +"use strict";{function a(a){let b=C3.GetCallStack();console.error("Assertion failure: "+a+"\n\nStack trace:\n"+b)}self.assert=function(b,c){b||a(c)}} + +// ../lib/misc/typeChecks.js +"use strict";C3.IsNumber=function(a){return"number"==typeof a},C3.IsFiniteNumber=function(a){return C3.IsNumber(a)&&isFinite(a)},C3.RequireNumber=function(a){if(!C3.IsNumber(a))throw new TypeError("expected number")},C3.RequireOptionalNumber=function(a){C3.IsNullOrUndefined(a)},C3.RequireNumberInRange=function(a,b,c){if(!C3.IsNumber(a)||isNaN(a)||b>a||cC3.getName(a))),b=[...a].join(",");console.warn(`An object derived from DefendedBase was not protected with debugDefend(). This will disable some checks. See the coding guidelines! Possible affected class names: ${b}`),f.clear(),g.clear()}}function d(a){let b=new Set;for(let c in a)b.add(c);return b}function e(a,b){let c=d(b),e=l.get(a);if(e){let b=[];for(let a of e.values())c.has(a)?c.delete(a):b.push(a);C3.appendArray(b,[...c]),b.length&&console.warn(`[Defence] '${C3.getName(a)}' constructor creates inconsistent properties: ${b.join(", ")}`)}else l.set(a,c)}C3.GetCallStack=function(){return new Error().stack},C3.Debugger=function(){debugger},C3.cast=function(a,b){return a&&a instanceof b?a:null},C3.getName=function(a){return"undefined"==typeof a?"undefined":null===a?"null":"boolean"==typeof a?"":C3.IsNumber(a)?"":C3.IsString(a)?"":C3.IsArray(a)?"":"symbol"==typeof a?"<"+a.toString()+">":C3.IsFunction(a)?a.name&&"Function"!==a.name?a.name:"":"object"==typeof a?a.constructor&&a.constructor.name&&"Object"!==a.constructor.name?a.constructor.name:"":""},C3.getType=function(a){return null===a?"null":Array.isArray(a)?"array":typeof a};let f=new Map,g=new Map,h=new WeakMap,i=new WeakMap;C3.DefendHandler={};const j=new Set(["then","splice"]);C3.DefendHandler.get=function(a,c){return c in a||"symbol"==typeof c||j.has(c)||b(`Accessed missing property '${c}' from defended object '${C3.getName(a)}', returning undefined`),i.has(a)&&"symbol"!=typeof c&&!j.has(c)&&b(`Accessed property '${c}' on a released object '${C3.getName(a)}'\nObject was originally released at: ${i.get(a)})\nCall stack at access: `),a[c]},C3.DefendHandler.set=function(c,d,e){return d in c||f.has(c)||b(`Set non-existent property '${d}' to '${e}' on defended object '${C3.getName(c)}'`),a(c[d],e)||f.has(c)||b(`Set '${C3.getType(c[d])}' property '${d}' to type '${C3.getType(e)}' on defended object '${C3.getName(c)}'`),i.has(c)&&b(`Set property '${d}' on a released object '${C3.getName(c)}'\nObject was originally released at: ${i.get(c)})\nCall stack at access: `),c[d]=e,!0},C3.DefendHandler.deleteProperty=function(a,b){throw new ReferenceError(`Cannot delete property '${b}' from defended object '${C3.getName(a)}'`)},C3.DefendHandler.defineProperty=function(a,b){throw new ReferenceError(`Cannot define property '${b}' on defended object '${C3.getName(a)}'`)},C3.DefendHandler.enumerate=function(a){throw new ReferenceError(`Cannot enumerate defended object '${C3.getName(a)}'`)};let k=-1;C3.DefendedBase=class{constructor(){if(C3.isDebugDefend&&C3.Supports.Proxies){let a=new.target,b=Object.create(a.prototype),d=new Proxy(b,C3.DefendHandler);return f.set(b,d),g.set(d,b),h.set(d,b),-1===k&&(k=requestAnimationFrame(c)),d}}},C3.debugDefend=function(a){if(C3.isDebugDefend&&C3.Supports.Proxies&&a instanceof C3.DefendedBase){if(!g.has(a))return a;let b=g.get(a);return g.delete(a),f.delete(b),a}return C3.isDebug?Object.seal(a):a},C3.New=function(a,...b){let c;try{c=new a(...b)}catch(a){throw g.clear(),f.clear(),a}return C3.isDebugDefend&&e(a,c),C3.debugDefend(c)},C3.Release=function(a){let b=h.get(a);b&&i.set(b,C3.GetCallStack())},C3.WasReleased=function(a){let b=h.get(a);return!!b&&!!i.get(b)};let l=new Map} + +// ../lib/misc/mathutil.js +"use strict";{function a(a){return 0===a&&0>1/a}const b=2*Math.PI,c=Math.PI/180,d=180/Math.PI;C3.wrap=function(a,b,c){var d=Math.floor;if(a=d(a),b=d(b),c=d(c),aa?a:c},C3.clampAngle=function(c){return c%=b,0>c&&(c+=b),c},C3.toRadians=function(a){return a*c},C3.toDegrees=function(a){return a*d},C3.distanceTo=function(a,b,c,d){return Math.hypot(c-a,d-b)},C3.distanceSquared=function(a,b,c,d){const e=c-a,f=d-b;return e*e+f*f},C3.angleTo=function(a,b,c,d){return Math.atan2(d-b,c-a)},C3.angleDiff=function(a,b){var c=Math.cos,d=Math.sin;if(a===b)return 0;let e=d(a),f=c(a),g=d(b),h=c(b),i=e*g+f*h;return 1<=i?0:-1>=i?Math.PI:Math.acos(i)},C3.angleRotate=function(a,b,c){var d=Math.cos,e=Math.sin;let f=e(a),g=d(a),h=e(b),i=d(b);return Math.acos(f*h+g*i)>c?0=f*g-e*h},C3.angleLerp=function(c,a,b){let d=C3.angleDiff(c,a);return C3.angleClockwise(a,c)?C3.clampAngle(c+d*b):C3.clampAngle(c-d*b)},C3.lerp=function(c,a,b){return c+b*(a-c)},C3.unlerp=function(c,a,b){return c===a?0:(b-c)/(a-c)},C3.relerp=function(e,a,b,f,c){return C3.lerp(f,c,C3.unlerp(e,a,b))},C3.qarp=function(d,a,b,c){return C3.lerp(C3.lerp(d,a,c),C3.lerp(a,b,c),c)},C3.cubic=function(e,a,b,c,d){return C3.lerp(C3.qarp(e,a,b,d),C3.qarp(a,b,c,d),d)},C3.cosp=function(c,a,b){return(c+a+(c-a)*Math.cos(b*Math.PI))/2},C3.isPOT=function(a){return 0b;b<<=1)a|=a>>b;return a+1},C3.roundToNearestFraction=function(a,b){return Math.round(a*b)/b},C3.floorToNearestFraction=function(a,b){return Math.floor(a*b)/b},C3.round6dp=function(a){return Math.round(1e6*a)/1e6},C3.toFixed=function(a,b){let c=a.toFixed(b),d=c.length-1;for(;0<=d&&"0"===c.charAt(d);--d);return 0<=d&&"."===c.charAt(d)&&--d,0>d?c:c.substr(0,d+1)},C3.PackRGB=function(a,b,c){return C3.clamp(a,0,255)|C3.clamp(b,0,255)<<8|C3.clamp(c,0,255)<<16};const e=1024;C3.PackRGBAEx=function(a,b,c,d){var f=Math.floor;return a=C3.clamp(f(1024*a),-8192,8191),b=C3.clamp(f(1024*b),-8192,8191),c=C3.clamp(f(1024*c),-8192,8191),d=C3.clamp(f(1023*d),0,1023),0>a&&(a+=16384),0>b&&(b+=16384),0>c&&(c+=16384),-(16384*(16384*a)*e+16384*b*e+c*e+d)},C3.PackRGBEx=function(a,b,c){return C3.PackRGBAEx(a,b,c,1)},C3.GetRValue=function(a){if(0<=a)return(255&a)/255;else{let b=Math.floor(-a/274877906944);return 8191>8)/255;else{let b=Math.floor(-a%274877906944/16777216);return 8191>16)/255;else{let b=Math.floor(-a%16777216/e);return 8191c(b-e))return d.slice(0);if(e=a/d[1]*d[0],1>c(b-e))return[d[1],d[0]]}let e=C3.greatestCommonDivisor(a,b);return[a/e,b/e]},C3.segmentsIntersect=function(a,b,c,e,f,g,h,i){var j=Math.abs;let k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(ao)return!1;if(bq)return!1;let s=f-a+h-c,t=g-b+i-e,u=c-a,v=e-b,w=h-f,x=i-g,y=j(v*w-x*u);if(j(w*t-x*s)>y)return!1;return j(u*t-v*s)<=y},C3.segmentsIntersectPreCalc=function(a,b,c,e,f,g,h,i,j,k,l,m){var n=Math.abs;let o=0,p=0,q=0,r=0;if(jo)return!1;if(kq)return!1;let s=j-a+l-c,t=k-b+m-e,u=c-a,v=e-b,w=l-j,x=m-k,y=n(v*w-x*u);if(n(w*t-x*s)>y)return!1;return n(u*t-v*s)<=y},C3.segmentIntersectsQuad=function(a,b,c,d,e){let f=0,g=0,h=0,i=0;ab?"":a.substr(b)},C3.GetFileNamePart=function(a){let b=a.lastIndexOf(".");return 1>b?a:a.substr(0,b)},C3.NormalizeFileSeparator=function(a){return a.replace(/\\/g,"/")},C3.ParseFilePath=function(a){a=C3.NormalizeFileSeparator(a);let b=/^\w\:\//.exec(a);b?(b=b[0],a=a.slice(3)):b="";const c=a.lastIndexOf("/")+1;let d,e="",f=a,g="";0!=c&&(e=a.slice(0,c-1),f=a.slice(c)),d=f;const h=f.lastIndexOf(".");return 0{self.setTimeout(c,a,b)})},C3.swallowException=function(a){try{a()}catch(a){C3.isDebug&&console.warn("Swallowed exception: ",a)}},C3.noop=function(){},C3.equalsNoCase=function(c,d){return"string"==typeof c&&"string"==typeof d&&!(c.length!==d.length)&&(!(c!==d)||c.toLowerCase()===d.toLowerCase())},C3.stableSort=function(a,c){const b=a.map((a,b)=>[a,b]);b.sort((d,a)=>{const b=c(d[0],a[0]);return 0===b?d[1]-a[1]:b});for(let d=0,e=a.length;dd&&C3.extendArray(a,b,c)},C3.shallowAssignArray=function(a,b){C3.clearArray(a),C3.appendArray(a,b)},C3.appendArray=function(c,a){for(let b=0,d=a.length;bb||b>=a.length)){let c=a.length-1;for(let d=b;dc:!(5!=b)&&a>=c},C3.hasAnyOwnProperty=function(a){for(let b in a)if(a.hasOwnProperty(b))return!0;return!1},C3.PromiseAllWithProgress=function(a,b){return a.length?new Promise((c,d)=>{const e=[];let f=0,g=!1;for(let h=0,i=a.length;h{g||(e[h]=d,++f,f===a.length?c(e):b(f,a.length))}).catch((a)=>{g=!0,d(a)})}):Promise.resolve([])};let c=[];C3.AddLibraryMemoryCallback=function(a){c.push(a)},C3.GetEstimatedLibraryMemoryUsage=function(){let a=0;for(let b of c){let c=b();a+=c}return Math.floor(a)}} + +// c3/lib/misc/runtimeutil.js +"use strict";C3.IsAbsoluteURL=function(a){return /^(?:[a-z]+:)?\/\//.test(a)||"data:"===a.substr(0,5)||"blob:"===a.substr(0,5)},C3.IsRelativeURL=function(a){return!C3.IsAbsoluteURL(a)},C3.ThrowIfNotOk=function(a){if(!a.ok)throw new Error(`fetch '${a.url}' response returned ${a.status} ${a.statusText}`)},C3.FetchOk=function(a,b){return fetch(a,b).then((a)=>(C3.ThrowIfNotOk(a),a))},C3.FetchText=function(a){return C3.FetchOk(a).then((a)=>a.text())},C3.FetchJson=function(a){return C3.FetchOk(a).then((a)=>a.json())},C3.FetchBlob=function(a){return C3.FetchOk(a).then((a)=>a.blob())},C3.FetchArrayBuffer=function(a){return C3.FetchOk(a).then((a)=>a.arrayBuffer())},C3.FetchImage=function(a){return new Promise((b,c)=>{const d=new Image;d.onload=()=>b(d),d.onerror=(a)=>c(a),d.src=a})},C3.BlobToArrayBuffer=function(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=()=>b(d.result),d.onerror=()=>c(d.error),d.readAsArrayBuffer(a)})},C3.BlobToString=function(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=()=>b(d.result),d.onerror=()=>c(d.error),d.readAsText(a)})},C3.BlobToJson=function(a){return C3.BlobToString(a).then((a)=>JSON.parse(a))},C3.BlobToImage=async function(a,b){let c=URL.createObjectURL(a);try{const a=await C3.FetchImage(c);return URL.revokeObjectURL(c),c="",b&&"function"==typeof a["decode"]&&(await a["decode"]()),a}finally{c&&URL.revokeObjectURL(c)}},C3.CreateCanvas=function(a,b){if("undefined"!=typeof document&&"function"==typeof document.createElement){const c=document.createElement("canvas");return c.width=a,c.height=b,c}return new OffscreenCanvas(a,b)},C3.CanvasToBlob=function(a,b,c){return"number"!=typeof c&&(c=1),b=b||"image/png",c=C3.clamp(c,0,1),a.toBlob?new Promise((d)=>a.toBlob(d,b,c)):a["convertToBlob"]?a["convertToBlob"]({"type":b,"quality":c}):C3.Asyncify(()=>C3.CanvasToBlobSync(a,b,c))},C3.CanvasToBlobSync=function(a,b,c){return"number"!=typeof c&&(c=1),b=b||"image/png",c=C3.clamp(c,0,1),C3.DataURIToBinaryBlob(a.toDataURL(b,c))},C3.DataURIToBinaryBlob=function(a){const b=C3.ParseDataURI(a);return C3.BinaryStringToBlob(b.data,b.mime_type)},C3.ParseDataURI=function(a){if("data:"!==a.substr(0,5))throw new URIError("expected data: uri");let b=a.indexOf(",");if(0>b)throw new URIError("expected comma in data: uri");let c,d=a.substring(5,b),e=a.substring(b+1),f=d.split(";"),g=f[0]||"",h=f[1],i=f[2];return c="base64"===h||"base64"===i?atob(e):decodeURIComponent(e),{mime_type:g,data:c}},C3.BinaryStringToBlob=function(a,b){let c,d,e=a.length,f=e>>2,g=new Uint8Array(e),h=new Uint32Array(g.buffer,0,f);for(c=0,d=0;cC3.DrawableToBlob(a,b,c));if(C3.Supports.ImageBitmap)return createImageBitmap(a).then((a)=>C3.DrawableToBlob(a,b,c));else{const d=C3.CreateCanvas(a.width,a.height),e=d.getContext("2d");return e.putImageData(a,0,0),C3.CanvasToBlob(d,b,c)}},C3.CopySet=function(a,b){a.clear();for(const c of b)a.add(c)},C3.MapToObject=function(a){const b=Object.create(null);for(const[c,d]of a.entries())b[c]=d;return b},C3.ObjectToMap=function(a,b){b.clear();for(const[c,d]of Object.entries(a))b.set(c,d)},C3.ToSuperJSON=function a(b){if("object"==typeof b&&null!==b){if(b instanceof Set)return{"_c3type_":"set","data":[...b].map((b)=>a(b))};if(b instanceof Map)return{"_c3type_":"map","data":[...b].map((b)=>[b[0],a(b[1])])};else{const c=Object.create(null);for(const[d,e]of Object.entries(b))c[d]=a(e);return c}}return b},C3.FromSuperJSON=function a(b){if("object"==typeof b&null!==b){if("set"===b["_c3type_"])return new Set(b["data"].map((b)=>a(b)));if("map"===b["_c3type_"])return new Map(b["data"].map((b)=>[b[0],a(b[1])]));else{const c=Object.create(null);for(const[d,e]of Object.entries(b))c[d]=a(e);return c}}return b},C3.CSSToCamelCase=function(a){let b="",c=!1;for(const d of a)"-"===d?c=!0:c?(b+=d.toUpperCase(),c=!1):b+=d;return b},C3.IsIterator=function(a){return"object"==typeof a&&"function"==typeof a.next}; + +// ../lib/misc/color.js +"use strict";{function a(a){return 0===a.length?"00":1===a.length?"0"+a:a}function c(a,b,c){return 0>c&&(c+=1),1b.length)return!1;const c=parseInt(b[0].trim(),10)/255,d=parseInt(b[1].trim(),10)/255,e=parseInt(b[2].trim(),10)/255;return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),this.setA(1),!0}parseCommaSeparatedPercentageRgb(a){if("string"!=typeof a)return!1;a=a.replace(/^rgb\(|\)|%/,"");const b=a.split(",");if(3>b.length)return!1;const c=parseInt(b[0].trim(),10)/100,d=parseInt(b[1].trim(),10)/100,e=parseInt(b[2].trim(),10)/100;return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),this.setA(1),!0}parseCommaSeparatedRgba(a){if("string"!=typeof a)return!1;a=a.replace(/^rgba\(|\)|%/,"");const b=a.split(",");if(4>b.length)return!1;const c=parseInt(b[0].trim(),10)/255,d=parseInt(b[1].trim(),10)/255,e=parseInt(b[2].trim(),10)/255,f=parseFloat(b[3].trim());return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),isFinite(f)&&this.setA(f),!0}parseCommaSeparatedPercentageRgba(a){if("string"!=typeof a)return!1;a=a.replace(/^rgba\(|\)|%/,"");const b=a.split(",");if(4>b.length)return!1;const c=parseInt(b[0].trim(),10)/100,d=parseInt(b[1].trim(),10)/100,e=parseInt(b[2].trim(),10)/100,f=parseFloat(b[3].trim());return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),isFinite(f)&&this.setA(f),!0}parseString(a){if("string"!=typeof a)return!1;if(a=a.replace(/\s+/,""),a.includes(",")){if(a.startsWith("rgb("))return a.includes("%")?this.parseCommaSeparatedPercentageRgb(a):this.parseCommaSeparatedRgb(a);if(a.startsWith("rgba("))return a.includes("%")?this.parseCommaSeparatedPercentageRgba(a):this.parseCommaSeparatedRgba(a);if(a.startsWith("hsl(")||a.startsWith("hsla("))return this.parseHSLString(a);else{const b=a.split(",");return a.includes("%")?3===b.length?this.parseCommaSeparatedPercentageRgb(a):4===b.length&&this.parseCommaSeparatedPercentageRgba(a):3===b.length?this.parseCommaSeparatedRgb(a):4===b.length&&this.parseCommaSeparatedRgba(a)}}else return this.parseHexString(a)}toJSON(){return[this._r,this._g,this._b,this._a]}setFromHSLA(d,e,f,h){let a,i,g;if(d%=360,e=C3.clamp(e,0,100),f=C3.clamp(f,0,100),h=C3.clamp(h,0,1),d/=360,e/=100,f/=100,0===e)a=i=g=f;else{const b=.5>f?f*(1+e):f+e-f*e,h=2*f-b;a=c(h,b,d+1/3),i=c(h,b,d),g=c(h,b,d-1/3)}return this.setR(a),this.setG(i),this.setB(g),this.setA(h),this}parseHSLString(a){const c=a.replace(/ |hsl|hsla|\(|\)|;/gi,""),e=b.exec(c),f=d.exec(c);return e&&4===e.length?(this.setFromHSLA(+e[1],+e[2],+e[3],1),!0):!!(f&&5===f.length)&&(this.setFromHSLA(+e[1],+e[2],+e[3],+e[4]),!0)}toHSLAString(){var c=Math.round;const e=this._r,f=this._g,g=this._b,b=this._a,a=Math.max(e,f,g),i=Math.min(e,f,g);let j,h,k=(a+i)/2;if(a===i)j=h=0;else{const b=a-i;h=.5a.length||(this._r=a[0],this._g=a[1],this._b=a[2],this._a=4<=a.length?a[3]:1)}set r(a){this.setR(a)}get r(){return this.getR()}set g(a){this.setG(a)}get g(){return this.getG()}set b(a){this.setB(a)}get b(){return this.getB()}set a(b){this.setA(b)}get a(){return this.getA()}setAtIndex(a,b){switch(a){case 0:this.setR(b);break;case 1:this.setG(b);break;case 2:this.setB(b);break;case 3:this.setA(b);break;default:throw new RangeError("invalid color index");}}getAtIndex(a){switch(a){case 0:return this.getR();case 1:return this.getG();case 2:return this.getB();case 3:return this.getA();default:throw new RangeError("invalid color index");}}static Diff(a,b){var c=Math.min,d=Math.max;const e=new C3.Color;return e.setR(d(a._r,b._r)-c(a._r,b._r)),e.setG(d(a._g,b._g)-c(a._g,b._g)),e.setB(d(a._b,b._b)-c(a._b,b._b)),e.setA(d(a._a,b._a)-c(a._a,b._a)),e}},C3.Color.White=Object.freeze(C3.New(C3.Color,1,1,1,1)),C3.Color.Black=Object.freeze(C3.New(C3.Color,0,0,0,1)),C3.Color.TransparentBlack=Object.freeze(C3.New(C3.Color,0,0,0,0))} + +// ../lib/misc/vector2.js +"use strict";C3.Vector2=class{constructor(a,b){this._x=0,this._y=0,a instanceof C3.Vector2?this.copy(a):this.set(a||0,b||0)}set(a,b){this._x=+a,this._y=+b}copy(a){this._x=a._x,this._y=a._y}equals(a){return this._x===a._x&&this._y===a._y}setX(a){this._x=+a}getX(){return this._x}setY(a){this._y=+a}getY(){return this._y}toArray(){return[this._x,this._y]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._x,a[b]=this._y}offset(a,b){this._x+=+a,this._y+=+b}scale(a,b){this._x*=a,this._y*=b}round(){var a=Math.round;this._x=a(this._x),this._y=a(this._y)}floor(){var a=Math.floor;this._x=a(this._x),this._y=a(this._y)}ceil(){var a=Math.ceil;this._x=a(this._x),this._y=a(this._y)}angle(){return C3.angleTo(0,0,this._x,this._y)}lengthSquared(){return this._x*this._x+this._y*this._y}length(){return Math.sqrt(this.lengthSquared())}rotatePrecalc(a,b){const c=this._x*b-this._y*a;this._y=this._y*b+this._x*a,this._x=c}rotate(b){0===b||this.rotatePrecalc(Math.sin(b),Math.cos(b))}rotateAbout(b,a,c){0===b||a===this._x&&c===this._y||(this._x-=a,this._y-=c,this.rotatePrecalc(Math.sin(b),Math.cos(b)),this._x+=+a,this._y+=+c)}move(b,a){0===a||(this._x+=Math.cos(b)*a,this._y+=Math.sin(b)*a)}normalize(){const a=this.length();0!==a&&1!==a&&(this._x/=a,this._y/=a)}clamp(a,b){this._x=C3.clamp(this._x,a,b),this._y=C3.clamp(this._y,a,b)}}; + +// ../lib/misc/rect.js +"use strict";C3.Rect=class{constructor(a,b,c,d){this._left=0,this._top=0,this._right=0,this._bottom=0,a instanceof C3.Rect?this.copy(a):this.set(a||0,b||0,c||0,d||0)}set(a,b,c,d){this._left=+a,this._top=+b,this._right=+c,this._bottom=+d}setWH(a,b,c,d){a=+a,b=+b,this._left=a,this._top=b,this._right=a+ +c,this._bottom=b+ +d}copy(a){this._left=+a._left,this._top=+a._top,this._right=+a._right,this._bottom=+a._bottom}clone(){return new C3.Rect(this._left,this._top,this._right,this._bottom)}static Merge(a,b){var c=Math.max,d=Math.min;const e=new C3.Rect;return e.setLeft(d(a._left,b._left)),e.setTop(d(a._top,b._top)),e.setRight(c(a._right,b._right)),e.setBottom(c(a._bottom,b._bottom)),e}static FromObject(a){return new C3.Rect(a.left,a.top,a.right,a.bottom)}equals(a){return this._left===a._left&&this._top===a._top&&this._right===a._right&&this._bottom===a._bottom}setLeft(a){this._left=+a}getLeft(){return this._left}setTop(a){this._top=+a}getTop(){return this._top}setRight(a){this._right=+a}getRight(){return this._right}setBottom(a){this._bottom=+a}getBottom(){return this._bottom}toArray(){return[this._left,this._top,this._right,this._bottom]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._left,a[b++]=this._top,a[b++]=this._right,a[b]=this._bottom}writeAsQuadToTypedArray(a,b){a[b++]=this._left,a[b++]=this._top,a[b++]=this._right,a[b++]=this._top,a[b++]=this._right,a[b++]=this._bottom,a[b++]=this._left,a[b]=this._bottom}width(){return this._right-this._left}height(){return this._bottom-this._top}midX(){return(this._left+this._right)/2}midY(){return(this._top+this._bottom)/2}offset(a,b){this._left+=+a,this._top+=+b,this._right+=+a,this._bottom+=+b}offsetLeft(a){this._left+=+a}offsetTop(a){this._top+=+a}offsetRight(a){this._right+=+a}offsetBottom(a){this._bottom+=+a}toSquare(a){if("x"!==a)throw new Error("invalid axis, only 'x' supported");this._bottom=this._topd&&(this._right=+d),this._bottom>e&&(this._bottom=+e)}clampFlipped(a,c,d,e){this._leftc&&(this._top=+c),this._right>d&&(this._right=+d),this._bottomthis._right&&this.swapLeftRight(),this._top>this._bottom&&this.swapTopBottom()}intersectsRect(a){return!(a._rightthis._right||a._top>this._bottom)}intersectsRectOffset(a,b,c){return!(a._right+bthis._right||a._top+c>this._bottom)}containsPoint(a,b){return a>=this._left&&a<=this._right&&b>=this._top&&b<=this._bottom}containsRect(a){return a._left>=this._left&&a._top>=this._top&&a._right<=this._right&&a._bottom<=this._bottom}expandToContain(a){a._leftthis._right&&(this._right=+a._right),a._bottom>this._bottom&&(this._bottom=+a._bottom)}lerpInto(a){this._left=C3.lerp(a._left,a._right,this._left),this._top=C3.lerp(a._top,a._bottom,this._top),this._right=C3.lerp(a._left,a._right,this._right),this._bottom=C3.lerp(a._top,a._bottom,this._bottom)}}; + +// ../lib/misc/quad.js +"use strict";{function a(g,a,b,c){gc?a:c):(e=gb?a:b):bc?g:c):(e=ab?g:b)}let e=0,f=0;C3.Quad=class{constructor(a,b,c,d,e,f,g,h){this._tlx=0,this._tly=0,this._trx=0,this._try=0,this._brx=0,this._bry=0,this._blx=0,this._bly=0,a instanceof C3.Quad?this.copy(a):this.set(a||0,b||0,c||0,d||0,e||0,f||0,g||0,h||0)}set(a,b,c,d,e,f,g,h){this._tlx=+a,this._tly=+b,this._trx=+c,this._try=+d,this._brx=+e,this._bry=+f,this._blx=+g,this._bly=+h}setRect(a,b,c,d){this.set(a,b,c,b,c,d,a,d)}copy(a){this._tlx=a._tlx,this._tly=a._tly,this._trx=a._trx,this._try=a._try,this._brx=a._brx,this._bry=a._bry,this._blx=a._blx,this._bly=a._bly}equals(a){return this._tlx===a._tlx&&this._tly===a._tly&&this._trx===a._trx&&this._try===a._try&&this._brx===a._brx&&this._bry===a._bry&&this._blx===a._blx&&this._bly===a._bly}setTlx(a){this._tlx=+a}getTlx(){return this._tlx}setTly(a){this._tly=+a}getTly(){return this._tly}setTrx(a){this._trx=+a}getTrx(){return this._trx}setTry(a){this._try=+a}getTry(){return this._try}setBrx(a){this._brx=+a}getBrx(){return this._brx}setBry(a){this._bry=+a}getBry(){return this._bry}setBlx(a){this._blx=+a}getBlx(){return this._blx}setBly(a){this._bly=+a}getBly(){return this._bly}toArray(){return[this._tlx,this._tly,this._trx,this._try,this._brx,this._bry,this._blx,this._bly]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._tlx,a[b++]=this._tly,a[b++]=this._trx,a[b++]=this._try,a[b++]=this._brx,a[b++]=this._bry,a[b++]=this._blx,a[b]=this._bly}writeToTypedArray3D(a,b,c){a[b++]=this._tlx,a[b++]=this._tly,a[b++]=c,a[b++]=this._trx,a[b++]=this._try,a[b++]=c,a[b++]=this._brx,a[b++]=this._bry,a[b++]=c,a[b++]=this._blx,a[b++]=this._bly,a[b]=c}offset(a,b){this._tlx+=+a,this._tly+=+b,this._trx+=+a,this._try+=+b,this._brx+=+a,this._bry+=+b,this._blx+=+a,this._bly+=+b}round(){var a=Math.round;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}floor(){var a=Math.floor;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}ceil(){var a=Math.ceil;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}setFromRect(a){this._tlx=a._left,this._tly=a._top,this._trx=a._right,this._try=a._top,this._brx=a._right,this._bry=a._bottom,this._blx=a._left,this._bly=a._bottom}setFromRotatedRect(b,c){0===c?this.setFromRect(b):this.setFromRotatedRectPrecalc(b,Math.sin(c),Math.cos(c))}setFromRotatedRectPrecalc(a,b,c){const d=a._left*b,e=a._top*b,f=a._right*b,g=a._bottom*b,h=a._left*c,i=a._top*c,j=a._right*c,k=a._bottom*c;this._tlx=h-e,this._tly=i+d,this._trx=j-e,this._try=i+f,this._brx=j-g,this._bry=k+f,this._blx=h-g,this._bly=k+d}getBoundingBox(b){a(this._tlx,this._trx,this._brx,this._blx),b._left=e,b._right=f,a(this._tly,this._try,this._bry,this._bly),b._top=e,b._bottom=f}containsPoint(a,b){let c=this._trx-this._tlx,d=this._try-this._tly;const e=this._brx-this._tlx,f=this._bry-this._tly,g=a-this._tlx,h=b-this._tly;let i=c*c+d*d,j=c*e+d*f,k=c*g+d*h;const l=e*e+f*f,m=e*g+f*h;let n=1/(i*l-j*j),o=(l*k-j*m)*n,p=(i*m-j*k)*n;return!!(0<=o&&0o+p)||(c=this._blx-this._tlx,d=this._bly-this._tly,i=c*c+d*d,j=c*e+d*f,k=c*g+d*h,n=1/(i*l-j*j),o=(l*k-j*m)*n,p=(i*m-j*k)*n,0<=o&&0o+p)}midX(){return(this._tlx+this._trx+this._brx+this._blx)/4}midY(){return(this._tly+this._try+this._bry+this._bly)/4}intersectsSegment(a,b,c,d){return!!(this.containsPoint(a,b)||this.containsPoint(c,d))||C3.segmentIntersectsQuad(a,b,c,d,this)}intersectsQuad(a){let b=a.midX(),c=a.midY();if(this.containsPoint(b,c))return!0;if(b=this.midX(),c=this.midY(),a.containsPoint(b,c))return!0;const d=this._tlx,e=this._tly,f=this._trx,g=this._try,h=this._brx,i=this._bry,j=this._blx,k=this._bly;return C3.segmentIntersectsQuad(d,e,f,g,a)||C3.segmentIntersectsQuad(f,g,h,i,a)||C3.segmentIntersectsQuad(h,i,j,k,a)||C3.segmentIntersectsQuad(j,k,d,e,a)}mirror(){this._swap(0,2),this._swap(1,3),this._swap(6,4),this._swap(7,5)}flip(){this._swap(0,6),this._swap(1,7),this._swap(2,4),this._swap(3,5)}diag(){this._swap(2,6),this._swap(3,7)}_swap(a,b){const c=this._getAtIndex(a);this._setAtIndex(a,this._getAtIndex(b)),this._setAtIndex(b,c)}_getAtIndex(a){switch(a){case 0:return this._tlx;case 1:return this._tly;case 2:return this._trx;case 3:return this._try;case 4:return this._brx;case 5:return this._bry;case 6:return this._blx;case 7:return this._bly;default:throw new RangeError("invalid quad point index");}}_setAtIndex(a,b){switch(b=+b,a){case 0:this._tlx=b;break;case 1:this._tly=b;break;case 2:this._trx=b;break;case 3:this._try=b;break;case 4:this._brx=b;break;case 5:this._bry=b;break;case 6:this._blx=b;break;case 7:this._bly=b;break;default:throw new RangeError("invalid quad point index");}}}} + +// c3/lib/misc/collisionPoly.js +"use strict";{const a=[0,0,1,0,1,1,0,1],b=C3.New(C3.Quad);C3.CollisionPoly=class extends C3.DefendedBase{constructor(b){super(),b||(b=a);this._ptsArr=Float64Array.from(b),this._bbox=new C3.Rect,this._isBboxChanged=!0}Release(){}pointsArr(){return this._ptsArr}pointCount(){return this._ptsArr.length/2}setPoints(a){this._ptsArr.length===a.length?this._ptsArr.set(a):this._ptsArr=Float64Array.from(a),this._isBboxChanged=!0}copy(a){this.setPoints(a._ptsArr)}setBboxChanged(){this._isBboxChanged=!0}_updateBbox(){if(!this._isBboxChanged)return;const a=this._ptsArr;let b=a[0],c=a[1],d=b,e=c;for(let f=0,g=a.length;fd&&(d=g),he&&(e=h)}this._bbox.set(b,c,d,e),this._isBboxChanged=!1}setFromRect(a,b,c){let d=this._ptsArr;8!==d.length&&(d=new Float64Array(8),this._ptsArr=d),d[0]=a.getLeft()-b,d[1]=a.getTop()-c,d[2]=a.getRight()-b,d[3]=a.getTop()-c,d[4]=a.getRight()-b,d[5]=a.getBottom()-c,d[6]=a.getLeft()-b,d[7]=a.getBottom()-c,this._bbox.copy(a),(0!==b||0!==c)&&this._bbox.offset(-b,-c),this._isBboxChanged=!1}setFromQuad(a,c,d){b.copy(a),b.offset(c,d),this.setPoints(b.toArray()),this._isBboxChanged=!0}transform(b,c,d){let a=0,e=1;0!==d&&(a=Math.sin(d),e=Math.cos(d)),this.transformPrecalc(b,c,a,e)}transformPrecalc(a,b,c,d){const e=this._ptsArr;for(let f=0,g=e.length;f(a/=f/2)?b/2*a*a+e:-b/2*(--a*(a-2)-1)+e}static EaseInCubic(a,e,b,c){return b*(a/=c)*a*a+e}static EaseOutCubic(a,e,b,c){return b*((a=a/c-1)*a*a+1)+e}static EaseInOutCubic(a,e,b,c){return 1>(a/=c/2)?b/2*a*a*a+e:b/2*((a-=2)*a*a+2)+e}static EaseInQuart(a,e,b,c){return b*(a/=c)*a*a*a+e}static EaseOutQuart(a,e,b,f){return-b*((a=a/f-1)*a*a*a-1)+e}static EaseInOutQuart(a,e,b,f){return 1>(a/=f/2)?b/2*a*a*a*a+e:-b/2*((a-=2)*a*a*a-2)+e}static EaseInQuint(a,e,b,c){return b*(a/=c)*a*a*a*a+e}static EaseOutQuint(a,e,b,c){return b*((a=a/c-1)*a*a*a*a+1)+e}static EaseInOutQuint(a,e,b,c){return 1>(a/=c/2)?b/2*a*a*a*a*a+e:b/2*((a-=2)*a*a*a*a+2)+e}static EaseInSine(a,e,b,f){return-b*i(a/f*(j/2))+b+e}static EaseOutSine(a,e,b,c){return b*h(a/c*(j/2))+e}static EaseInOutSine(a,e,b,f){return-b/2*(i(j*a/f)-1)+e}static EaseInExpo(a,e,b,c){return 0===a?e:b*g(2,10*(a/c-1))+e}static EaseOutExpo(a,e,b,c){return a===c?e+b:b*(-g(2,-10*a/c)+1)+e}static EaseInOutExpo(a,e,b,c){return 0===a?e:a===c?e+b:1>(a/=c/2)?b/2*g(2,10*(a-1))+e:b/2*(-g(2,-10*--a)+2)+e}static EaseInCirc(e,f,b,g){return-b*(a(1-(e/=g)*e)-1)+f}static EaseOutCirc(e,f,b,c){return b*a(1-(e=e/c-1)*e)+f}static EaseInOutCirc(e,f,b,g){return 1>(e/=g/2)?-b/2*(a(1-e*e)-1)+f:b/2*(a(1-(e-=2)*e)+1)+f}static EaseInElastic(i,k,b,c){let d=1.70158,l=0,m=b;return 0===i?k:1===(i/=c)?k+b:(l||(l=.3*c),mi?-.5*(m*g(2,10*(i-=1))*h((i*c-d)*(2*j)/l))+k:.5*(m*g(2,-10*(i-=1))*h((i*c-d)*(2*j)/l))+b+k)}static EaseInBack(a,e,b,c,d){return void 0===d&&(d=1.70158),b*(a/=c)*a*((d+1)*a-d)+e}static EaseOutBack(a,e,b,c,d){return void 0===d&&(d=1.70158),b*((a=a/c-1)*a*((d+1)*a+d)+1)+e}static EaseInOutBack(a,e,b,c,d){return void 0===d&&(d=1.70158),1>(a/=c/2)?b/2*(a*a*(((d*=1.525)+1)*a-d))+e:b/2*((a-=2)*a*(((d*=1.525)+1)*a+d)+2)+e}static EaseInBounce(a,e,b,c){return b-k.EaseOutBounce(c-a,0,b,c)+e}static EaseOutBounce(a,e,b,c){return(a/=c)<1/2.75?b*(7.5625*a*a)+e:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+.75)+e:a<2.5/2.75?b*(7.5625*(a-=2.25/2.75)*a+.9375)+e:b*(7.5625*(a-=2.625/2.75)*a+.984375)+e}static EaseInOutBounce(a,e,b,c){return ac(a)));for(let c,d=0,e=this._listeners.length;dc(a)));return Promise.all(b).then(()=>!a.defaultPrevented)}async _FireAndWaitAsync(a){const b=[];this._IncreaseFireDepth();for(let c=0,d=this._captureListeners.length;c(h.push({func:b,resolve:e,reject:f,stack:d}),k?void c(h.pop()):void(-1===i&&a(16))))},C3.Asyncify.SetHighThroughputMode=function(a){if(a)++j;else if(--j,0>j)throw new Error("already turned off high throughput mode")}} + +// ../lib/util/idleTimeout.js +"use strict";{function a(){e=-1}function b(){f=-1,g=-1;let a=Date.now();for(let b of h)if(b._CheckTimeout(a)){let a=b._GetDeadline();(-1===g||aa+c&&(self.clearTimeout(f),g=this._deadline,f=self.setTimeout(b,this._timeout+100))}_CheckTimeout(a){return!(a>=this._deadline)||(this._callback()?(this._deadline=a+this._timeout,!0):(this._isActive=!1,!1))}_GetDeadline(){return this._deadline}Cancel(){this._isActive&&(h.delete(this),this._isActive=!1,0===h.size&&-1!==f&&(self.clearTimeout(f),f=-1,g=-1))}Release(){this.Cancel(),this._callback=null}}} + +// ../lib/util/disposable.js +"use strict";C3.Disposable=class a{constructor(a){this._disposed=!1,this._disposeAction=a}Dispose(){this._disposed||(this._disposed=!0,this._disposeAction&&(this._disposeAction(),this._disposeAction=null))}IsDisposed(){return this._disposed}Release(){this.Dispose()}static Release(b){return new a(()=>b.Release())}static From(a,b,c,d,e){if("undefined"==typeof d||null===d)d=!1;else if("boolean"!=typeof d&&"object"!=typeof d)throw new TypeError("invalid event listener options");if(e&&(c=c.bind(e)),b.includes(" ")){b=b.split(" ");const e=new C3.CompositeDisposable;for(let f of b)a.addEventListener(f,c,d),e.Add(C3.New(C3.Disposable,()=>a.removeEventListener(f,c,d)));return e}return a.addEventListener(b,c,d),C3.New(C3.Disposable,()=>a.removeEventListener(b,c,d))}},C3.StubDisposable=class extends C3.Disposable{SetAction(a){this._disposeAction=a}},C3.CompositeDisposable=class extends C3.Disposable{constructor(...a){super(),this._disposables=new Set;for(let b of a)this.Add(b)}Add(...a){if(this._disposed)throw new Error("already disposed");for(let b of a)this._disposables.add(b)}Remove(a){if(this._disposed)throw new Error("already disposed");this._disposables.delete(a)}RemoveAll(){if(this._disposed)throw new Error("already disposed");if(this._disposables){for(let a of this._disposables)a.Dispose();this._disposables.clear()}}IsDisposed(){return this._disposed}Dispose(){if(this._disposed)throw new Error("already disposed");this._disposed=!0;for(let a of this._disposables)a.Dispose();this._disposables.clear(),this._disposables=null}Release(){this.Dispose()}}; + +// c3/lib/util/kahanSum.js +"use strict";C3.KahanSum=class extends C3.DefendedBase{constructor(){super(),this._c=0,this._y=0,this._t=0,this._sum=0}Add(a){a=+a,this._y=a-this._c,this._t=this._sum+this._y,this._c=this._t-this._sum-this._y,this._sum=this._t}Subtract(a){this._sum-=+a}Get(){return this._sum}Reset(){this._c=0,this._y=0,this._t=0,this._sum=0}Set(a){this._c=0,this._y=0,this._t=0,this._sum=+a}Release(){}}; + +// c3/lib/util/redblackset.js +"use strict";{const a={};a.RBnode=function(a){this.tree=a,this.right=this.tree.sentinel,this.left=this.tree.sentinel,this.parent=null,this.color=!1,this.key=null},a.RedBlackSet=function(b){this.size=0,this.sentinel=new a.RBnode(this),this.sentinel.color=!1,this.root=this.sentinel,this.root.parent=this.sentinel,this.compare=b||this.default_compare},a.RedBlackSet.prototype.default_compare=function(c,a){return cthis.compare(c.key,e.key)?e.left:e.right;c.parent=d,d==this.sentinel?this.root=c:0>this.compare(c.key,d.key)?d.left=c:d.right=c,c.left=this.sentinel,c.right=this.sentinel,c.color=!0,this.insertFixup(c),this.size++}else{var f=this.get_(b);f.key=b}},a.RedBlackSet.prototype.insertFixup=function(a){for(;a!=this.sentinel&&a!=this.root&&a.parent.color==!0;)if(a.parent==a.parent.parent.left){var b=a.parent.parent.right;b.color==!0?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a==a.parent.right&&(a=a.parent,this.leftRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,a.parent.parent!=this.sentinel&&this.rightRotate(a.parent.parent))}else{var b=a.parent.parent.left;b.color==!0?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a==a.parent.left&&(a=a.parent,this.rightRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,a.parent.parent!=this.sentinel&&this.leftRotate(a.parent.parent))}this.root.color=!1},a.RedBlackSet.prototype.delete_=function(a){var b,c;b=a.left==this.sentinel||a.right==this.sentinel?a:this.successor_(a),c=b.left==this.sentinel?b.right:b.left,c.parent=b.parent,b.parent==this.sentinel?this.root=c:b==b.parent.left?b.parent.left=c:b.parent.right=c,b!=a&&(a.key=b.key),b.color==!1&&this.deleteFixup(c),this.size--},a.RedBlackSet.prototype.deleteFixup=function(a){for(;a!=this.root&&a.color==!1;)if(a==a.parent.left){var b=a.parent.right;b.color==!0&&(b.color=!1,a.parent.color=!0,this.leftRotate(a.parent),b=a.parent.right),b.left.color==!1&&b.right.color==!1?(b.color=!0,a=a.parent):(b.right.color==!1&&(b.left.color=!1,b.color=!0,this.rightRotate(b),b=a.parent.right),b.color=a.parent.color,a.parent.color=!1,b.right.color=!1,this.leftRotate(a.parent),a=this.root)}else{var b=a.parent.left;b.color==!0&&(b.color=!1,a.parent.color=!0,this.rightRotate(a.parent),b=a.parent.left),b.right.color==!1&&b.left.color==!1?(b.color=!0,a=a.parent):(b.left.color==!1&&(b.right.color=!1,b.color=!0,this.leftRotate(b),b=a.parent.left),b.color=a.parent.color,a.parent.color=!1,b.left.color=!1,this.rightRotate(a.parent),a=this.root)}a.color=!1},a.RedBlackSet.prototype.remove=function(a){var b=this.get_(a);if(b!=this.sentinel){var c=b.key;return this.delete_(b),c}return null},a.RedBlackSet.prototype.removeSwapped=function(a,b){this.remove(b)},a.RedBlackSet.prototype.min=function(a){for(;a.left!=this.sentinel;)a=a.left;return a},a.RedBlackSet.prototype.max=function(a){for(;a.right!=this.sentinel;)a=a.right;return a},a.RedBlackSet.prototype.successor_=function(a){if(a.right!=this.sentinel)return this.min(a.right);for(var b=a.parent;b!=this.sentinel&&a==b.right;)a=b,b=b.parent;return b},a.RedBlackSet.prototype.predeccessor_=function(a){if(a.left!=this.sentinel)return this.max(a.left);for(var b=a.parent;b!=this.sentinel&&a==b.left;)a=b,b=b.parent;return b},a.RedBlackSet.prototype.successor=function(a){if(0this.compare(a,b.key)?b.left:b.right;return b},a.RedBlackSet.prototype.contains=function(a){return null!=this.get_(a).key},a.RedBlackSet.prototype.getValues=function(){var a=[];return this.forEach(function(b){a.push(b)}),a},a.RedBlackSet.prototype.insertAll=function(b){if("array"==a.typeOf(b))for(var c=0;cc)return!1;var d=0;if(this.isEmpty())return!0;for(var e=this.min(this.root);e!=this.sentinel;e=this.successor_(e))a.contains.call(b,b,e.key)&&d++;return d==this.getCount()},a.RedBlackSet.prototype.intersection=function(b){var c=new a.RedBlackSet(this.compare);if(this.isEmpty())return c;for(var d=this.min(this.root);d!=this.sentinel;d=this.successor_(d))b.contains.call(b,d.key,d.key,this)&&c.insert(d.key);return c},C3.RedBlackSet=class extends C3.DefendedBase{constructor(b){super();this._rbSet=new a.RedBlackSet(b)}Add(a){this._rbSet.insert(a)}Remove(a){this._rbSet.remove(a)}Has(a){return this._rbSet.contains(a)}Clear(){this._rbSet.clear()}toArray(){return this._rbSet.getValues()}GetSize(){return this._rbSet.getCount()}IsEmpty(){return this._rbSet.isEmpty()}ForEach(a){this._rbSet.forEach(a)}Front(){if(this.IsEmpty())throw new Error("empty set");const a=this._rbSet,b=a.min(a.root);return b.key}Shift(){if(this.IsEmpty())throw new Error("empty set");const a=this.Front();return this.Remove(a),a}*values(){if(!this.IsEmpty()){const a=this._rbSet;for(let b=a.min(a.root);b!=a.sentinel;b=a.successor_(b))yield b.key}}[Symbol.iterator](){return this.values()}}} + +// ../lib/util/promiseThrottle.js +"use strict";C3.PromiseThrottle=class{constructor(a=C3.hardwareConcurrency){this._maxParallel=a,this._queue=[],this._activeCount=0}Add(a){return new Promise((b,c)=>{this._queue.push({func:a,resolve:b,reject:c}),this._MaybeStartNext()})}_FindInQueue(a){for(let b=0,c=this._queue.length;b=this._maxParallel)return;this._activeCount++;const a=this._queue.shift();a.func().then((b)=>{a.resolve(b),this._activeCount--,this._MaybeStartNext()}).catch((b)=>{a.reject(b),this._activeCount--,this._MaybeStartNext()})}static async Batch(a,b){const c=[];let d=!1;const e=async()=>{for(let a;a=b.pop();){if(d)return;try{c.push((await a()))}catch(a){throw d=!0,a}}},f=[];for(;a--;)f.push(e());return await Promise.all(f),c}}; + +// ../lib/util/rateLimiter.js +"use strict";C3.RateLimiter=class{constructor(a,b,c){this._callback=a,this._interval=b,this._intervalOnBattery=c||2*b,this._timerId=-1,this._lastCallTime=-Infinity,this._timerCallFunc=()=>this._OnTimer(),this._ignoreReset=!1,this._canRunImmediate=!1,this._callbackArguments=null}SetCanRunImmediate(a){this._canRunImmediate=!!a}_GetInterval(){return"undefined"!=typeof C3.Battery&&C3.Battery.IsOnBatteryPower()?this._intervalOnBattery:this._interval}Call(...a){if(-1===this._timerId){this._callbackArguments=a;let b=C3.FastGetDateNow(),c=b-this._lastCallTime,d=this._GetInterval();c>=d&&this._canRunImmediate?(this._lastCallTime=b,this._RunCallback()):this._timerId=self.setTimeout(this._timerCallFunc,Math.max(d-c,4))}}_RunCallback(){this._ignoreReset=!0,this._callback(...this._callbackArguments),this._ignoreReset=!1}Reset(){this._ignoreReset||(this._CancelTimer(),this._lastCallTime=C3.FastGetDateNow())}_OnTimer(){this._timerId=-1,this._lastCallTime=C3.FastGetDateNow(),this._RunCallback()}_CancelTimer(){-1!==this._timerId&&(self.clearTimeout(this._timerId),this._timerId=-1)}Release(){this._CancelTimer(),this._callback=null,this._callbackArguments=null,this._timerCallFunc=null}}; + +// ../lib/str/str.js +"use strict";{function a(a){return e.get(a)}C3.UTF8_BOM="\uFEFF";const b=new Set([..."0123456789"]);C3.IsNumericChar=function(a){return b.has(a)};const d=new Set([..." \t\n\r\xA0\x85\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u202F\u205F\u3000"]);C3.IsWhitespaceChar=function(a){return d.has(a)},C3.FilterWhitespace=function(a){return[...a].filter((a)=>!C3.IsWhitespaceChar(a)).join("")},C3.IsStringAllWhitespace=function(a){for(const b of a)if(!C3.IsWhitespaceChar(b))return!1;return!0},C3.IsUnprintableChar=function(a){return 1===a.length&&32>a.charCodeAt(0)},C3.FilterUnprintableChars=function(a){return[...a].filter((a)=>!C3.IsUnprintableChar(a)).join("")};const c=new Set([..."0123456789.+-e"]);C3.IsStringNumber=function(a){if(a=a.trim(),!a.length)return!1;let d=a.charAt(0);if("-"!==d&&!b.has(d))return!1;for(let b of a)if(!c.has(b))return!1;return!0},C3.RemoveTrailingDigits=function(a){let b=a.length;for(;0",">"],["\"","""],["'","'"]]);const f=/[&<>"']/g;C3.EscapeHTML=function(b){return b.replace(f,a)},C3.EscapeJS=function(a){let b=C3.ReplaceAll(a,"\\","\\\\");return b=C3.ReplaceAll(b,"\"","\\\""),b=C3.ReplaceAll(b,"\t","\\t"),b=C3.ReplaceAll(b,"\r",""),C3.ReplaceAll(b,"\n","\\n")},C3.EscapeXML=function(a){let b=C3.ReplaceAll(a,"&","&");return b=C3.ReplaceAll(b,"<","<"),b=C3.ReplaceAll(b,">",">"),C3.ReplaceAll(b,"\"",""")};const g=/[-[\]{}()*+?.,\\^$|#\s]/g;C3.EscapeRegex=function(a){return a.replace(g,"\\$&")},C3.FindAll=function(a,b,c=!1){if(!b)return[];c||(a=a.toLowerCase(),b=b.toLowerCase());const d=b.length;let e=0,f=0,g=[];for(;-1<(f=a.indexOf(b,e));)g.push(f),e=f+d;return g},C3.ReplaceAll=function(a,b,c){return a.replace(new RegExp(C3.EscapeRegex(b),"g"),c)},C3.ReplaceAllCaseInsensitive=function(a,b,c){return a.replace(new RegExp(C3.EscapeRegex(b),"gi"),c)};let h=new WeakMap;C3.SetElementContent=function(a,b,c){let d=h.get(a);if("string"==typeof b){if(!c&&b===d)return;a.textContent=b,h.set(a,b)}else{if(!c&&b.equals(d))return;if(b.isPlainText()){let c=b.toString();a.textContent=c,h.set(a,c)}else a.innerHTML=b.toHTML(),b instanceof C3.BBString&&b.attachLinkHandlers(a),h.set(a,b.toString())}},C3.StringLikeEquals=function(c,a){return c instanceof C3.HtmlString||c instanceof C3.BBString?c.equals(a):a instanceof C3.HtmlString||a instanceof C3.BBString?a.equals(c):c===a},C3.StringSubstitute=function(a,...b){let c=a;for(let d=0,e=b.length;dd?1:ba){let b=a/i;return b=10>b?c(10*b)/10:c(b),langSub(d+"kilobytes",b)}if(1073741824>a){let b=a/1048576;return b=10>b?c(10*b)/10:c(b),langSub(d+"megabytes",b)}if(1099511627776>a){let b=a/1073741824;return b=10>b?c(10*b)/10:c(b),langSub(d+"gigabytes",b)}else{let b=a/1099511627776;return b=10>b?c(10*b)/10:c(b),langSub(d+"terabytes",b)}};const j={approximate:!1,days:!0,hours:!0,minutes:!0,seconds:!0};C3.FormatTime=function(a,b){var c=Math.floor;b=Object.assign({},j,b),C3.Lang.PushContext("common.time");const d=[];if(b.days){const b=c(a/86400);0a?"-":"";a=Math.abs(a);let d=a.toString(),e=b-d.length;for(let d=0;da.toUpperCase())},C3.CompareVersionStrings=function(a,b){let c=a.split(".").map((a)=>a.trim()),d=b.split(".").map((a)=>a.trim());C3.resizeArray(c,4,"0"),C3.resizeArray(d,4,"0"),c=c.map((a)=>parseInt(a,10)),d=d.map((a)=>parseInt(a,10));for(let e=0;4>e;++e){const a=c[e]-d[e];if(0!=a)return 0>a?-1:1}return 0},C3.CreateGUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(a)=>{const b=Math.floor(16*Math.random()),c="x"===a?b:8|3&b;return c.toString(16)})},C3.StringHammingDistance=function(c,a){if(c.length!==a.length)throw new Error("strings must be same length");let b=0;for(let d=0,e=c.length;d":`<${a} class="${b}">`}}else if("a"===f&&!c){const a=parseInt(d.substring(1),10)-1;if(0>a||a>=e.length)throw new Error("invalid bbcode link substitution");const b=e[a];if("string"==typeof b)return`
`;if("function"==typeof b)return``;throw new TypeError("invalid bbcode link action")}else return"<"+c+f+">"}const b=new Map([["b","strong"],["i","em"],["s","s"],["u","u"],["sub","sub"],["sup","sup"],["small","small"],["mark","mark"],["a1","a"],["a2","a"],["a3","a"],["a4","a"],["a5","a"],["a6","a"],["a7","a"],["a8","a"],["a9","a"],["bad",["span","bbCodeBad"]],["good",["span","bbCodeGood"]],["info",["span","bbCodeInfo"]],["h1",["span","bbCodeH1"]],["h2",["span","bbCodeH2"]],["h3",["span","bbCodeH3"]],["h4",["span","bbCodeH4"]],["item",["span","bbCodeItem"]]]),c=/\[(\/?)([a-zA-Z0-9]+)\]/g,d=/\[(\/?)(.*?)\]/g;let e=null;const f=/\n/g;C3.BBString=class{constructor(a,b){if(this._bbstr=b&&b.noEscape?a:C3.EscapeHTML(a),this._htmlstr="",this._convertLineBreaks=!1,this._linkActions=[],b&&(this._convertLineBreaks=!!b.convertLineBreaks,b.links)){if(9")),this._htmlstr=b}return this._htmlstr}attachLinkHandlers(a){if(this._linkActions.length)for(let b=0,c=this._linkActions.length;bc)return;if(1===a.length){const d=a[0],e=d.text,f=d.styles;if(100>=e.length&&!e.includes("\n")){const a=b(e,f);if(a.width<=c){const b=[];return this._AddFrag(b,e,f,a.width,a.height),void this._AddLine(b,a.width,a.height)}}}let e;e="word"===d?a.map((a)=>({words:this._TokeniseWords(a.text),styles:a.styles})):a.map((a)=>({words:[...a.text],styles:a.styles})),this._WrapText(e,b,c)}_TokeniseWords(a){const b=[...a],c=[];let d="",e=!1;for(const f of b)if("\n"===f)d&&c.push(d),c.push("\n"),d="";else if(!d)d=f,e=C3.IsWhitespaceChar(f);else{const a=C3.IsWhitespaceChar(f);a===e?d+=f:(c.push(d),d=f,e=a)}return d&&c.push(d),c}_WrapText(a,b,c){var d=Math.max;let e="",f=0,g=0,h=0,i=0,j=[];for(const k of a){const a=k.styles,l=k.words;for(const k of l){if("\n"===k){0===h&&(h=b(" ",a).height),e&&this._AddFrag(j,e,a,f,g||h),this._AddLine(j,i+f,h),j=[],e="",f=0,g=0,i=0,h=0;continue}const l=e+k,m=b(l,a),n=m.width,o=m.height;if(!(i+n>=c))e=l,f=n,g=d(g,o),h=d(h,o);else if(e&&this._AddFrag(j,e,a,f,g),j.length&&(this._AddLine(j,i+f,h),j=[]),i=0,C3.IsStringAllWhitespace(k))e="",f=0,g=0,h=0;else{e=k;const c=b(k,a);f=c.width,g=c.height,h=c.height}}e&&(this._AddFrag(j,e,a,f,g),i+=f,e="",f=0,g=0)}j.length&&this._AddLine(j,i+f,h);for(const d of this._lines){const a=d.fragments;if(!a.length)continue;const c=a[a.length-1],e=c.text,f=e.trimEnd();if(!f)d.width-=c.width,a.pop();else if(f.length=this._width||0>=this._height)throw new Error("invalid texture data size");if(g.isSvg){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.drawImage(e,0,0,this._width,this._height),e=a}const h=C3.isPOT(this._width)&&C3.isPOT(this._height),i=this._renderer.GetMaxTextureSize();if(this._width>i||this._height>i)throw new Error("texture data exceeds maximum texture size");const j=this._renderer.GetContext(),k=this._renderer.GetWebGLVersionNumber();this._texture=j.createTexture(),j.bindTexture(j.TEXTURE_2D,this._texture),j.pixelStorei(j["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],g.premultiplyAlpha);const l=a(this._pixelFormat,j);if(!this._renderer.SupportsNPOTTextures()&&!h&&this._isTiled){if(null===e)throw new Error("cannot pass null data when creating a NPOT tiled texture without NPOT support");if(e instanceof ArrayBuffer&&(e=new ImageData(new Uint8ClampedArray(e),this._width,this._height)),e instanceof ImageData){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.putImageData(e,0,0),e=a}const a=document.createElement("canvas");a.width=C3.nextHighestPowerOfTwo(this._width),a.height=C3.nextHighestPowerOfTwo(this._height);const b=a.getContext("2d");b.imageSmoothingEnabled=this._isLinearSampling,b.drawImage(e,0,0,this._width,this._height,0,0,a.width,a.height),j.texImage2D(j.TEXTURE_2D,0,l.internalformat,l.format,l.type,a)}else if(2<=k){let a;a=this._isMipMapped?Math.floor(Math.log2(Math.max(this._width,this._height))+1):1,j.texStorage2D(j.TEXTURE_2D,a,l.sizedinternalformat,this._width,this._height),e instanceof ArrayBuffer?j.texSubImage2D(j.TEXTURE_2D,0,0,0,this._width,this._height,l.format,l.type,new Uint8Array(e)):null!==e&&j.texSubImage2D(j.TEXTURE_2D,0,0,0,l.format,l.type,e)}else e instanceof ArrayBuffer?j.texImage2D(j.TEXTURE_2D,0,l.internalformat,this._width,this._height,0,l.format,l.type,new Uint8Array(e)):null===e?j.texImage2D(j.TEXTURE_2D,0,l.internalformat,this._width,this._height,0,l.format,l.type,null):j.texImage2D(j.TEXTURE_2D,0,l.internalformat,l.format,l.type,e);null!==e&&this._SetTextureParameters(j),j.bindTexture(j.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,f.add(this)}_CreateDynamic(c,e,g){var h=Math.floor;if(g=Object.assign({},d,g),this._texture)throw new Error("already created texture");if(this._isTiled=!!g.isTiled,this._tileType=g.tileType,this._isLinearSampling=!!g.linearSampling,this._pixelFormat=g.pixelFormat,this._isMipMapped=!!g.mipMap,!b.has(this._pixelFormat))throw new Error("invalid pixel format");this._isStatic=!1,this._width=h(c),this._height=h(e);const i=C3.isPOT(this._width)&&C3.isPOT(this._height),j=this._renderer.GetMaxTextureSize();if(0>=this._width||0>=this._height)throw new Error("invalid texture size");if(this._width>j||this._height>j)throw new Error("texture exceeds maximum texture size");if(!this._renderer.SupportsNPOTTextures()&&this._isTiled&&!i)throw new Error("non-power-of-two tiled textures not supported");const k=this._renderer.GetContext(),l=this._renderer.GetWebGLVersionNumber();this._texture=k.createTexture(),k.bindTexture(k.TEXTURE_2D,this._texture),k.pixelStorei(k["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],g.premultiplyAlpha);const m=a(this._pixelFormat,k),n=2<=l?m.sizedinternalformat:m.internalformat;k.texImage2D(k.TEXTURE_2D,0,n,this._width,this._height,0,m.format,m.type,null),this._SetTextureParameters(k),k.bindTexture(k.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,f.add(this)}_GetMipMapHint(a){if("default"===this._mipMapQuality)return this._isStatic?a.NICEST:a.FASTEST;if("low"===this._mipMapQuality)return a.FASTEST;if("high"===this._mipMapQuality)return a.NICEST;throw new Error("invalid mipmap quality")}_SetTextureParameters(a){const b=C3.isPOT(this._width)&&C3.isPOT(this._height);if(!this._isTiled)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);else if("repeat-x"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);else if("repeat-y"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.REPEAT);else if("repeat"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.REPEAT);else throw new Error("invalid tile type");this._isLinearSampling?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),(b||this._renderer.SupportsNPOTTextures())&&this._isMipMapped?(a.hint(a.GENERATE_MIPMAP_HINT,this._GetMipMapHint(a)),a.generateMipmap(a.TEXTURE_2D),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,this._renderer.HasMajorPerformanceCaveat()?a.LINEAR_MIPMAP_NEAREST:a.LINEAR_MIPMAP_LINEAR)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),this._isMipMapped=!1)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),this._isMipMapped=!1)}_Update(b,c){if(("undefined"==typeof HTMLImageElement||!(b instanceof HTMLImageElement))&&("undefined"==typeof HTMLVideoElement||!(b instanceof HTMLVideoElement))&&("undefined"==typeof HTMLCanvasElement||!(b instanceof HTMLCanvasElement))&&("undefined"==typeof ImageBitmap||!(b instanceof ImageBitmap))&&("undefined"==typeof OffscreenCanvas||!(b instanceof OffscreenCanvas))&&!(b instanceof ImageData))throw new Error("invalid texture source");if(!this._texture||0>=this._refCount)throw new Error("texture not created");if(this._isStatic)throw new Error("cannot update static texture");c=Object.assign({},e,c);const d=b.width||b.videoWidth,f=b.height||b.videoHeight,g=this._renderer.GetWebGLVersionNumber(),h=this._renderer.GetContext();h.bindTexture(h.TEXTURE_2D,this._texture),h.pixelStorei(h["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],c.premultiplyAlpha);const i=a(this._pixelFormat,h),j=2<=g?i.sizedinternalformat:i.internalformat;try{if(this._width===d&&this._height===f){const a=C3.isPOT(this._width)&&C3.isPOT(this._height);h.texSubImage2D(h.TEXTURE_2D,0,0,0,i.format,i.type,b),(a||this._renderer.SupportsNPOTTextures())&&this._isMipMapped&&(h.hint(h.GENERATE_MIPMAP_HINT,this._GetMipMapHint(h)),h.generateMipmap(h.TEXTURE_2D))}else{this._width=d,this._height=f;const a=C3.isPOT(this._width)&&C3.isPOT(this._height);if(!this._renderer.SupportsNPOTTextures()&&this._isTiled&&!a)throw new Error("non-power-of-two tiled textures not supported");h.texImage2D(h.TEXTURE_2D,0,j,i.format,i.type,b),(a||this._renderer.SupportsNPOTTextures())&&this._isMipMapped&&(h.hint(h.GENERATE_MIPMAP_HINT,this._GetMipMapHint(h)),h.generateMipmap(h.TEXTURE_2D))}}catch(a){console.error("Error updating WebGL texture: ",a)}h.bindTexture(h.TEXTURE_2D,null),this._renderer._ResetLastTexture()}_Delete(){if(0=this._refCount)throw new Error("no more references");this._refCount--}GetReferenceCount(){return this._refCount}GetWidth(){return this._width}GetHeight(){return this._height}IsStatic(){return this._isStatic}GetEstimatedMemoryUsage(){let a=this._width*this._height;switch(this._pixelFormat){case"rgba8":a*=4;break;case"rgb8":a*=3;break;case"rgba4":case"rgb5_a1":case"rgb565":a*=2;}return this._isMipMapped&&(a+=Math.floor(a/3)),a}static OnContextLost(){f.clear()}static allTextures(){return f.values()}}} + +// ../lib/gfx/renderTarget.js +"use strict";{const a={linearSampling:!0,alpha:!0,readback:!0,isDefaultSize:!0,multisampling:0},b=new Set;C3.Gfx.WebGLRenderTarget=class{constructor(a){this._renderer=a,this._frameBuffer=null,this._texture=null,this._renderBuffer=null,this._width=0,this._height=0,this._isDefaultSize=!0,this._isLinearSampling=!0,this._alpha=!0,this._readback=!0,this._multisampling=0}_Create(c,d,e){e=Object.assign({},a,e);const f=this._renderer.GetWebGLVersionNumber();if(this._texture||this._renderBuffer)throw new Error("already created render target");if(this._isLinearSampling=!!e.linearSampling,this._alpha=!!e.alpha,this._readback=!!e.readback,this._isDefaultSize=!!e.isDefaultSize,this._multisampling=e.multisampling,0f||this._readback))throw new Error("invalid use of multisampling");if(2>f&&(this._readback=!0),this._width=c,this._height=d,0>=this._width||0>=this._height)throw new Error("invalid render target size");const g=this._renderer.GetContext();if(this._frameBuffer=g.createFramebuffer(),g.bindFramebuffer(g.FRAMEBUFFER,this._frameBuffer),this._readback){this._texture=this._renderer.CreateDynamicTexture(this._width,this._height,{linearSampling:this._isLinearSampling,pixelFormat:this._alpha?"rgba8":"rgb8",mipMap:!1});const a=this._texture._GetTexture();g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.TEXTURE_2D,a,0)}else{this._renderBuffer=g.createRenderbuffer(),g.bindRenderbuffer(g.RENDERBUFFER,this._renderBuffer);const a=this._alpha?g.RGBA8:g.RGB8;if(0a&&(this._multisampling=a)}else this._multisampling=0}0===this._multisampling?g.renderbufferStorage(g.RENDERBUFFER,a,this._width,this._height):g.renderbufferStorageMultisample(g.RENDERBUFFER,this._multisampling,a,this._width,this._height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.RENDERBUFFER,this._renderBuffer),g.bindRenderbuffer(g.RENDERBUFFER,null)}g.bindFramebuffer(g.FRAMEBUFFER,null),b.add(this)}_Resize(a,b){if(this._width!==a||this._height!==b){this._width=a,this._height=b;const c=this._renderer.GetContext();c.bindFramebuffer(c.FRAMEBUFFER,this._frameBuffer),this._texture?this._texture._Update(new ImageData(this._width,this._height)):(c.bindRenderbuffer(c.RENDERBUFFER,this._renderBuffer),c.renderbufferStorage(c.RENDERBUFFER,this._alpha?c.RGBA8:c.RGB8,this._width,this._height),c.bindRenderbuffer(c.RENDERBUFFER,null)),c.bindFramebuffer(c.FRAMEBUFFER,null)}}_Delete(){if(!this._texture&&!this._renderBuffer)throw new Error("already deleted render target");b.delete(this);const a=this._renderer.GetContext();a.bindFramebuffer(a.FRAMEBUFFER,this._frameBuffer),this._texture?(a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,null,0),this._renderer.DeleteTexture(this._texture),this._texture=null):this._renderBuffer&&(a.framebufferRenderbuffer(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.RENDERBUFFER,null),a.deleteRenderbuffer(this._renderBuffer),this._renderBuffer=null),a.bindFramebuffer(a.FRAMEBUFFER,null),2<=this._renderer.GetWebGLVersionNumber()&&(a.bindFramebuffer(a.READ_FRAMEBUFFER,null),a.bindFramebuffer(a.DRAW_FRAMEBUFFER,null)),a.deleteFramebuffer(this._frameBuffer),this._renderer.GetBatchState().currentFramebuffer=null,this._frameBuffer=null}_GetFramebuffer(){return this._frameBuffer}GetWebGLRenderer(){return this._renderer}GetTexture(){return this._texture}IsLinearSampling(){return this._isLinearSampling}HasAlpha(){return this._alpha}IsReadback(){return this._readback}GetWidth(){return this._width}GetHeight(){return this._height}IsDefaultSize(){return this._isDefaultSize}GetMultisampling(){return this._multisampling}GetOptions(){const a={linearSampling:this._isLinearSampling,alpha:this._alpha,readback:this._readback};return this._isDefaultSize||(a.width=this._width,a.height=this._height),a}IsCompatibleWithOptions(b){return b=Object.assign({},a,b),!!b.linearSampling===this.IsLinearSampling()&&!!b.alpha===this.HasAlpha()&&!(2<=this._renderer.GetWebGLVersionNumber()&&!!b.readback!==this.IsReadback())&&("number"==typeof b.width||"number"==typeof b.height?!this.IsDefaultSize()&&this.GetWidth()===b.width&&this.GetHeight()===b.height:this.IsDefaultSize())}_GetWebGLTexture(){return this._texture?this._texture._GetTexture():null}GetEstimatedMemoryUsage(){return this._texture?this._texture.GetEstimatedMemoryUsage():this._width*this._height*(this._alpha?4:3)}static async DebugReadPixelsToBlob(a,b){const c=await a.ReadBackRenderTargetToImageData(b,!0);return await C3.ImageDataToBlob(c)}static OnContextLost(){b.clear()}static allRenderTargets(){return b.values()}static ResizeAll(a,c){for(const d of b)d.IsDefaultSize()&&d._Resize(a,c)}}} + +// ../lib/gfx/shaderProgram.js +"use strict";C3.Gfx.WebGLShaderProgram=class{static async Compile(a,b,c,d){const e=a.GetContext(),f=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(f,b),e.compileShader(f);const g=e.createShader(e.VERTEX_SHADER);e.shaderSource(g,c),e.compileShader(g);const h=e.createProgram();e.attachShader(h,f),e.attachShader(h,g),e.bindAttribLocation(h,0,"aPos"),e.bindAttribLocation(h,1,"aTex"),e.bindAttribLocation(h,2,"aPoints"),e.linkProgram(h);const i=a._GetParallelShaderCompileExtension();if(i?await a._WaitForObjectReady(()=>e.getProgramParameter(h,i["COMPLETION_STATUS_KHR"])):await C3.Wait(5),!e.getShaderParameter(f,e.COMPILE_STATUS)){const a=e.getShaderInfoLog(f);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error compiling fragment shader: ",a)}if(!e.getShaderParameter(g,e.COMPILE_STATUS)){const a=e.getShaderInfoLog(g);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error compiling vertex shader: ",a)}if(!e.getProgramParameter(h,e.LINK_STATUS)){const a=e.getProgramInfoLog(h);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error linking shader program: ",a)}const j=C3.FilterUnprintableChars(e.getProgramInfoLog(h)||"").trim();return j&&!C3.IsStringAllWhitespace(j)&&console.info(`[WebGL] Shader program '${d}' compilation log: `,j),e.deleteShader(f),e.deleteShader(g),h}static async Create(a,b,c,d){const e=await C3.Gfx.WebGLShaderProgram.Compile(a,b.src,c,d);return new C3.Gfx.WebGLShaderProgram(a,e,b,d)}constructor(a,b,c,d){const e=a.GetContext(),f=a.GetBatchState();a.EndBatch(),e.useProgram(b),this._gl=e,this._renderer=a,this._name=d,this._shaderProgram=b,this._isDeviceTransform=""===d;const g=e.getAttribLocation(b,"aPos"),h=e.getAttribLocation(b,"aTex"),i=e.getAttribLocation(b,"aPoints");-1!==g&&(e.bindBuffer(e.ARRAY_BUFFER,a._vertexBuffer),e.vertexAttribPointer(g,a.GetNumVertexComponents(),e.FLOAT,!1,0,0),e.enableVertexAttribArray(g)),-1!==h&&(e.bindBuffer(e.ARRAY_BUFFER,a._texcoordBuffer),e.vertexAttribPointer(h,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(h)),-1!==i&&(e.bindBuffer(e.ARRAY_BUFFER,a._pointBuffer),e.vertexAttribPointer(i,4,e.FLOAT,!1,0,0),e.enableVertexAttribArray(i)),e.bindBuffer(e.ARRAY_BUFFER,null),this._uMatP=new C3.Gfx.WebGLShaderUniform(this,"matP","mat4"),this._uMatMV=new C3.Gfx.WebGLShaderUniform(this,"matMV","mat4"),this._uColor=new C3.Gfx.WebGLShaderUniform(this,"color","vec4"),this._uSamplerFront=new C3.Gfx.WebGLShaderUniform(this,"samplerFront","sampler"),this._uPointTexStart=new C3.Gfx.WebGLShaderUniform(this,"pointTexStart","vec2"),this._uPointTexEnd=new C3.Gfx.WebGLShaderUniform(this,"pointTexEnd","vec2"),this._uTileSize=new C3.Gfx.WebGLShaderUniform(this,"tileSize","vec2"),this._uTileSpacing=new C3.Gfx.WebGLShaderUniform(this,"tileSpacing","vec2"),this._uColor2=new C3.Gfx.WebGLShaderUniform(this,"color2","vec4"),this._uOutlineThickness=new C3.Gfx.WebGLShaderUniform(this,"outlineThickness","float"),this._uSamplerBack=new C3.Gfx.WebGLShaderUniform(this,"samplerBack","sampler"),this._uDestStart=new C3.Gfx.WebGLShaderUniform(this,"destStart","vec2"),this._uDestEnd=new C3.Gfx.WebGLShaderUniform(this,"destEnd","vec2"),this._uSrcStart=new C3.Gfx.WebGLShaderUniform(this,"srcStart","vec2"),this._uSrcEnd=new C3.Gfx.WebGLShaderUniform(this,"srcEnd","vec2"),this._uSrcOriginStart=new C3.Gfx.WebGLShaderUniform(this,"srcOriginStart","vec2"),this._uSrcOriginEnd=new C3.Gfx.WebGLShaderUniform(this,"srcOriginEnd","vec2"),this._uPixelSize=new C3.Gfx.WebGLShaderUniform(this,"pixelSize","vec2"),this._uSeconds=new C3.Gfx.WebGLShaderUniform(this,"seconds","float"),this._uLayerScale=new C3.Gfx.WebGLShaderUniform(this,"layerScale","float"),this._uLayerAngle=new C3.Gfx.WebGLShaderUniform(this,"layerAngle","float"),this._uLayoutStart=new C3.Gfx.WebGLShaderUniform(this,"layoutStart","vec2"),this._uLayoutEnd=new C3.Gfx.WebGLShaderUniform(this,"layoutEnd","vec2"),this._hasAnyOptionalUniforms=!!(this._uPixelSize.IsUsed()||this._uSeconds.IsUsed()||this._uSamplerBack.IsUsed()||this._uDestStart.IsUsed()||this._uDestEnd.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed()||this._uLayerScale.IsUsed()||this._uLayerAngle.IsUsed()||this._uLayoutStart.IsUsed()||this._uLayoutEnd.IsUsed()),this._extendBoxHorizontal=c.extendBoxHorizontal||0,this._extendBoxVertical=c.extendBoxVertical||0,this._crossSampling=!!c.crossSampling,this._mustPreDraw=!!c.mustPreDraw,this._preservesOpaqueness=!!c.preservesOpaqueness,this._animated=!!c.animated;const j=c.parameters||[];this._uCustomParameters=[],this._usesDest=this._uDestStart.IsUsed()||this._uDestEnd.IsUsed(),this._usesAnySrcRectOrPixelSize=this._uPixelSize.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed(),this._needsPostDrawOrExtendBox=this._crossSampling||this._usesDest||0!==this._extendBoxHorizontal||0!==this._extendBoxVertical,this._hasCurrentMatP=!1,this._hasCurrentMatMV=!1,this._uColor.Init4f(1,1,1,1),this._uColor2.Init4f(1,1,1,1),this._uSamplerFront.Init1i(0),this._uSamplerBack.Init1i(1),this._uPointTexStart.Init2f(0,0),this._uPointTexEnd.Init2f(1,1),this._uTileSize.Init2f(0,0),this._uTileSpacing.Init2f(0,0),this._uDestStart.Init2f(0,0),this._uDestEnd.Init2f(1,1),this._uSrcStart.Init2f(0,0),this._uSrcEnd.Init2f(0,0),this._uSrcOriginStart.Init2f(0,0),this._uSrcOriginEnd.Init2f(0,0),this._uPixelSize.Init2f(0,0),this._uLayerScale.Init1f(1),this._uLayerAngle.Init1f(0),this._uSeconds.Init1f(0),this._uLayoutStart.Init2f(0,0),this._uLayoutEnd.Init2f(0,0),this._uOutlineThickness.Init1f(1);for(const e of j){const a=e[0],b=e[2],c=new C3.Gfx.WebGLShaderUniform(this,a,b);"color"===b?c.Init3f(0,0,0):c.Init1f(0),this._uCustomParameters.push(c)}this._isDeviceTransform?this._UpdateDeviceTransformUniforms(f.currentMatP):(this.UpdateMatP(f.currentMatP,!0),this.UpdateMatMV(f.currentMV,!0));const k=f.currentShader;e.useProgram(k?k._shaderProgram:null)}Release(){this._gl.deleteProgram(this._shaderProgram),this._shaderProgram=null,this._renderer._RemoveShaderProgram(this),this._gl=null,this._renderer=null}GetName(){return this._name}GetWebGLContext(){return this._gl}GetShaderProgram(){return this._shaderProgram}UsesDest(){return this._usesDest}UsesCrossSampling(){return this._crossSampling}MustPreDraw(){return this._mustPreDraw}PreservesOpaqueness(){return this._preservesOpaqueness}ExtendsBox(){return 0!==this._extendBoxHorizontal||0!==this._extendBoxVertical}GetBoxExtendHorizontal(){return this._extendBoxHorizontal}GetBoxExtendVertical(){return this._extendBoxVertical}UsesAnySrcRectOrPixelSize(){return this._usesAnySrcRectOrPixelSize}NeedsPostDrawOrExtendsBox(){return this._needsPostDrawOrExtendBox}GetParameterCount(){return this._uCustomParameters.length}GetParameterType(a){return this._uCustomParameters[a].GetType()}AreCustomParametersAlreadySetInBatch(a){for(let b=0,c=a.length;b{const b=a.font.GetName();for(const c of i)(c.IsBBCodeEnabled()||C3.equalsNoCase(c.GetFontName(),b))&&c._SetTextChanged()}),C3.Gfx.WebGLText=class{constructor(a,b){b=Object.assign({},d,b),this._renderer=a,this._fontName="Arial",this._fontSize=16,this._lineHeight=0,this._isBold=!1,this._isItalic=!1,this._colorStr="black",this._isBBcodeEnabled=!1,this.onloadfont=null,this._alreadyLoadedFonts=new Set,this._horizontalAlign="left",this._verticalAlign="top",this._text="",this._bbString=null,this._wrappedText=C3.New(C3.WordWrap),this._wrapMode="word",this._textChanged=!1,this._isUpdating=!1,this._isAsync=!0,this._drawMaxCharCount=-1,this._drawCharCount=0,this._cssWidth=0,this._cssHeight=0,this._width=0,this._height=0,this._zoom=1,this._changed=!1,this._textCanvas=null,this._textContext=null,this._measureContext=null,this._lastCanvasWidth=-1,this._lastCanvasHeight=-1,this._lastTextCanvasFont="",this._lastMeasureCanvasFont="",this._lastTextCanvasFillStyle="",this._lastTextCanvasOpacity=1,this._lastTextCanvasLineWidth=1,this._measureTextCallback=(a,b)=>this._MeasureText(a,b),this._texture=null,this._textureWidth=0,this._textureHeight=0,this._rcTex=new C3.Rect,this._scaleFactor=1,this._needToRecreateTexture=!1,this._textureTimeout=new C3.IdleTimeout(()=>{this.ReleaseTexture(),this._SetTextCanvasSize(8,8)},b.timeout),this.ontextureupdate=null,this._wasReleased=!1,i.add(this)}Release(){this.onloadfont=null,this._alreadyLoadedFonts.clear(),this._bbString=null,this._textCanvas=null,this._textContext=null,this._measureContext=null,this._measureTextCallback=null,this._textureTimeout.Release(),this.ontextureupdate=null,this.ReleaseTexture(),this._wrappedText.Clear(),this._wrappedText=null,this._renderer=null,this._wasReleased=!0,i.delete(this)}_SetChanged(){this._changed=!0}_SetTextChanged(){this._SetChanged(),this._wrappedText.Clear(),this._textChanged=!0}SetIsAsync(b){this._isAsync=!!b}IsAsync(){return this._isAsync}SetBBCodeEnabled(a){a=!!a;this._isBBcodeEnabled===a||(this._isBBcodeEnabled=a,this._textContext&&(this._textContext.textBaseline=this._isBBcodeEnabled?"alphabetic":"top"),this._SetTextChanged())}IsBBCodeEnabled(){return this._isBBcodeEnabled}SetFontName(a){a||(a="serif");this._fontName===a||(this._fontName=a,this._SetTextChanged())}GetFontName(){return this._fontName}SetFontSize(a){.1>a&&(a=.1);this._fontSize===a||(this._fontSize=a,this._SetTextChanged())}SetLineHeight(a){this._lineHeight===a||(this._lineHeight=a,this._SetChanged())}SetBold(a){a=!!a;this._isBold===a||(this._isBold=a,this._SetTextChanged())}SetItalic(a){a=!!a;this._isItalic===a||(this._isItalic=a,this._SetTextChanged())}SetDrawMaxCharacterCount(a){a=Math.floor(a);this._drawMaxCharCount===a||(this._drawMaxCharCount=a,this._SetChanged())}GetDrawMaxCharacterCount(){return this._drawMaxCharCount}_GetStyleTag(a,b){for(let c=a.length-1;0<=c;--c){const d=a[c];if(d.tag===b)return d}return null}_HasStyleTag(a,b){return!!this._GetStyleTag(a,b)}_GetFontString(a,b){let c="";(this._isBold||this._HasStyleTag(b,"b"))&&(c+="bold"),(this._isItalic||this._HasStyleTag(b,"i"))&&(c+=" italic");const d=this._GetStyleTag(b,"size"),e=d?parseFloat(d.param):this._fontSize;c+=a?" "+e+"pt":" "+e*this._scaleFactor*this._zoom*self.devicePixelRatio+"pt";let f=this._fontName;const g=this._GetStyleTag(b,"font");return g&&g.param&&(f=g.param,this.onloadfont&&!this._alreadyLoadedFonts.has(f)&&(this.onloadfont(f),this._alreadyLoadedFonts.add(f))),f&&(c+=" \""+f+"\""),c}SetColor(a){a instanceof C3.Color&&(a=a.getCssRgb());this._colorStr===a||(this._colorStr=a,this._SetChanged())}SetColorRgb(a,c,d){e.setRgb(a,c,d),this.SetColor(e)}SetHorizontalAlignment(a){if(!f.has(a))throw new Error("invalid horizontal alignment");this._horizontalAlign===a||(this._horizontalAlign=a,this._SetChanged())}SetVerticalAlignment(a){if(!g.has(a))throw new Error("invalid vertical alignment");this._verticalAlign===a||(this._verticalAlign=a,this._SetChanged())}SetWordWrapMode(a){if(!h.has(a))throw new Error("invalid word wrap mode");this._wrapMode===a||(this._wrapMode=a,this._SetTextChanged())}SetText(a){this._text===a||(this._text=a,this._SetTextChanged())}SetSize(a,b,c){var d=Math.min;if("undefined"==typeof c&&(c=1),0>=a||0>=a)return;if(this._cssWidth===a&&this._cssHeight===b&&this._zoom===c)return;1===this._zoom!=(1===c)&&(this._needToRecreateTexture=!0);const e=this._cssWidth,f=this._zoom;this._cssWidth=a,this._cssHeight=b,this._zoom=c;const g=self.devicePixelRatio;this._width=this._cssWidth*this._zoom*g,this._height=this._cssHeight*this._zoom*g;const h=Math.max(this._width,this._height),i=d(this._renderer.GetMaxTextureSize(),2048);let j=1;h>i&&(j=i/h,this._width=d(this._width*j,i),this._height=d(this._height*j,i)),this._scaleFactor=j,0=this._width||0>=this._height||(this._changed=!1,this._isUpdating=!0,this._isAsync?C3.Asyncify(()=>this._DoUpdate()):this._DoUpdate())}_DoUpdate(){var a=Math.ceil;this._wasReleased||(this._SetTextCanvasSize(a(this._width),a(this._height)),this._MaybeWrapText(),this._DrawTextToCanvas(),this._UpdateTexture(),this._textureTimeout.Reset(),this._isUpdating=!1)}_SetTextCanvasSize(a,b){this._textCanvas||(this._textCanvas=C3.CreateCanvas(16,16));let c=!1;(this._lastCanvasWidth!==a||this._lastCanvasHeight!==b)&&(this._lastCanvasWidth=a,this._lastCanvasHeight=b,this._textCanvas.width=a,this._textCanvas.height=b,c=!0),this._textContext||(this._textContext=this._textCanvas.getContext("2d"),c=!0),c?(this._textContext.textBaseline=this._isBBcodeEnabled?"alphabetic":"top",this._textContext.font=this._lastTextCanvasFont,this._textContext.fillStyle=this._lastTextCanvasFillStyle,this._textContext.strokeStyle=this._lastTextCanvasFillStyle):this._textContext.clearRect(0,0,a,b)}_MaybeCreateMeasureContext(){this._measureContext||(this._measureContext=C3.CreateCanvas(16,16).getContext("2d"))}_SetMeasureFontString(a){this._lastMeasureCanvasFont===a||(this._lastMeasureCanvasFont=a,this._measureContext.font=a)}_MaybeWrapText(){this._textChanged&&(this._MaybeCreateMeasureContext(),this._isBBcodeEnabled&&(!this._bbString||this._bbString.toString()!==this._text)&&(this._bbString=new C3.BBString(this._text,{noEscape:!0})),this._wrappedText.WordWrap(this._isBBcodeEnabled?this._bbString.toFragmentList():this._text,this._measureTextCallback,this._cssWidth,this._wrapMode),this._textChanged=!1)}_MeasureText(a,b){this._SetMeasureFontString(this._GetFontString(!0,b));const d=this._GetStyleTag(b,"size"),e=d?parseFloat(d.param):this._fontSize;return{width:this._measureContext.measureText(a).width,height:c(e)}}_SetDrawFontString(a){this._lastTextCanvasFont===a||(this._lastTextCanvasFont=a,this._textContext.font=a)}_SetDrawCanvasColor(a){this._lastTextCanvasFillStyle===a||(this._lastTextCanvasFillStyle=a,this._textContext.fillStyle=a,this._textContext.strokeStyle=a)}_SetDrawCanvasOpacity(a){this._lastTextCanvasOpacity===a||(this._lastTextCanvasOpacity=a,this._textContext.globalAlpha=a)}_SetDrawCanvasLineWith(a){this._lastTextCanvasLineWidth===a||(this._lastTextCanvasLineWidth=a,this._textContext.lineWidth=a)}_DrawTextToCanvas(){var a=Math.max;this._drawCharCount=0;const b=this._scaleFactor*this._zoom*self.devicePixelRatio,d=c(this._fontSize)*b,e=(4+this._lineHeight)*b,f=d+e;let g=0;const h=this._wrappedText.GetLines();"center"===this._verticalAlign?g=a(this._height/2-h.length*f/2,0):"bottom"===this._verticalAlign&&(g=a(this._height-h.length*f-2,0));for(let a=0,c=h.length;athis._height-e)break;}else if(0=this._height-(d+e))break;let f=0;"center"===this._horizontalAlign?f=(this._width-c.width*b)/2:"right"===this._horizontalAlign&&(f=this._width-c.width*b),this._DrawTextLine(c,f,g,b),this._isBBcodeEnabled||(g+=d),g+=e}}_DrawTextLine(a,b,c,d){for(const e of a.fragments)this._DrawTextFragment(e,b,c,d,a.height),b+=e.width*d}_DrawTextFragment(c,d,e,f,g){const h=this._textContext,i=g/16;let j=c.width*f;const k=c.height*f,l=c.height/16,m=(4+this._lineHeight)*f,n=c.styles;let o=c.text;if(-1!==this._drawMaxCharCount){if(this._drawCharCount>=this._drawMaxCharCount)return;this._drawCharCount+o.length>this._drawMaxCharCount&&(o=o.substr(0,this._drawMaxCharCount-this._drawCharCount),j=this._MeasureText(o,n).width*f),this._drawCharCount+=o.length}const p=this._GetStyleTag(n,"background"),q=this._HasStyleTag(n,"u"),r=this._HasStyleTag(n,"s");if((!C3.IsStringAllWhitespace(o)||p||q||r)&&!this._HasStyleTag(n,"hide")){const c=this._GetStyleTag(n,"offsetx");d+=c?parseFloat(c.param)*f:0;const g=this._GetStyleTag(n,"offsety");e+=g?parseFloat(g.param)*f:0,p&&(this._SetDrawCanvasColor(p.param),h.fillRect(d,e-k,j,k+m));const s=this._GetStyleTag(n,"color");this._SetDrawCanvasColor(s?s.param:this._colorStr);const t=this._GetStyleTag(n,"opacity");this._SetDrawCanvasOpacity(t?parseFloat(t.param)/100:1);const u=this._HasStyleTag(n,"stroke");if(u&&this._SetDrawCanvasLineWith(l*this._scaleFactor*this._zoom),q&&b(h,u,d,e+f*i,j,f*i),r&&b(h,u,d,e-k/4,j,f*l),this._SetDrawFontString(this._GetFontString(!1,n)),a(h,u,o,d,e,j),!u){this._SetDrawCanvasLineWith(l*this._scaleFactor*this._zoom);const b=this._GetStyleTag(n,"outline");b&&(this._SetDrawCanvasColor(b.param),a(h,!0,o,d,e,j))}}}_UpdateTexture(){var a=Math.ceil;this._renderer.IsContextLost()||(this._textureWidth=a(this._width),this._textureHeight=a(this._height),this._rcTex.set(0,0,this._width/this._textureWidth,this._height/this._textureHeight),this._needToRecreateTexture&&(this.ReleaseTexture(),this._needToRecreateTexture=!1),!this._texture&&(this._texture=this._renderer.CreateDynamicTexture(this._textureWidth,this._textureHeight,{mipMap:1===this._zoom,mipMapQuality:"high"})),this._renderer.UpdateTexture(this._textCanvas,this._texture),this.ontextureupdate&&this.ontextureupdate())}GetTexRect(){return this._rcTex}ReleaseTexture(){this._texture&&(!this._renderer.IsContextLost()&&this._renderer.DeleteTexture(this._texture),this._texture=null)}static OnContextLost(){for(const a of i)a.ReleaseTexture()}static GetAll(){return i.values()}}} + +// ../lib/gfx/query.js +"use strict";{class a{constructor(a){this._gl=a.GetContext(),this._version=a.GetWebGLVersionNumber(),this._timerExt=a._GetDisjointTimerQueryExtension(),this._query=null,this._isActive=!1,this._hasResult=!1,this._result=0,this._query=1===this._version?this._timerExt["createQueryEXT"]():this._gl["createQuery"]()}Release(){this._DeleteQueryObject(),this._gl=null,this._timerExt=null,this._hasResult=!1}_DeleteQueryObject(){this._query&&(1===this._version?this._timerExt["deleteQueryEXT"](this._query):this._gl["deleteQuery"](this._query),this._query=null)}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active");1===this._version?this._timerExt["beginQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"],this._query):this._gl["beginQuery"](this._timerExt["TIME_ELAPSED_EXT"],this._query),this._isActive=!0}EndTimeElapsed(){if(!this._isActive)throw new Error("query not active");1===this._version?this._timerExt["endQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"]):this._gl["endQuery"](this._timerExt["TIME_ELAPSED_EXT"]),this._isActive=!1}CheckForResult(){if(!this._query||this._hasResult||this._isActive)return;let a=!1;a=1===this._version?this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_AVAILABLE_EXT"]):this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT_AVAILABLE"]);const b=this._gl.getParameter(this._timerExt["GPU_DISJOINT_EXT"]);a&&!b&&(this._result=1===this._version?this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_EXT"]):this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT"]),this._result/=1e9,this._hasResult=!0),(a||b)&&this._DeleteQueryObject()}HasResult(){return this._hasResult}GetResult(){if(!this._hasResult)throw new Error("no result available");return this._result}}C3.Gfx.WebGLTimeElapsedQuery=class{constructor(a){this._renderer=a,this._frameNumber=a.GetFrameNumber(),this._isActive=!1,this._parentQuery=null,this._isNested=!1,this._realQuery=null,this._queries=[]}Release(){for(const b of this._queries)b instanceof a&&b.Release();C3.clearArray(this._queries),this._parentQuery=null,this._realQuery=null,this._renderer=null}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active");const a=this._renderer._GetTimeQueryStack();0a.HasResult())}GetResult(){return this._queries.reduce((b,a)=>b+a.GetResult(),0)}GetFrameNumber(){return this._frameNumber}}} + +// ../lib/gfx/queryResultBuffer.js +"use strict";C3.Gfx.WebGLQueryResultBuffer=class{constructor(a,b=1e3){this._renderer=a,this._maxQueries=b,this._buffer=[],this._renderer._AddQueryResultBuffer(this)}Release(){this.Clear(),this._renderer._RemoveQueryResultBuffer(this),this._renderer=null}Clear(){for(const a of this._buffer)a.Release();C3.clearArray(this._buffer)}AddTimeElapsedQuery(){const a=new C3.Gfx.WebGLTimeElapsedQuery(this._renderer);if(this._buffer.push(a),this._buffer.length>this._maxQueries){const a=this._buffer.shift();a.Release()}return a}CheckForResults(a){for(const b of this._buffer){if(b.GetFrameNumber()>=a)return;if(b.IsNested())return;b.CheckForResult()}}GetFrameRangeResultSum(a,b){if(b<=a)return NaN;let c=0;for(const d of this._buffer){if(d.GetFrameNumber()>=b)break;if(!(d.GetFrameNumber()"],[l.GetTextureFillFragmentShaderSource(),o,""],[l.GetPointFragmentShaderSource(),l.GetPointVertexShaderSource(),""],[l.GetColorFillFragmentShaderSource(),o,""],[l.GetLinearGradientFillFragmentShaderSource(),o,""],[l.GetHardEllipseFillFragmentShaderSource(),o,""],[l.GetHardEllipseOutlineFragmentShaderSource(),o,""],[l.GetSmoothEllipseFillFragmentShaderSource(),o,""],[l.GetSmoothEllipseOutlineFragmentShaderSource(),o,""],[l.GetSmoothLineFillFragmentShaderSource(),o,""],[l.GetTilemapFragmentShaderSource(),l.GetDefaultVertexShaderSource(this._is3d,!0),""]],d=await Promise.all(s.map((e)=>this.CreateShaderProgram({src:e[0]},e[1],e[2])));this._spTextureFill=d[0],this._spDeviceTransformTextureFill=d[1],this._spPoints=d[2],this._spColorFill=d[3],this._spLinearGradientFill=d[4],this._spHardEllipseFill=d[5],this._spHardEllipseOutline=d[6],this._spSmoothEllipseFill=d[7],this._spSmoothEllipseOutline=d[8],this._spSmoothLineFill=d[9],this._spTilemapFill=d[10],this._stateGroups.clear(),this._currentStateGroup=null,this.SetTextureFillMode()}FillIndexBufferData(){const e=this._indexData;for(let t=0,r=0;t<12000;)e[t++]=r,e[t++]=r+1,e[t++]=r+2,e[t++]=r,e[t++]=r+2,e[t++]=r+3,r+=4}GetNumVertexComponents(){return this._is3d?3:2}SetCurrentZ(e){this._currentZ=e,this._currentStateGroup=null}GetCurrentZ(){return this._currentZ}async CreateShaderProgram(e,t,r){const a=await C3.Gfx.WebGLShaderProgram.Create(this,e,t,r);return this._shaderPrograms.push(a),this._shaderProgramsByName.set(a.GetName(),a),a}GetShaderProgramByName(e){return this._shaderProgramsByName.get(e)||null}GetTextureFillShaderProgram(){return this._spTextureFill}ResetLastProgram(){this._lastProgram=null}_RemoveShaderProgram(e){const t=this._shaderPrograms.indexOf(e);-1!==t&&this._shaderPrograms.splice(t,1),this._shaderProgramsByName.delete(e.GetName())}Project(e,t,r,a,i){const n=this._matMV,l=this._matP;for(let n=0,l=_.length;n=this._lastVertexPtr&&(this.EndBatch(),e=0),1===this._topOfBatch)this._batch[this._batchPtr-1]._indexCount+=6;else{const t=this.PushBatch();t.InitQuad(this._is3d?e:3*(e/2),6),this._topOfBatch=1}}_WriteQuadToVertexBuffer(e){e.writeToTypedArray3D(this._vertexData,this._vertexPtr,this._currentZ),this._vertexPtr+=12}Quad(e){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),n.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad2(e,t,r,a,i,_,l,o){this._ExtendQuadBatch();const s=this._vertexData;let d=this._vertexPtr;const u=this._currentZ;this._is3d?(s[d++]=e,s[d++]=t,s[d++]=u,s[d++]=r,s[d++]=a,s[d++]=u,s[d++]=i,s[d++]=_,s[d++]=u,s[d++]=l,s[d++]=o,s[d++]=u):(s[d++]=e,s[d++]=t,s[d++]=r,s[d++]=a,s[d++]=i,s[d++]=_,s[d++]=l,s[d++]=o),this._vertexPtr=d,n.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad3(e,t){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),t.writeAsQuadToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad4(e,t){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),t.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}FullscreenQuad(e,t){var r=Math.max,a=Math.min;if(mat4.copy(s,this._lastMV),vec3.copy(l,this._cam),vec3.copy(o,this._look),this._cam[0]=0,this._cam[1]=0,this._cam[2]=100*self.devicePixelRatio,this._look[0]=0,this._look[1]=0,this._look[2]=0,this.ResetModelView(),this.UpdateModelView(),this._isScissorViewport){const e=this._viewportScissorWidth/2,t=this._viewportScissorHeight/2;c.set(-e,t,-e+this._viewportScissorWidth,t-this._viewportScissorHeight),d.setFromRect(c),c.set(0,0,this._viewportScissorWidth/this._width,this._viewportScissorHeight/this._height),this.Quad3(d,c)}else if("crop"===e&&this._currentRenderTarget&&t){const e=this._width/2,i=this._height/2,n=t.GetWidth(),_=t.GetHeight(),l=this._currentRenderTarget.GetWidth(),o=this._currentRenderTarget.GetHeight(),s=a(l,n),u=a(o,_),p=r(_-o,0),f=r(o-_,0);c.set(-e,i-f,-e+s,i-u-f),d.setFromRect(c),c.set(0,p,s,u+p),c.divide(n,_),this.Quad3(d,c)}else{let[e,t]=this.GetRenderTargetSize(this._currentRenderTarget);const r=e/2,a=t/2;this.Rect2(-r,a,r,-a)}mat4.copy(this._matMV,s),vec3.copy(this._cam,l),vec3.copy(this._look,o),this.UpdateModelView()}ConvexPoly(e){const t=e.length/2;if(3>t)throw new Error("need at least 3 points");const r=t-2,a=e[0],n=e[1];for(let t=0;t=this._lineWidthStack.length)throw new Error("cannot pop last line width - check push/pop pairs");this._lineWidthStack.pop(),this._lineWidth=this._lineWidthStack[this._lineWidthStack.length-1]}SetLineCapButt(){this._lineCap=0,this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapSquare(){this._lineCap=1,this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapZag(){this._lineCap=2,this._lineCapStack[this._lineCapStack.length-1]=0}PushLineCap(e){if("butt"===e)this.PushLineCapButt();else if("square"===e)this.PushLineCapSquare();else if("zag"===e)this.PushLineCapZag();else throw new Error("invalid line cap")}PushLineCapButt(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(0),this._lineCap=0}PushLineCapSquare(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(1),this._lineCap=1}PushLineCapZag(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(2),this._lineCap=2}PopLineCap(){if(1>=this._lineCapStack.length)throw new Error("cannot pop last line cap - check push/pop pairs");this._lineCapStack.pop(),this._lineCap=this._lineCapStack[this._lineCapStack.length-1]}SetLineOffset(e){this._lineOffset=e,this._lineOffsetStack[this._lineOffsetStack.length-1]=e}GetLineOffset(){return this._lineOffset}PushLineOffset(e){if(100<=this._lineOffsetStack.length)throw new Error("pushed too many line offsets - check push/pop pairs");this._lineOffsetStack.push(e),this._lineOffset=e}PopLineOffset(){if(1>=this._lineOffsetStack.length)throw new Error("cannot pop last line offset - check push/pop pairs");this._lineOffsetStack.pop(),this._lineOffset=this._lineOffsetStack[this._lineOffsetStack.length-1]}SetPointTextureCoords(e){if(!this._lastPointTexCoords.equals(e)){this._lastPointTexCoords.copy(e);const t=this.PushBatch();t.InitSetPointTexCoords(e),this._topOfBatch=0}}Point(e,t,r,a){this._pointPtr>=7996&&this.EndBatch();let i=this._pointPtr;if(2===this._topOfBatch)this._batch[this._batchPtr-1]._indexCount++;else{const e=this.PushBatch();e.InitPoints(i),this._topOfBatch=2}const n=this._pointData;n[i++]=e,n[i++]=t,n[i++]=r,n[i++]=a,this._pointPtr=i}SetProgram(e){if(this._lastProgram!==e){const t=this.PushBatch();t.InitSetProgram(e),this._lastProgram=e,this._topOfBatch=0,this._currentStateGroup=null}}SetTextureFillMode(){this.SetProgram(this._spTextureFill)}SetDeviceTransformTextureFillMode(){this.SetProgram(this._spDeviceTransformTextureFill)}SetColorFillMode(){this.SetProgram(this._spColorFill)}SetLinearGradientFillMode(){this.SetProgram(this._spLinearGradientFill)}SetGradientColor(e){const t=this.PushBatch();t.InitSetGradientColor(e),this._topOfBatch=0}SetHardEllipseFillMode(){this.SetProgram(this._spHardEllipseFill)}SetHardEllipseOutlineMode(){this.SetProgram(this._spHardEllipseOutline)}SetSmoothEllipseFillMode(){this.SetProgram(this._spSmoothEllipseFill)}SetSmoothEllipseOutlineMode(){this.SetProgram(this._spSmoothEllipseOutline)}SetEllipseParams(e,t,r=1){const a=this.PushBatch();a.InitSetEllipseParams(e,t,r),this._topOfBatch=0}SetSmoothLineFillMode(){this.SetProgram(this._spSmoothLineFill)}SetTilemapFillMode(){this.SetProgram(this._spTilemapFill)}SetTilemapInfo(e,t,r,a,i,n,_){if(this._lastProgram!==this._spTilemapFill)throw new Error("must set tilemap fill mode first");const l=this.PushBatch();l.InitSetTilemapInfo(e,t,r,a,i,n,_),this._topOfBatch=0}SetProgramParameters(e,t,r,a,i,n,_,l,o,d,u){const c=this._lastProgram,s=c._hasAnyOptionalUniforms,p=!!u.length;if(s&&!c.AreOptionalUniformsAlreadySetInBatch(t,r,a,i,n,_,l,o,d)||p&&!c.AreCustomParametersAlreadySetInBatch(u)){const f=this.PushBatch();if(f.InitSetProgramParameters(),s){c.SetOptionalUniformsInBatch(t,r,a,i,n,_,l,o,d);const s=f._mat4param;s[0]=n,s[1]=_,t.writeToTypedArray(s,2),s[6]=l,s[7]=o,r.writeToTypedArray(s,12);const u=f._colorParam;i.writeToTypedArray(u,0);const p=u[1];u[1]=u[3],u[3]=p,a.writeToTypedArray(f._srcOriginRect,0),f._startIndex=d,f._texParam=c._uSamplerBack.IsUsed()?e?e.GetTexture():null:null}p&&(c.SetCustomParametersInBatch(u),C3.shallowAssignArray(f._shaderParams,u)),this._topOfBatch=0}}ClearRgba(e,t,r,i){const a=this.PushBatch();a.InitClearSurface2(e,t,r,i),this._topOfBatch=0}Clear(e){const t=this.PushBatch();t.InitClearSurface(e),this._topOfBatch=0}ClearRect(e,t,r,a){this.ClearRect4(e,t,r,a,0,0,0,0)}ClearRect2(e){this.ClearRect4(e.getLeft(),e.getTop(),e.width(),e.height(),0,0,0,0)}ClearRect3(e,t){this.ClearRect4(e.getLeft(),e.getTop(),e.width(),e.height(),t.getR(),t.getG(),t.getB(),t.getA())}ClearRect4(e,t,i,n,_,r,l,o){if(!(0>i||0>n)){const a=this.PushBatch();a.InitClearRect(e,t,i,n,_,r,l,o),this._topOfBatch=0}}Finish(){this.EndBatch(),this._gl.flush(),this._frameNumber++}CheckForQueryResults(){for(const e of this._allQueryResultBuffers)e.CheckForResults(this._frameNumber)}IsContextLost(){return!this._gl||this._gl.isContextLost()||this._isInitialisingAfterContextRestored}OnContextLost(){C3.Gfx.WebGLRendererTexture.OnContextLost(),C3.Gfx.WebGLRenderTarget.OnContextLost(),C3.Gfx.WebGLText.OnContextLost();for(const e of this._allQueryResultBuffers)e.Clear();this._extensions=[],this._timerExt=null,this._parallelShaderCompileExt=null,this._unmaskedVendor="(unavailable)",this._unmaskedRenderer="(unavailable)",this._lastProgram=null,this._spTextureFill=null,this._spDeviceTransformTextureFill=null,this._spColorFill=null,this._spLinearGradientFill=null,this._spHardEllipseFill=null,this._spHardEllipseOutline=null,this._spSmoothEllipseFill=null,this._spSmoothEllipseOutline=null,this._spSmoothLineFill=null,this._spPoints=null,this._spTilemapFill=null;for(const e of this._shaderPrograms)e.Release();C3.clearArray(this._shaderPrograms),this._shaderProgramsByName.clear()}async OnContextRestored(){this._isInitialisingAfterContextRestored=!0,await this.InitState(),this._isInitialisingAfterContextRestored=!1,this.SetSize(this._width,this._height,!0)}CreateStaticTexture(e,t){if(this.IsContextLost())throw new Error("context lost");this.EndBatch();const r=C3.New(C3.Gfx.WebGLRendererTexture,this);return r._CreateStatic(e,t),r}CreateStaticTextureAsync(e,t){return this.IsContextLost()?Promise.reject("context lost"):(t=Object.assign({},t),C3.Supports.ImageBitmapOptions&&(this.SupportsNPOTTextures()||!t.isTiled)?(t.premultiplyAlpha=!1,createImageBitmap(e,{"premultiplyAlpha":"premultiply"}).then((e)=>C3.Asyncify(()=>this.CreateStaticTexture(e,t)))):C3.Supports.ImageBitmap?createImageBitmap(e).then((e)=>C3.Asyncify(()=>this.CreateStaticTexture(e,t))):e instanceof Blob?C3.BlobToImage(e,!0).then((e)=>this.CreateStaticTextureAsync(e,t)):"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement&&"function"==typeof e["decode"]?e["decode"]().then(()=>C3.Asyncify(()=>this.CreateStaticTexture(e,t))):C3.Asyncify(()=>this.CreateStaticTexture(e,t)))}CreateDynamicTexture(e,t,r){this.EndBatch();const a=C3.New(C3.Gfx.WebGLRendererTexture,this);return a._CreateDynamic(e,t,r),a}UpdateTexture(e,t,r){this.EndBatch(),t._Update(e,r)}DeleteTexture(e){e&&(e.SubtractReference(),0=t||0>=r)throw new Error("invalid size");this.EndBatch();const i=C3.New(C3.Gfx.WebGLRenderTarget,this);return i._Create(t,r,Object.assign({isDefaultSize:a},e)),this._currentRenderTarget=null,this._batchState.currentFramebuffer=null,i}SetRenderTarget(e){if(e===this._currentRenderTarget)return;let t,r,a,i;e?(e.IsDefaultSize()&&e._Resize(this._width,this._height),a=e.GetWidth(),i=e.GetHeight(),t=a,r=i):(a=this._width,i=this._height,t=this.GetScissoredViewportWidth(),r=this.GetScissoredViewportHeight());const n=this._lastBackbufferWidth!==a||this._lastBackbufferHeight!==i;n&&this._UpdateViewportRenderer(t,r,a,i);const _=this.PushBatch();_.InitSetRenderTarget(e,n,this._matP),this._currentRenderTarget=e,this._topOfBatch=0}GetRenderTarget(){return this._currentRenderTarget}GetRenderTargetSize(e){return e?[e.GetWidth(),e.GetHeight()]:[this._width,this._height]}CopyRenderTarget(e,t="stretch"){if(2>this._version||this._currentRenderTarget&&0this._version)){const t=this.PushBatch();t.InitInvalidateFramebuffer(e._GetFramebuffer()),this._topOfBatch=0}}DeleteRenderTarget(e){this.SetRenderTarget(null),this.EndBatch();const t=e.GetTexture();t===this._lastTexture0&&(this._gl.bindTexture(this._gl.TEXTURE_2D,null),this._lastTexture0=null),t===this._lastTexture1&&(this._gl.activeTexture(this._gl.TEXTURE1),this._gl.bindTexture(this._gl.TEXTURE_2D,null),this._gl.activeTexture(this._gl.TEXTURE0),this._lastTexture1=null),e._Delete()}async ReadBackRenderTargetToImageData(e,t){this.EndBatch();const r=this._currentRenderTarget;let a,i,n;e?(a=e.GetWidth(),i=e.GetHeight(),n=e._GetFramebuffer()):(a=this.GetWidth(),i=this.GetHeight(),n=null);const _=this._gl;_.bindFramebuffer(_.FRAMEBUFFER,n);const l=()=>{_.bindFramebuffer(_.FRAMEBUFFER,null),this._currentRenderTarget=null,this._batchState.currentFramebuffer=null,this.SetRenderTarget(r)};let o;if(!t&&2<=this.GetWebGLVersionNumber()){_.bindFramebuffer(_.READ_FRAMEBUFFER,n);const e=_.createBuffer(),t=4*(a*i),r=_["PIXEL_PACK_BUFFER"];_.bindBuffer(r,e),_.bufferData(r,t,_["STREAM_READ"]),_.readPixels(0,0,a,i,_.RGBA,_.UNSIGNED_BYTE,0),_.bindFramebuffer(_.READ_FRAMEBUFFER,null),_.bindBuffer(r,null),l();const s=_["fenceSync"](_["SYNC_GPU_COMMANDS_COMPLETE"],0);await this._WaitForObjectReady(()=>_["getSyncParameter"](s,_["SYNC_STATUS"])===_["SIGNALED"]),_["deleteSync"](s),o=new ImageData(a,i),_.bindBuffer(r,e),_["getBufferSubData"](r,0,new Uint8Array(o.data.buffer),0,t),_.bindBuffer(r,null),_.deleteBuffer(e)}else o=new ImageData(a,i),_.readPixels(0,0,a,i,_.RGBA,_.UNSIGNED_BYTE,new Uint8Array(o.data.buffer)),l();return o}StartQuery(e){if(this.SupportsGPUProfiling()){const t=this.PushBatch();t.InitStartQuery(e),this._topOfBatch=0}}EndQuery(e){if(this.SupportsGPUProfiling()){const t=this.PushBatch();t.InitEndQuery(e),this._topOfBatch=0}}_WaitForObjectReady(e){const r=new Promise((t)=>p.add({resolve:t,checkFunc:e}));return-1===f&&(f=self.requestAnimationFrame(t)),r}GetEstimatedBackBufferMemoryUsage(){return this._width*this._height*(this._attribs["alpha"]?4:3)}GetEstimatedRenderBufferMemoryUsage(){let e=0;for(const r of C3.Gfx.WebGLRenderTarget.allRenderTargets())r.GetTexture()||(e+=r.GetEstimatedMemoryUsage());return e}GetEstimatedTextureMemoryUsage(){let e=0;for(const r of C3.Gfx.WebGLRendererTexture.allTextures())e+=r.GetEstimatedMemoryUsage();return e}GetEstimatedTotalMemoryUsage(){return this.GetEstimatedBackBufferMemoryUsage()+this.GetEstimatedRenderBufferMemoryUsage()+this.GetEstimatedTextureMemoryUsage()}GetWebGLVersionString(){return this._versionString}GetWebGLVersionNumber(){return this._version}SupportsNPOTTextures(){return 2<=this.GetWebGLVersionNumber()}GetMaxTextureSize(){return this._maxTextureSize}GetMinPointSize(){return this._minPointSize}GetMaxPointSize(){return this._maxPointSize}SupportsHighP(){return 0!==this._highpPrecision}GetHighPPrecision(){return this._highpPrecision}GetUnmaskedVendor(){return this._unmaskedVendor}GetUnmaskedRenderer(){return this._unmaskedRenderer}GetExtensions(){return this._extensions}HasMajorPerformanceCaveat(){return this._hasMajorPerformanceCaveat}SupportsGPUProfiling(){return!!this._timerExt}_GetDisjointTimerQueryExtension(){return this._timerExt}_GetParallelShaderCompileExtension(){return this._parallelShaderCompileExt}_AddQueryResultBuffer(e){this._allQueryResultBuffers.add(e)}_RemoveQueryResultBuffer(e){this._allQueryResultBuffers.delete(e)}_GetTimeQueryStack(){return this._timeQueryStack}GetFrameNumber(){return this._frameNumber}IncrementFrameNumber(){this._frameNumber++}GetContext(){return this._gl}GetNamedBlend(e){const t=this._gl;let r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;switch(e){case"normal":r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;break;case"additive":r=t.ONE,a=t.ONE;break;case"copy":r=t.ONE,a=t.ZERO;break;case"destination-over":r=t.ONE_MINUS_DST_ALPHA,a=t.ONE;break;case"source-in":r=t.DST_ALPHA,a=t.ZERO;break;case"destination-in":r=t.ZERO,a=t.SRC_ALPHA;break;case"source-out":r=t.ONE_MINUS_DST_ALPHA,a=t.ZERO;break;case"destination-out":r=t.ZERO,a=t.ONE_MINUS_SRC_ALPHA;break;case"source-atop":r=t.DST_ALPHA,a=t.ONE_MINUS_SRC_ALPHA;break;case"destination-atop":r=t.ONE_MINUS_DST_ALPHA,a=t.SRC_ALPHA;break;default:throw new Error("invalid blend name");}return{srcBlend:r,destBlend:a}}GetBlendByIndex(e){const t=this._gl;let r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;switch(e){case 0:r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;break;case 1:r=t.ONE,a=t.ONE;break;case 3:r=t.ONE,a=t.ZERO;break;case 4:r=t.ONE_MINUS_DST_ALPHA,a=t.ONE;break;case 5:r=t.DST_ALPHA,a=t.ZERO;break;case 6:r=t.ZERO,a=t.SRC_ALPHA;break;case 7:r=t.ONE_MINUS_DST_ALPHA,a=t.ZERO;break;case 8:r=t.ZERO,a=t.ONE_MINUS_SRC_ALPHA;break;case 9:r=t.DST_ALPHA,a=t.ONE_MINUS_SRC_ALPHA;break;case 10:r=t.ONE_MINUS_DST_ALPHA,a=t.SRC_ALPHA;break;default:throw new Error("invalid blend index");}return{srcBlend:r,destBlend:a}}CreateWebGLText(){return C3.New(C3.Gfx.WebGLText,this)}}} + +// c3/assets/assetManager.js +"use strict";{const a=new Set(["local","remote"]);C3.AssetManager=class extends C3.DefendedBase{constructor(b,c){if(super(),!a.has(c.defaultLoadPolicy))throw new Error("invalid load policy");if(this._runtime=b,this._localUrlBlobs=new Map,this._localBlobUrlCache=new Map,this._isCordova=!!c.isCordova,this._isWKWebView=!!c.isWKWebView,this._supportedAudioFormats=c.supportedAudioFormats||{},this._audioFiles=new Map,this._preloadSounds=!1,this._mediaSubfolder="",this._fontsSubfolder="",this._iconsSubfolder="",this._defaultLoadPolicy=c.defaultLoadPolicy,this._allAssets=[],this._assetsByUrl=new Map,this._webFonts=[],this._loadPromises=[],this._hasFinishedInitialLoad=!1,this._totalAssetSizeToLoad=0,this._assetSizeLoaded=0,this._lastLoadProgress=0,this._hasHadErrorLoading=!1,this._loadingRateLimiter=C3.New(C3.RateLimiter,()=>this._FireLoadingProgressEvent(),50),this._promiseThrottle=new C3.PromiseThrottle(Math.max(C3.hardwareConcurrency,8)),c.localUrlBlobs)for(const[a,b]of Object.entries(c.localUrlBlobs))this._localUrlBlobs.set(a,b)}Release(){this._localUrlBlobs.clear();for(const a of this._localBlobUrlCache.values())URL.revokeObjectURL(a);this._localBlobUrlCache.clear();for(const a of this._allAssets)a.Release();C3.clearArray(this._allAssets),this._assetsByUrl.clear(),C3.clearArray(this._loadPromises),this._runtime=null}GetRuntime(){return this._runtime}_SetMediaSubfolder(a){this._mediaSubfolder=a}GetMediaSubfolder(){return this._mediaSubfolder}_SetFontsSubfolder(a){this._fontsSubfolder=a}GetFontsSubfolder(){return this._fontsSubfolder}_SetIconsSubfolder(a){this._iconsSubfolder=a}GetIconsSubfolder(){return this._iconsSubfolder}FetchJson(a){return this.FetchBlob(a,this._defaultLoadPolicy).then((a)=>C3.BlobToJson(a))}FetchBlob(a,b){b=b||this._defaultLoadPolicy;const c=this._localUrlBlobs.get(a);return c?Promise.resolve(c):this._isCordova&&C3.IsRelativeURL(a)?this.CordovaFetchLocalFileAsBlob(a):"local"===b?this._promiseThrottle.Add(()=>C3.FetchBlob(a)):C3.FetchBlob(a)}_HasLocalURLBlob(a){return this._localUrlBlobs.has(a)}_CordovaFetchLocalFileAs(a,b){return this._runtime.PostComponentMessageToDOMAsync("runtime","cordova-fetch-local-file",{"filename":a,"as":b})}CordovaFetchLocalFileAsText(a){return this._CordovaFetchLocalFileAs(a,"text")}CordovaFetchLocalFileAsBlob(a){return this._CordovaFetchLocalFileAs(a,"blob")}CordovaFetchLocalFileAsBlobURL(a){return this._CordovaFetchLocalFileAs(a,"blob-url")}CordovaFetchLocalFileAsArrayBuffer(a){return this._CordovaFetchLocalFileAs(a,"buffer")}GetLocalUrlAsBlobUrl(a){const b=this._localUrlBlobs.get(a);if(!b)return a;let c=this._localBlobUrlCache.get(b);return c||(c=URL.createObjectURL(b),this._localBlobUrlCache.set(b,c)),c}GetMediaFileUrl(a){return this._runtime.IsPreview()?this.GetLocalUrlAsBlobUrl(a.toLowerCase()):this._mediaSubfolder+a}GetProjectFileUrl(a){return this._runtime.IsPreview()?this.GetLocalUrlAsBlobUrl(a.toLowerCase()):a}LoadProjectFileUrl(a){return this._runtime.IsPreview()?Promise.resolve(this.GetLocalUrlAsBlobUrl(a.toLowerCase())):this._isCordova?this.CordovaFetchLocalFileAsBlobURL(a.toLowerCase()):Promise.resolve(a.toLowerCase())}LoadImage(b){if(b.loadPolicy&&!a.has(b.loadPolicy))throw new Error("invalid load policy");let c=this._assetsByUrl.get(b.url);return c?c:(c=C3.New(C3.ImageAsset,this,{url:b.url,size:b.size||0,loadPolicy:b.loadPolicy||this._defaultLoadPolicy}),this._allAssets.push(c),this._assetsByUrl.set(c.GetURL(),c),this._hasFinishedInitialLoad||(this._totalAssetSizeToLoad+=c.GetSize(),this._loadPromises.push(c.Load().then(()=>this._AddLoadedSize(c.GetSize())))),c)}async WaitForAllToLoad(){try{await Promise.all(this._loadPromises),this._lastLoadProgress=1}catch(a){console.error("Error loading: ",a),this._hasHadErrorLoading=!0,this._FireLoadingProgressEvent()}}SetInitialLoadFinished(){this._hasFinishedInitialLoad=!0}HasHadErrorLoading(){return this._hasHadErrorLoading}_AddLoadedSize(a){this._assetSizeLoaded+=a,this._loadingRateLimiter.Call()}_FireLoadingProgressEvent(){const a=C3.New(C3.Event,"loadingprogress");this._lastLoadProgress=C3.clamp(this._assetSizeLoaded/this._totalAssetSizeToLoad,0,1),a.progress=this._lastLoadProgress,this._runtime.Dispatcher().dispatchEvent(a)}GetLoadProgress(){return this._lastLoadProgress}_SetWebFonts(a){C3.shallowAssignArray(this._webFonts,a),this._webFonts.length&&this._loadPromises.push(this._LoadWebFonts())}_LoadWebFonts(){const a=[];for(const[b,c,d]of this._webFonts)this._totalAssetSizeToLoad+=d,a.push(this._LoadWebFont(b,c).then(()=>this._AddLoadedSize(d)));return Promise.all(a)}async _LoadWebFont(a,b){const c=await this.LoadProjectFileUrl(this._fontsSubfolder+b),d=new FontFace(a,`url(${c})`);this._runtime.IsInWorker()?self.fonts.add(d):document.fonts.add(d),await d.load()}IsAudioFormatSupported(a){return!!this._supportedAudioFormats[a]}_SetAudioFiles(a,b){this._preloadSounds=!!b;for(const[c,d,e]of a)this._audioFiles.set(c,{fileName:c,formats:d.map((a)=>({type:a[0],fileExtension:a[1],fullName:c+a[1],fileSize:a[2]})),isMusic:e})}GetPreferredAudioFile(a){const b=this._audioFiles.get(a.toLowerCase());if(!b)return null;let c=null;for(const d of b.formats)if(c||"audio/webm; codecs=opus"!==d.type||(c=d),this.IsAudioFormatSupported(d.type))return d;return c}GetProjectAudioFileUrl(a){const b=this.GetPreferredAudioFile(a);return b?{url:this.GetMediaFileUrl(b.fullName),type:b.type}:null}GetAudioToPreload(){if(this._preloadSounds){const a=[];for(const b of this._audioFiles.values()){if(b.isMusic)continue;const c=this.GetPreferredAudioFile(b.fileName);c&&a.push({originalUrl:b.fileName,url:this.GetMediaFileUrl(c.fullName),type:c.type,fileSize:c.fileSize})}return a}return[]}}} + +// c3/assets/asset.js +"use strict";C3.Asset=class extends C3.DefendedBase{constructor(a,b){super(),this._assetManager=a,this._runtime=a.GetRuntime(),this._url=b.url,this._size=b.size,this._loadPolicy=b.loadPolicy,this._blob=null,this._isLoaded=!1,this._loadPromise=null}Release(){this._loadPromise=null,this._assetManager=null,this._runtime=null,this._blob=null}GetURL(){return this._url}GetSize(){return this._size}Load(){return"local"===this._loadPolicy||this._blob?(this._isLoaded=!0,Promise.resolve()):this._loadPromise?this._loadPromise:(this._loadPromise=this._assetManager.FetchBlob(this._url,this._loadPolicy).then((a)=>{this._isLoaded=!0,this._loadPromise=null,this._blob=a}).catch((a)=>console.error("Error loading resource: ",a)),this._loadPromise)}IsLoaded(){return this._isLoaded}GetBlob(){return this._blob?Promise.resolve(this._blob):this._assetManager.FetchBlob(this._url,this._loadPolicy)}}; + +// c3/assets/imageAsset.js +"use strict";{const a=new C3.PromiseThrottle,b=new Set;C3.ImageAsset=class extends C3.Asset{constructor(a,c){super(a,c),this._texturePromise=null,this._webglTexture=null,this._refCount=0,this._imageWidth=-1,this._imageHeight=-1,b.add(this)}Release(){if(this.ReleaseTexture(),0!==this._refCount)throw new Error("released image asset which still has texture references");this._texturePromise=null,b.delete(this),super.Release()}static OnWebGLContextLost(){for(const a of b)a._texturePromise=null,a._webglTexture=null,a._refCount=0}LoadStaticTexture(b,c){return(this._refCount++,this._webglTexture)?Promise.resolve(this._webglTexture):this._texturePromise?this._texturePromise:(this._texturePromise=this.GetBlob().then((d)=>a.Add(()=>b.CreateStaticTextureAsync(d,c).then((a)=>(this._texturePromise=null,0===this._refCount)?(b.DeleteTexture(a),null):(this._webglTexture=a,this._imageWidth=a.GetWidth(),this._imageHeight=a.GetHeight(),this._webglTexture)))).catch((a)=>{throw console.error("Failed to load texture: ",a),a}),this._texturePromise)}ReleaseTexture(){if(0>=this._refCount)throw new Error("texture released too many times");if(this._refCount--,0===this._refCount&&this._webglTexture){const a=this._webglTexture.GetRenderer();a.DeleteTexture(this._webglTexture),this._webglTexture=null}}GetTexture(){return this._webglTexture}GetWidth(){return this._imageWidth}GetHeight(){return this._imageHeight}async LoadToDrawable(){const a=await this.GetBlob();return C3.Supports.ImageBitmapOptions?await createImageBitmap(a,{"premultiplyAlpha":"none"}):C3.Supports.ImageBitmap?await createImageBitmap(a):await C3.BlobToImage(a)}}} + +// c3/layouts/renderCell.js +"use strict";{function a(c,a){return c.GetWorldInfo()._GetLastCachedZIndex()-a.GetWorldInfo()._GetLastCachedZIndex()}C3.RenderCell=class extends C3.DefendedBase{constructor(a,b,c){super(),this._grid=a,this._x=b,this._y=c,this._instances=[],this._isSorted=!0,this._pendingRemoval=new Set,this._isAnyPendingRemoval=!1}Release(){C3.clearArray(this._instances),this._pendingRemoval.clear(),this._grid=null}Reset(){C3.clearArray(this._instances),this._isSorted=!0,this._pendingRemoval.clear(),this._isAnyPendingRemoval=!1}SetChanged(){this._isSorted=!1}IsEmpty(){return!this._instances.length||!(this._instances.length>this._pendingRemoval.size)&&(this._FlushPending(),!0)}Insert(a){return this._pendingRemoval.has(a)?(this._pendingRemoval.delete(a),void(0===this._pendingRemoval.size&&(this._isAnyPendingRemoval=!1))):void(this._instances.push(a),this._isSorted=1===this._instances.length)}Remove(a){this._pendingRemoval.add(a),this._isAnyPendingRemoval=!0,50<=this._pendingRemoval.size&&this._FlushPending()}_FlushPending(){return this._isAnyPendingRemoval?this._instances.length===this._pendingRemoval.size?void this.Reset():void(C3.arrayRemoveAllInSet(this._instances,this._pendingRemoval),this._pendingRemoval.clear(),this._isAnyPendingRemoval=!1):void 0}_EnsureSorted(){this._isSorted||(this._instances.sort(a),this._isSorted=!0)}Dump(a){this._FlushPending(),this._EnsureSorted(),this._instances.length&&a.push(this._instances)}}} + +// c3/layouts/renderGrid.js +"use strict";C3.RenderGrid=class extends C3.DefendedBase{constructor(a,b){super(),this._cellWidth=a,this._cellHeight=b,this._cells=C3.New(C3.PairMap)}Release(){this._cells.Release(),this._cells=null}GetCell(a,b,c){let d=this._cells.Get(a,b);return d?d:c?(d=C3.New(C3.RenderCell,this,a,b),this._cells.Set(a,b,d),d):null}XToCell(a){return Math.floor(a/this._cellWidth)}YToCell(a){return Math.floor(a/this._cellHeight)}Update(a,b,c){if(b)for(let d=b.getLeft(),e=b.getRight();d<=e;++d)for(let e=b.getTop(),f=b.getBottom();e<=f;++e){if(c&&c.containsPoint(d,e))continue;const b=this.GetCell(d,e,!1);b&&(b.Remove(a),b.IsEmpty()&&this._cells.Delete(d,e))}if(c)for(let d=c.getLeft(),e=c.getRight();d<=e;++d)for(let e=c.getTop(),f=c.getBottom();e<=f;++e)b&&b.containsPoint(d,e)||this.GetCell(d,e,!0).Insert(a)}QueryRange(a,b){let c=this.XToCell(a.getLeft());for(const d=this.YToCell(a.getTop()),e=this.XToCell(a.getRight()),f=this.YToCell(a.getBottom());c<=e;++c)for(let a=d;a<=f;++a){const d=this.GetCell(c,a,!1);d&&d.Dump(b)}}MarkRangeChanged(a){let b=a.getLeft();for(const c=a.getTop(),d=a.getRight(),e=a.getBottom();b<=d;++b)for(let a=c;a<=e;++a){const c=this.GetCell(b,a,!1);c&&c.SetChanged()}}}; + +// c3/layouts/layer.js +"use strict";{function a(c,a){return c.GetWorldInfo()._GetLastCachedZIndex()-a.GetWorldInfo()._GetLastCachedZIndex()}const b=new C3.Rect,c=new C3.Quad,d=[],e=new C3.Rect,f=new C3.Rect;C3.Layer=class extends C3.DefendedBase{constructor(a,b,c){super(),this._layout=a,this._runtime=a.GetRuntime(),this._name=c[0],this._index=b,this._sid=c[2],this._isVisible=!!c[3],this._backgroundColor=C3.New(C3.Color),this._backgroundColor.setFromJSON(c[4].map((a)=>a/255)),this._isTransparent=!!c[5],this._parallaxX=c[6],this._parallaxY=c[7],this._color=C3.New(C3.Color,1,1,1,c[8]),this._premultipliedColor=C3.New(C3.Color),this._isForceOwnTexture=c[9],this._useRenderCells=c[10],this._scaleRate=c[11],this._blendMode=c[12],this._srcBlend=0,this._destBlend=0,this._curRenderTarget=null,this._scale=1,this._zElevation=0,this._angle=0,this._isAngleEnabled=!0,this._viewport=C3.New(C3.Rect),this._startupInitialInstances=[],this._initialInstances=[],this._createdGlobalUids=[],this._instances=[],this._areZIndicesStale=!1,this._zIndicesStaleFrom=-1,this._effectList=C3.New(C3.EffectList,this,c[15]),this._renderGrid=null,this._lastRenderList=[],this._isRenderListStale=!0,this._lastRenderCells=C3.New(C3.Rect,0,0,-1,-1),this._curRenderCells=C3.New(C3.Rect,0,0,-1,-1),this._UpdatePremultipliedColor(),this._useRenderCells&&(this._renderGrid=C3.New(C3.RenderGrid,this._runtime.GetOriginalViewportWidth(),this._runtime.GetOriginalViewportHeight()));for(const d of c[14]){const a=this._runtime.GetObjectClassByIndex(d[1]);this._layout._AddInitialObjectClass(a),a.GetDefaultInstanceData()||(a.SetDefaultInstanceData(d),a._SetDefaultLayerIndex(this._index)),this._initialInstances.push(d)}C3.shallowAssignArray(this._startupInitialInstances,this._initialInstances)}static Create(a,b,c){return C3.New(C3.Layer,a,b,c)}Release(){this._layout=null,this._runtime=null}CreateInitialInstances(a){const b=this._layout.IsFirstVisit();let c=0;const d=this._initialInstances;for(let e=0,f=d.length;ec||(b&&this._useRenderCells&&a.GetWorldInfo()._RemoveFromRenderCells(),c===this._instances.length-1?this._instances.pop():(this._instances.splice(c,1),this._SetZIndicesStaleFrom(c)),this._isRenderListStale=!0)}_SortInstancesByLastCachedZIndex(){this._instances.sort(a)}_Start(){this.SetBlendMode(this.GetBlendMode(),!0)}_End(){for(const a of this._instances)a.GetObjectClass().IsGlobal()||this._runtime.DestroyInstance(a);this._runtime.FlushPendingInstances(),C3.clearArray(this._instances),this._SetZIndicesStaleFrom(0)}RecreateInitialObjects(a,b){const c=this._runtime.GetEventSheetManager(),d=this._runtime.GetAllObjectClasses(),e=a.IsFamily();for(const f of this._initialInstances){const g=f[0],h=g[0],i=g[1];if(!b.containsPoint(h,i))continue;const j=d[f[1]];if(j!==a)if(!e)continue;else if(!a.FamilyHasMember(j))continue;const k=this._runtime.CreateInstanceFromData(f,this,!1);if(c.BlockFlushingInstances(!0),k._TriggerOnCreated(),k.IsInContainer())for(const a of k.siblings())a._TriggerOnCreated();c.BlockFlushingInstances(!1)}}GetInstanceCount(){return this._instances.length}GetLayout(){return this._layout}GetName(){return this._name}GetIndex(){return this._index}GetSID(){return this._sid}GetRuntime(){return this._runtime}GetEffectList(){return this._effectList}UsesRenderCells(){return this._useRenderCells}GetRenderGrid(){return this._renderGrid}SetRenderListStale(){this._isRenderListStale=!0}IsVisible(){return this._isVisible}SetVisible(a){a=!!a;this._isVisible===a||(this._isVisible=a,this._runtime.UpdateRender())}GetViewport(){return this._viewport}GetOpacity(){return this._color.getA()}SetOpacity(a){a=C3.clamp(a,0,1);this._color.getA()===a||(this._color.setA(a),this._UpdatePremultipliedColor(),this._runtime.UpdateRender())}_UpdatePremultipliedColor(){this._premultipliedColor.copy(this._color),this._premultipliedColor.premultiply()}GetPremultipliedColor(){return this._premultipliedColor}HasDefaultColor(){return this._color.equalsRgba(1,1,1,1)}GetScaleRate(){return this._scaleRate}SetScaleRate(a){this._scaleRate===a||(this._scaleRate=a,this._runtime.UpdateRender())}GetParallaxX(){return this._parallaxX}GetParallaxY(){return this._parallaxY}SetParallax(a,b){if((this._parallaxX!==a||this._parallaxY!==b)&&(this._parallaxX=a,this._parallaxY=b,this._runtime.UpdateRender(),1!==this._parallaxX||1!==this._parallaxY))for(const a of this._instances)a.GetObjectClass()._SetAnyInstanceParallaxed(!0)}SetParallaxX(a){this.SetParallax(a,this.GetParallaxY())}SetParallaxY(a){this.SetParallax(this.GetParallaxX(),a)}SetZElevation(a){this._zElevation=+a}GetZElevation(){return this._zElevation}SetAngle(b){this._angle=C3.clampAngle(b)}GetAngle(){return this._isAngleEnabled?C3.clampAngle(this._layout.GetAngle()+this._angle):0}GetOwnAngle(){return this._angle}HasInstances(){return 0this._width-b&&(a=this._width-b),athis._height-b&&(a=this._height-b),aa||(this._width=a)}GetHeight(){return this._height}SetHeight(a){!isFinite(a)||1>a||(this._height=a)}GetEventSheet(){return this._eventSheet}GetLayers(){return this._layers}GetLayerCount(){return this._layers.length}GetLayer(a){return"number"==typeof a?this.GetLayerByIndex(a):this.GetLayerByName(a.toString())}GetLayerByIndex(a){return a=C3.clamp(Math.floor(a),0,this._layers.length-1),this._layers[a]}GetLayerByName(a){return this._layersByName.get(a.toLowerCase())||null}GetLayerBySID(a){return this._layersBySid.get(a)||null}HasOpaqueBottomLayer(){for(const a of this._layers)if(a.ShouldDraw())return a._IsOpaque();return!1}IsFirstVisit(){return this._isFirstVisit}_GetInitialObjectClasses(){return[...this._initialObjectClasses]}_AddInitialObjectClass(a){if(a.IsInContainer())for(const b of a.GetContainer().GetObjectTypes())this._initialObjectClasses.add(b);else this._initialObjectClasses.add(a)}_GetTextureLoadedObjectTypes(){return[...this._textureLoadedTypes]}_Load(a,b){if(a===this||!b)return Promise.resolve();a&&(C3.CopySet(this._textureLoadedTypes,a._textureLoadedTypes),a._textureLoadedTypes.clear());const c=[];for(const d of this._initialObjectClasses)this._textureLoadedTypes.has(d)||(c.push(d.LoadTextures(b)),this._textureLoadedTypes.add(d));return Promise.all(c)}async MaybeLoadTexturesFor(a){if(a.IsFamily())throw new Error("cannot load textures for family");const b=this._runtime.GetWebGLRenderer();!b||this._textureLoadedTypes.has(a)||(this._textureLoadedTypes.add(a),await a.LoadTextures(b),a.OnDynamicTextureLoadComplete(),this._runtime.UpdateRender())}MaybeUnloadTexturesFor(a){if(a.IsFamily()||0d)b._AddSibling(f[d]);else{let d;d=c?this._runtime.CreateInstanceFromData(e,c.GetLayer(),!0,c.GetX(),c.GetY(),!0):this._runtime.CreateInstanceFromData(e,null,!0,0,0,!0),this._runtime.FlushPendingInstances(),e._UpdateIIDs(),b._AddSibling(d),a.push(d)}}}}_CreateInitialNonWorldInstances(){for(const a of this._initialNonWorld){const b=this._runtime.GetObjectClassByIndex(a[1]);b.IsInContainer()||this._runtime.CreateInstanceFromData(a,null,!0)}}_CreateGlobalNonWorlds(){const a=[],b=this._initialNonWorld;let c=0;for(let d=0,e=b.length;d=this._isEndingLayout)throw new Error("already unset");this._isEndingLayout--}}IsEndingLayout(){return 0=b||b>=this._totalTime)&&(this._complete=!0)}IsComplete(){return this._complete}IsReleased(){return this._released}SetMarkedForRemoval(a){this._markedForRemoval=a}IsMarkedForRemoval(){return this._markedForRemoval}SetLastTick(a){this._lastTick=a}IsLastTick(){return this._lastTick}InitialStateSet(){return this._initialStateSet}GetPropertyTrack(a){for(const b of this._tracks)for(const c of b.GetPropertyTracks())if(c.GetPropertyName()===a)return c}Trigger(a){const b=this._timelineManager.GetPluginInstance();this.GetRuntime().Trigger(a,b)}SetStartedTriggers(a){this._startedTriggers=a}SetFinishedTriggers(a){this._finishedTriggers=a}GetTime(){return this._playheadTime}SetTime(a){if(this._playheadTime=a,0>this._playheadTime&&(this._playheadTime=0),this._playheadTime>=this._totalTime&&(this._playheadTime=this._totalTime),!this.IsPlaying()&&!this.IsScheduled()&&this._initialStateSet)this.SetComplete(!1);else if(!this.IsPlaying()&&!this.IsScheduled()&&!this._initialStateSet){this._initialStateSet=!0;for(const a of this._tracks)a.SetInitialState()}else this.IsPlaying()?this.Stop():this.IsScheduled()&&(this._timelineManager.DeScheduleTimeline(this),this.SetComplete(!1));let b=!1;for(const c of this._tracks){c.SetResumeState();const a=c.Interpolate(this._playheadTime);!b&&a&&(b=!0)}b&&this.GetRuntime().UpdateRender()}SetResultMode(a){this._resultMode=a;for(const b of this._tracks)b.SetResultMode(a)}SetEase(a){this._ease=a;for(const b of this._tracks)b.SetEase(resultMode)}SetPlaybackRate(a){return this._playbackRate=a}IsForwardPlayBack(){return 0=this._totalTime)return;}else if(0>=this._playheadTime)return;this.Play()}}Play(){this.IsReleased()||this.IsScheduled()||this.IsPlaying()||this._timelineManager.ScheduleTimeline(this)}Stop(a=!1){this.IsReleased()||(this.SetComplete(a),this._timelineManager.CompleteTimeline(this))}Reset(){if(this.IsReleased())return;if(!this.IsPlaying()&&this.IsScheduled())return this._timelineManager.DeScheduleTimeline(this);this.Stop(!0),this._playheadTime=0;let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime);!a&&c&&(a=!0)}a&&this.GetRuntime().UpdateRender()}SetInitialState(){if(this.SetPlaying(!0),this.SetScheduled(!1),this.OnStarted(),this.IsComplete()){this._initialStateSet=!0,this._playheadTime=this.IsForwardPlayBack()?0:this._totalTime;for(const a of this._tracks)a.SetInitialState()}else for(const a of this._tracks)a.SetResumeState()}Tick(a,b){if(this.IsLastTick())return this.Stop(!0),void this.OnCompleted();this._playheadTime+=a*b*this._playbackRate;let c;if(c=this.IsForwardPlayBack()?this._playheadTime>=this._totalTime:0>=this._playheadTime,c){this._playheadTime=this.IsForwardPlayBack()?this._totalTime:0;for(const a of this._tracks)a.SetEndState();return this.SetLastTick(!0),!0}else{let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime);!a&&c&&(a=!0)}return a}}}} + +// c3/timelines/track.js +"use strict";{const a=0;C3.Track=class extends C3.DefendedBase{constructor(b,c){super(),this._timeline=b,this._instanceUid=c[a][2],this._interpolationMode=c[1],this._resultMode=c[2],this._enabled=!!c[3],this._keyframes=[];for(const a of c[4]){const b=C3.Keyframe.Create(this,a);this._IsKeyFrameEnabled(b)&&this._keyframes.push(b)}this._propertyTracks=[];for(const a of c[5]){const b=C3.PropertyTrack.Create(this,a);b.GetEnable()&&this._propertyTracks.push(b)}this._instance=null,this._worldInfo=null,this._lastPositionSet=!1}static Create(a,b){return C3.New(C3.Track,a,b)}static CreateEmpty(b){const c=[];return c[a]=[],c[a][2]=-1,c[1]="default",c[2]="default",c[3]=1,c[4]=[],c[5]=[],this.Create(b,c)}Release(){this._timeline=null,this._instance=null,this._worldInfo=null;for(const a of this._keyframes)a.Release();C3.clearArray(this._keyframes),this._keyframes=null;for(const a of this._propertyTracks)a.Release();C3.clearArray(this._propertyTracks),this._propertyTracks=null}GetTimeline(){return this._timeline}GetRuntime(){return this._timeline.GetRuntime()}MaybeGetInstance(){this._instance||this.GetInstance()}IsInstanceValid(){return!!this._instance&&!this._instance.IsDestroyed()}SetInstanceUID(a){this._instanceUid=a}GetInstance(){return this._instance&&this.IsInstanceValid()?this._instance:(this._instance=this.GetRuntime().GetInstanceByUID(this._instanceUid),this._instance)}GetWorldInfo(){return this._worldInfo&&this.IsInstanceValid()?this._worldInfo:(this._worldInfo=this.GetInstance().GetWorldInfo(),this._worldInfo)}SetInterpolationMode(a){this._interpolationMode=a}GetInterpolationMode(){return this._interpolationMode}SetResultMode(a){this._resultMode=a;for(const b of this._propertyTracks)b.SetResultMode(a)}GetResultMode(){return this._resultMode}SetEase(){for(const a of this._keyframes)a.SetEase(resultMode);for(const a of this._propertyTracks)a.SetEase(resultMode)}SetEnable(a){this._enabled=!!a}GetEnable(){return this._enabled}AddKeyframe(){const a=C3.Keyframe.CreateEmpty(this);return this._keyframes.push(a),a}GetKeyframes(){return this._keyframes}SortKeyframes(){this._keyframes.sort((c,a)=>c.GetTime()-a.GetTime())}AddPropertyTrack(a){const b=C3.PropertyTrack.CreateEmpty(this,a);return this._propertyTracks.push(b),b}GetPropertyTracks(){return this._propertyTracks}SetInitialState(){if(this.MaybeGetInstance(),!!this.IsInstanceValid()){this._lastPositionSet=!1;for(const a of this._propertyTracks)a.SetInitialState();this.GetTimeline().IsForwardPlayBack()?this.Interpolate(0):this.Interpolate(this.GetTimeline().GetTotalTime())}}SetResumeState(){if(this.MaybeGetInstance(),!!this.IsInstanceValid())for(const a of this._propertyTracks)a.SetResumeState()}SetEndState(){if((this.MaybeGetInstance(),!!this.IsInstanceValid())&&!this._lastPositionSet){this._lastPositionSet=!0;const a=this._timeline.GetTime(),b=this._timeline.GetTotalTime();a>=b?this.Interpolate(b):0>=a&&this.Interpolate(0)}}DeleteKeyframes(a){for(const b of this._keyframes){if(!a(b))continue;const c=this._keyframes.indexOf(b);-1!==c&&(b.Release(),this._keyframes.splice(c,1))}this.SortKeyframes()}DeletePropertyKeyframes(a){for(const b of this._propertyTracks)b.DeletePropertyKeyframes(a)}Interpolate(a){if(this.MaybeGetInstance(),!this.IsInstanceValid())return!1;let b=!1,c=!1;for(const d of this._propertyTracks){const e=d.Interpolate(a);b||0==(e&C3.Timeline.WORLD_INSTANCE_BOX_CHANGE)||(b=!0),c||0==(e&C3.Timeline.LAYOUT_RENDER_CHANGE)||(c=!0)}return b&&this.GetWorldInfo().SetBboxChanged(),c}SaveState(){for(const a of this._propertyTracks)a.SaveState()}CompareInitialStateWithCurrent(){if(this.MaybeGetInstance(),!!this.IsInstanceValid())for(const a of this._propertyTracks)a.CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){if(this.MaybeGetInstance(),!this.IsInstanceValid())return;let a=!1;for(const b of this._propertyTracks){const c=b.CompareSaveStateWithCurrent();!a&&c&&(a=!0)}if(a){const a=this.AddKeyframe();a.SetTime(this.GetTimeline().GetTime()),a.SetEase("noease"),a.SetEnable(!0)}}_IsKeyFrameEnabled(a){return!!this.GetEnable()&&!!a.GetEnable()}}} + +// c3/timelines/keyframe.js +"use strict";{const a=0;C3.Keyframe=class extends C3.DefendedBase{constructor(b,c){super(),this._track=b,this._time=c[a],this._ease=c[1],this._enable=!!c[2]}static Create(a,b){return C3.New(C3.Keyframe,a,b)}static CreateEmpty(b){const c=[];return c[a]=0,c[1]="linear",c[2]=1,this.Create(b,c)}Release(){this._track=null}GetRuntime(){return this._track.GetRuntime()}SetTime(a){this._time=a,this._track.SortKeyframes()}GetTime(){return this._time}SetEase(a){this._ease=a}GetEase(){return this._ease}SetEnable(a){this._enable=!!a}GetEnable(){return this._enable}}} + +// c3/timelines/propertyTrack.js +"use strict";{const a=0;C3.PropertyTrack=class extends C3.DefendedBase{constructor(b,c){super(),this._track=b,this._sourceAdapter=C3.PropertyTrack.CreateSourceAdapter(this,c[a]),this._property=c[1],this._type=c[2],this._min=c[3],this._max=c[4],this._interpolationMode=c[5],this._resultMode=c[6],this._enabled=!!c[7],this._propertyKeyframes=[];for(const a of c[8]){const b=C3.PropertyKeyframe.Create(this,a);this._IsPropertyKeyFrameEnabled(b)&&this._propertyKeyframes.push(b)}this._BuildPropertyKeyframeTimeMap()}static Create(a,b){return C3.New(C3.PropertyTrack,a,b)}static CreateEmpty(b,c){const d=[];return d[a]=[],d[a][0]=c,d[1]="",d[2]="",d[3]=NaN,d[4]=NaN,d[5]="default",d[6]="default",d[7]=1,d[8]=[],this.Create(b,d)}static CreateSourceAdapter(a,b){const c=b[0];return"behavior"===c?C3.New(C3.PropertyTrack.BehaviorSourceAdapter,a,b):"effect"===c?C3.New(C3.PropertyTrack.EffectSourceAdapter,a,b):"instance-variable"===c?C3.New(C3.PropertyTrack.InstanceVariableSourceAdapter,a,b):"plugin"===c?C3.New(C3.PropertyTrack.PluginSourceAdapter,a,b):"world-instance"===c?C3.New(C3.PropertyTrack.WorldInstanceSourceAdapter,a,b):"value"===c?C3.New(C3.PropertyTrack.ValueSourceAdapter,a,b):void 0}Release(){this._track=null,this._sourceAdapter.Release(),this._sourceAdapter=null;for(const a of this._propertyKeyframes)a.Release();C3.clearArray(this._propertyKeyframes),this._propertyKeyframes=null,this._propertyKeyframeTimeMap.clear(),this._propertyKeyframeTimeMap=null}GetTrack(){return this._track}GetTimeline(){return this._track.GetTimeline()}GetRuntime(){return this._track.GetRuntime()}GetSourceAdapter(){return this._sourceAdapter}GetSourceAdapterValue(){return this._sourceAdapter.GetValue()}SetPropertyName(a){this._property=a}GetPropertyName(){return this._property}SetPropertyType(a){this._type=a}GetPropertyType(){return this._type}GetPropertyKeyframeType(){return this._GetFirstKeyframe().GetType()}SetMin(a){this._min=a}GetMin(){return this._min}SetMax(a){this._max=a}GetMax(){return this._max}SetEnable(a){this._enabled=!!a}GetEnable(){return this._enabled}SetInterpolationMode(a){this._interpolationMode=a}GetInterpolationMode(){return this._interpolationMode}SetResultMode(a){this._resultMode=a}GetResultMode(){return this._resultMode}SetEase(a){for(const b of this._propertyKeyframes)b.SetEase(a)}AddPropertyKeyframe(){const a=C3.PropertyKeyframe.CreateEmpty(this);return this._propertyKeyframes.push(a),this._BuildPropertyKeyframeTimeMap(),a}GetPropertyKeyframes(){return this._propertyKeyframes}_BuildPropertyKeyframeTimeMap(){this._propertyKeyframeTimeMap||(this._propertyKeyframeTimeMap=new Map),this.SortPropertyKeyFrames();for(const a of this._track.GetKeyframes()){const b=a.GetTime(),c=this._GetKeyFrameAtTime(b);c&&this._propertyKeyframeTimeMap.set(b,c)}}SortPropertyKeyFrames(){this._propertyKeyframes.sort((c,a)=>c.GetTime()-a.GetTime())}_IsPropertyKeyFrameEnabled(a){if(!this.GetEnable())return!1;if(!a.GetEnable())return!1;const b=a.GetMasterKeyframe();if(!b)return!1;const c=this.GetTrack();return!!c._IsKeyFrameEnabled(b)}_GetKeyFrameAtTime(a){for(const b of this._propertyKeyframes)if(b.GetTime()===a)return b}_GetKeyFrameAtTimeFromCache(a){return this._propertyKeyframeTimeMap.get(a)}_GetFirstKeyframe(){return this._propertyKeyframes[0]}_GetLastKeyframe(){return this._propertyKeyframes[this._propertyKeyframes.length-1]}_GetFirstKeyFrameHigherThan(a){for(const b of this._propertyKeyframes)if(b.GetTime()>a)return b}_GetFirstKeyFrameHigherOrEqualThan(a){for(const b of this._propertyKeyframes)if(b.GetTime()>=a)return b}_GetFirstKeyFrameLowerOrEqualThan(a){for(let b=this._propertyKeyframes.length-1;0<=b;b--){const c=this._propertyKeyframes[b];if(c.GetTime()<=a)return c}}SetInitialState(){this._sourceAdapter.SetInitialState()}SetResumeState(){this._sourceAdapter.SetResumeState()}GetStartPropertyKeyframeForTime(a){let b=this._GetKeyFrameAtTimeFromCache(a);return b||(b=this._GetFirstKeyFrameLowerOrEqualThan(a)),b}GetEndPropertyKeyframeForTime(a){const b=this._GetKeyFrameAtTimeFromCache(a);return b?this._GetFirstKeyFrameHigherThan(a):this._GetFirstKeyFrameHigherOrEqualThan(a)}Interpolate(a){let b,c=this._GetKeyFrameAtTimeFromCache(a);return c?b=this._GetFirstKeyFrameHigherThan(a):(c=this._GetFirstKeyFrameLowerOrEqualThan(a),b=this._GetFirstKeyFrameHigherOrEqualThan(a)),this._sourceAdapter.Interpolate(a,c,b)}DeletePropertyKeyframes(a){for(const b of this._propertyKeyframes){if(!a(b))continue;const c=this._propertyKeyframes.indexOf(b);-1!==c&&(b.Release(),this._propertyKeyframes.splice(c,1))}this.SortPropertyKeyFrames()}SaveState(){this._sourceAdapter.SaveState()}CompareInitialStateWithCurrent(){const a=this._sourceAdapter.CompareInitialStateWithCurrent();if(a){const a=this._GetFirstKeyframe(),b=this._sourceAdapter.GetCurrentState();a.SetAbsoluteValue(b)}}CompareSaveStateWithCurrent(){const a=this._sourceAdapter.CompareSaveStateWithCurrent();return a&&this.AddPropertyKeyframeAtCurrentTime(),this._sourceAdapter.ClearSaveState(),a}AddPropertyKeyframeAtCurrentTime(){const a=this.GetTimeline().GetTime(),b=this.GetStartPropertyKeyframeForTime(a),c=this.AddPropertyKeyframe(),d=this.GetSourceAdapter();c.SetValue(d.GetValueAtTime()),c.SetAbsoluteValue(d.GetCurrentState()),c.SetType(b.GetType()),c.SetTime(a),c.SetEase(b.GetEase()),c.SetEnable(!0)}}} + +// c3/timelines/propertyKeyframe.js +"use strict";{const a=0;C3.PropertyKeyframe=class extends C3.DefendedBase{constructor(b,c){super(),this._propertyTrack=b,this._value=c[a][0],this._aValue=c[a][1],this._type=c[a][2],this._time=c[1],this._ease=c[2],this._enable=!!c[3],this._masterKeyframe=null;for(let a of this._propertyTrack.GetTrack().GetKeyframes())if(a.GetTime()===this._time){this._masterKeyframe=a;break}}static Create(a,b){return C3.New(C3.PropertyKeyframe,a,b)}static CreateEmpty(b){const c=[];return c[a]=[],c[a][0]=0,c[a][1]=0,c[a][2]="",c[1]=0,c[2]="linear",c[3]=1,this.Create(b,c)}Release(){this._propertyTrack=null,this._masterKeyframe=null}GetRuntime(){return this._propertyTrack.GetRuntime()}SetTime(a){this._time=a,this._propertyTrack._BuildPropertyKeyframeTimeMap()}GetTime(){return this._time}SetValue(a){"color"===this._type&&C3.IsFiniteNumber(a)?(this._value[0]=C3.GetRValue(a),this._value[1]=C3.GetGValue(a),this._value[2]=C3.GetBValue(a)):this._value=a}GetValue(){return this._value}SetAbsoluteValue(a){"color"===this._type&&C3.IsFiniteNumber(a)?(this._aValue[0]=C3.GetRValue(a),this._aValue[1]=C3.GetGValue(a),this._aValue[2]=C3.GetBValue(a)):this._aValue=a}GetAbsoluteValue(){return this._aValue}GetValueWithResultMode(){const a=this._propertyTrack.GetResultMode();if("relative"===a)return this.GetValue();return"absolute"===a?this.GetAbsoluteValue():void 0}SetEase(a){this._ease=a}GetEase(){return this._ease}SetEnable(a){this._enable=!!a}GetEnable(){return this._enable}SetType(a){this._type=a}GetType(){return this._type}GetMasterKeyframe(){return this._masterKeyframe}}} + +// c3/timelines/timelineManager.js +"use strict";C3.TimelineManager=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._pluginInstance=null,this._timelines=[],this._timelinesByName=new Map,this._scheduledTimelines=[],this._playingTimelines=[],this._hasRuntimeListeners=!1,this._changingLayout=!1,this._isTickingTimelines=!1,this._preTickFunc=()=>this._OnPreTick(),this._beforeLayoutChange=()=>this._OnBeforeChangeLayout(),this._layoutChange=()=>this._OnAfterChangeLayout()}Release(){this._runtime.Dispatcher().removeEventListener("pretick",this._preTickFunc),this._preTickFunc=null,this._runtime.Dispatcher().removeEventListener("beforelayoutchange",this._beforeLayoutChange),this._beforeLayoutChange=null,this._runtime.Dispatcher().removeEventListener("layoutchange",this._layoutChange),this._layoutChange=null,this._runtime=null;for(const a of this._timelines)a.Stop(),a.Release();C3.clearArray(this._timelines),this._timelines=null,C3.clearArray(this._scheduledTimelines),this._scheduledTimelines=null,C3.clearArray(this._playingTimelines),this._playingTimelines=null,this._timelinesByName.clear(),this._timelinesByName=null}Create(a){this.Add(C3.Timeline.Create(a,this))}Add(a){this._timelines.push(a),this._timelinesByName.set(a.GetName(),a)}GetRuntime(){return this._runtime}SetPluginInstance(a){this._pluginInstance=a}GetPluginInstance(){return this._pluginInstance}GetTimelines(){return this._timelines}GetTimelineByIndex(a){const b=C3.clamp(Math.floor(a),0,this._timelines.length-1);return this._timelines[b]?this._timelines[b]:void 0}GetTimelineByName(a){return this._timelinesByName.has(a)?this._timelinesByName.get(a):void 0}ScheduleTimeline(a){a.SetPlaying(!1),a.SetScheduled(!0),a.SetMarkedForRemoval(!1),this._scheduledTimelines.push(a),this._MaybeAddRuntimeListeners()}DeScheduleTimeline(a){const b=this._scheduledTimelines.indexOf(a);a.SetPlaying(!1),a.SetScheduled(!1);-1===b||(this._scheduledTimelines.splice(b,1),this._MaybeRemoveRuntimeListeners())}CompleteTimeline(a){a.SetPlaying(!1),a.SetScheduled(!1),a.SetMarkedForRemoval(!0)}_OnPreTick(){if(this._changingLayout)return;const a=this._runtime.GetDt(),b=this._runtime.GetTimeScale();let c=!1;this._isTickingTimelines=!0;for(const d of this._playingTimelines){if(d.IsMarkedForRemoval())continue;const e=d.Tick(a,b);!c&&e&&(c=!0)}for(this._isTickingTimelines=!1,c&&this.GetRuntime().UpdateRender();this._scheduledTimelines.length;){const a=this._scheduledTimelines.pop();a.SetInitialState(),this._playingTimelines.push(a)}for(const a of this._playingTimelines){if(!a.IsMarkedForRemoval())continue;const b=this._playingTimelines.indexOf(a);-1===b||this._playingTimelines.splice(b,1)}this._MaybeRemoveRuntimeListeners()}_MaybeAddRuntimeListeners(){if(!this._hasRuntimeListeners){const a=this._runtime.Dispatcher();a.addEventListener("pretick",this._preTickFunc),a.addEventListener("beforelayoutchange",this._beforeLayoutChange),a.addEventListener("layoutchange",this._layoutChange),this._hasRuntimeListeners=!0}}_MaybeRemoveRuntimeListeners(){if(!this._playingTimelines.length&&!this._scheduledTimelines.length&&!this._isTickingTimelines){const a=this._runtime.Dispatcher();a.removeEventListener("pretick",this._preTickFunc),a.removeEventListener("beforelayoutchange",this._beforeLayoutChange),a.removeEventListener("layoutchange",this._layoutChange),this._hasRuntimeListeners=!1}}_OnBeforeChangeLayout(){this._changingLayout=!0}_OnAfterChangeLayout(){this._changingLayout=!1}}; + +// c3/timelines/propertySourceAdapters/propertySourceAdapter.js +"use strict";C3.PropertyTrack.PropertySourceAdapter=class{constructor(){}static GetValueAtTime(a){const b=a.GetTrack(),c=b.GetTimeline().GetTime(),d=a.GetStartPropertyKeyframeForTime(c),e=a.GetEndPropertyKeyframeForTime(c),f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetInterpolateFunc(a);return g(c,d,e,a)}static GetValue(a,b,c){let d=a.GetResultMode();return"combo"===a.GetPropertyType()&&(d="absolute"),"relative"===d?b+c:"absolute"===d?c:void 0}static GetInterpolateFunc(a){const b=a.GetPropertyKeyframeType();return"numeric"===b?C3.PropertyTrack.NumericTypeAdapter.Interpolate:"angle"===b?C3.PropertyTrack.AngleTypeAdapter.Interpolate:"boolean"===b?C3.PropertyTrack.BooleanTypeAdapter.Interpolate:"color"===b?C3.PropertyTrack.ColorTypeAdapter.Interpolate:"text"===b?C3.PropertyTrack.TextTypeAdapter.Interpolate:void 0}static GetWillChangeFunc(a){const b=a.GetPropertyKeyframeType();return"numeric"===b?C3.PropertyTrack.NumericTypeAdapter.WillChange:"angle"===b?C3.PropertyTrack.AngleTypeAdapter.WillChange:"boolean"===b?C3.PropertyTrack.BooleanTypeAdapter.WillChange:"color"===b?C3.PropertyTrack.ColorTypeAdapter.WillChange:"text"===b?C3.PropertyTrack.TextTypeAdapter.WillChange:void 0}}; + +// c3/timelines/propertySourceAdapters/behaviorSourceAdapter.js +"use strict";{const a=C3.New(C3.Color),b=[0,0,0];C3.PropertyTrack.BehaviorSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._sid=b[1],this._index=b[2],this._initialValue=null,this._initialValueType="",this._behaviorSdkInstance=null}Release(){this._propertyTrack=null,this._track=null,this._behaviorSdkInstance=null,this._initialValue=null}SetInitialState(){var b=Math.floor;const c=this._GetSdkBehaviourInstance(),d=this._propertyTrack.GetPropertyKeyframeType(),e=this._propertyTrack.GetResultMode();let f;"relative"===e?f=c.GetPropertyValueByIndex(this._index):"absolute"===e&&(f=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===d?f instanceof C3.Color?(this._initialValue=[],this._initialValue[0]=b(255*f.getR()),this._initialValue[1]=b(255*f.getG()),this._initialValue[2]=b(255*f.getB()),this._initialValueType="color-object"):Array.isArray(f)?(this._initialValue[0]=b(255*f[0]),this._initialValue[1]=b(255*f[1]),this._initialValue[2]=b(255*f[2]),this._initialValueType="color-object"):(a.parseCommaSeparatedRgb(f),this._initialValue=[],this._initialValue[0]=b(255*a.getR()),this._initialValue[1]=b(255*a.getG()),this._initialValue[2]=b(255*a.getB()),this._initialValueType="color-string"):(this._initialValue=f,this._initialValueType="other")}SetResumeState(){}Interpolate(c,d,e){const f=this._GetSdkBehaviourInstance(),g=this._propertyTrack.GetPropertyKeyframeType(),h=C3.PropertyTrack.PropertySourceAdapter,i=h.GetValue,j=h.GetInterpolateFunc(this._propertyTrack),k=h.GetWillChangeFunc(this._propertyTrack);let l;switch(g){case"numeric":if(l=j(c,d,e,this._propertyTrack),l=i(this._propertyTrack,this._initialValue,l),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);break;case"boolean":if(l=j(c,d,e,this._propertyTrack),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);break;case"color":if(l=j(c,d,e,this._propertyTrack),b[0]=i(this._propertyTrack,this._initialValue[0],l[0]),b[1]=i(this._propertyTrack,this._initialValue[1],l[1]),b[2]=i(this._propertyTrack,this._initialValue[2],l[2]),!k(this._index,f,b))return;switch(this._initialValueType){case"color-object":f.SetPropertyValueByIndex(this._index,b);break;case"color-string":a.setRgb(b[0],b[1],b[2]);const c=`rgb(${a.toCommaSeparatedRgb()})`;f.SetPropertyValueByIndex(this._index,c);}break;case"text":if(l=j(c,d,e,this._propertyTrack),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);}}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetSdkBehaviourInstance(){if(this._behaviorSdkInstance)return this._behaviorSdkInstance;const a=this._track.GetInstance(),b=a.GetBehaviorIndexBySID(this._sid),c=a.GetBehaviorInstances()[b];return this._behaviorSdkInstance=c.GetSdkInstance(),this._behaviorSdkInstance}}} + +// c3/timelines/propertySourceAdapters/effectSourceAdapter.js +"use strict";C3.PropertyTrack.EffectSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._name=b[1],this._index=b[2],this._initialValue=null,this._effectParams=null}Release(){this._propertyTrack=null,this._track=null,this._initialValue=null,this._effectParams=null}SetInitialState(){const a=this._GetEffectParameters(),b=this._propertyTrack.GetPropertyKeyframeType(),c=this._propertyTrack.GetResultMode();let d;"relative"===c?d=a[this._index]:"absolute"===c&&(d=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===b?d instanceof C3.Color?this._initialValue=d.clone():Array.isArray(d)&&(this._initialValue=new C3.Color,this._initialValue.setR(d[0]),this._initialValue.setG(d[1]),this._initialValue.setB(d[2])):this._initialValue=d}SetResumeState(){}Interpolate(a,b,c){const d=this._propertyTrack.GetPropertyKeyframeType(),e=this._GetEffectParameters();if(!e)return;const f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetValue,h=f.GetInterpolateFunc(this._propertyTrack);let i;return"numeric"===d?(i=h(a,b,c,this._propertyTrack),i=g(this._propertyTrack,this._initialValue,i),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):"boolean"===d?(i=h(a,b,c,this._propertyTrack),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):"color"===d?(i=h(a,b,c,this._propertyTrack),e[this._index].setRgb(g(this._propertyTrack,this._initialValue.getR(),i[0]),g(this._propertyTrack,this._initialValue.getG(),i[1]),g(this._propertyTrack,this._initialValue.getB(),i[2])),C3.Timeline.LAYOUT_RENDER_CHANGE):"text"===d?(i=h(a,b,c,this._propertyTrack),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetEffectParameters(){if(this._effectParams)return this._effectParams;const a=this._track.GetWorldInfo(),b=a.GetInstanceEffectList(),c=b.GetEffectList(),d=c.GetEffectTypeByName(this._name),e=d.GetIndex();return this._effectParams=b.IsEffectIndexActive(e)?b.GetEffectParametersForIndex(e):null,this._effectParams}}; + +// c3/timelines/propertySourceAdapters/instanceVariableSourceAdapter.js +"use strict";C3.PropertyTrack.InstanceVariableSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._index=b[1],this._initialValue}Release(){this._propertyTrack=null,this._track=null}SetInitialState(){const a=this._propertyTrack.GetResultMode();if("relative"===a){const a=this._track.GetInstance();this._initialValue=a.GetInstanceVariableValue(this._index)}else"absolute"===a&&(this._initialValue=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue())}SetResumeState(){}Interpolate(a,b,c){const d=this._track.GetInstance(),e=this._propertyTrack.GetPropertyKeyframeType(),f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetValue,h=f.GetInterpolateFunc(this._propertyTrack);let i;"numeric"===e?(i=h(a,b,c,this._propertyTrack),i=g(this._propertyTrack,this._initialValue,i),d.SetInstanceVariableValue(this._index,i)):"boolean"===e?(i=h(a,b,c,this._propertyTrack),d.SetInstanceVariableValue(this._index,i)):"text"===e?(i=h(a,b,c,this._propertyTrack),d.SetInstanceVariableValue(this._index,i)):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertySourceAdapters/pluginSourceAdapter.js +"use strict";{const a=[0,0,0];C3.PropertyTrack.PluginSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=this._propertyTrack.GetTrack(),this._index=b[1],this._initialValue,this._pluginSdkInstance=null}Release(){this._propertyTrack=null,this._track=null,this._initialValue=null,this._pluginSdkInstance=null}SetInitialState(){const a=this._GetSdkPluginInstance(),b=this._propertyTrack.GetPropertyKeyframeType(),c=this._propertyTrack.GetResultMode();let d;"relative"===c?d=a.GetPropertyValueByIndex(this._index):"absolute"===c&&(d=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===b?(this._initialValue=[],this._initialValue[0]=d[0],this._initialValue[1]=d[1],this._initialValue[2]=d[2]):this._initialValue=d}SetResumeState(){}Interpolate(b,c,d){const e=this._GetSdkPluginInstance(),f=this._propertyTrack.GetPropertyKeyframeType(),g=C3.PropertyTrack.PropertySourceAdapter,h=g.GetValue,i=g.GetInterpolateFunc(this._propertyTrack),j=g.GetWillChangeFunc(this._propertyTrack);let k;return"numeric"===f?(k=i(b,c,d,this._propertyTrack),k=h(this._propertyTrack,this._initialValue,k),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):"boolean"===f?(k=i(b,c,d,this._propertyTrack),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):"color"===f?(k=i(b,c,d,this._propertyTrack),a[0]=h(this._propertyTrack,this._initialValue[0],k[0]),a[1]=h(this._propertyTrack,this._initialValue[1],k[1]),a[2]=h(this._propertyTrack,this._initialValue[2],k[2]),!j(this._index,e,a))?void 0:(e.SetPropertyValueByIndex(this._index,a),C3.Timeline.LAYOUT_RENDER_CHANGE):"text"===f?(k=i(b,c,d,this._propertyTrack),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetSdkPluginInstance(){if(this._pluginSdkInstance)return this._pluginSdkInstance;else{const a=this._track.GetInstance();return this._pluginSdkInstance=a.GetSdkInstance(),this._pluginSdkInstance}}}} + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapter.js +"use strict";const NAMESPACE=C3.PropertyTrack.WorldInstanceSourceAdapter=class{constructor(a){this._propertyTrack=a,this._track=a.GetTrack(),this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const a=this._propertyTrack.GetPropertyName();return this._propertyAdapter="offsetColor"===a?C3.New(NAMESPACE.ColorPropertyAdapter,this._propertyTrack):C3.New(NAMESPACE.NumericPropertyAdapter,this._propertyTrack),this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){const d=C3.PropertyTrack.PropertySourceAdapter,e=d.GetInterpolateFunc(this._propertyTrack),f=e(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(f)}SaveState(){this.GetPropertyAdapter().SetSaveState()}ClearSaveState(){this.GetPropertyAdapter().ClearSaveState()}GetCurrentState(){return this.GetPropertyAdapter().GetCurrentState()}CompareInitialStateWithCurrent(){return this.GetPropertyAdapter().CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){return this.GetPropertyAdapter().CompareSaveStateWithCurrent()}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertySourceAdapters/propertyAdapter.js +"use strict";C3.PropertyTrack.PropertyAdapter=class{constructor(a){this._propertyTrack=a,this._worldInfo=a.GetTrack().GetWorldInfo(),this._property=a.GetPropertyName(),this._firstAbsoluteUpdate=!1,this._saveState=null}Release(){this._worldInfo=null,this._propertyTrack=null,this._saveState=null}SetFirstAbsoluteUpdate(a){this._firstAbsoluteUpdate=!!a}GetFirstAbsoluteUpdate(){return this._firstAbsoluteUpdate}SetInitialState(){}SetResumeState(){}SetSaveState(){}ClearSaveState(){this._saveState=null}GetCurrentState(){}CompareInitialStateWithCurrent(){}CompareSaveStateWithCurrent(){}ChangeProperty(){}_FirstKeyframeGetter(){const a=this._PickTimelinePlaybackMode(()=>this._propertyTrack._GetFirstKeyframe(),()=>this._propertyTrack._GetLastKeyframe());return a.GetAbsoluteValue()}_CurrentKeyframeGetter(){const a=this._propertyTrack.GetTimeline(),b=a.GetTime(),c=this._PickTimelinePlaybackMode(()=>this._propertyTrack._GetFirstKeyFrameLowerOrEqualThan(b),()=>this._propertyTrack._GetFirstKeyFrameHigherOrEqualThan(b));return c.GetAbsoluteValue()}_PickTimelinePlaybackMode(a,b){const c=this._propertyTrack.GetTimeline();return c.IsForwardPlayBack()?a():b()}_PickResultMode(a,b){const c=this._propertyTrack.GetResultMode();return"relative"===c?a():b()}_PickFirstAbsoluteUpdate(a,b){return this.GetFirstAbsoluteUpdate()?(this.SetFirstAbsoluteUpdate(!1),a()):b()}_GetAbsoluteInitialValue(){}}; + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{const a=new Map,b=(b,c,d)=>a.set(b,{setter:c,getter:d});b("offsetX",(a,b)=>a.OffsetX(b),(a)=>a.GetX()),b("offsetY",(a,b)=>a.OffsetY(b),(a)=>a.GetY()),b("offsetWidth",(a,b)=>a.OffsetWidth(b),(a)=>a.GetWidth()),b("offsetHeight",(a,b)=>a.OffsetHeight(b),(a)=>a.GetHeight()),b("offsetAngle",(a,b)=>a.OffsetAngle(b),(a)=>a.GetAngle()),b("offsetOpacity",(a,b)=>a.OffsetOpacity(b),(a)=>a.GetOpacity()),b("offsetOriginX",(a,b)=>a.OffsetOriginX(b),(a)=>a.GetOriginX()),b("offsetOriginY",(a,b)=>a.OffsetOriginY(b),(a)=>a.GetOriginY());class c extends C3.PropertyTrack.PropertyAdapter{constructor(b){super(b);const c=b.GetPropertyName();this._getter=a.get(c).getter,this._setter=a.get(c).setter,this._lastValue=0,this._deltaIncreaseDirection=!0}Release(){super.Release(),this._getter=null,this._setter=null}SetInitialState(){this._lastValue=this._PickResultMode(()=>this._PickTimelinePlaybackMode(()=>0,()=>C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)),()=>(this.SetFirstAbsoluteUpdate(!0),this._GetAbsoluteInitialValue(this._FirstKeyframeGetter())))}SetResumeState(){this._FirstKeyframeGetter()===this._CurrentKeyframeGetter()||this._PickResultMode(()=>{},()=>{this.SetFirstAbsoluteUpdate(!0),this._lastValue=this._GetAbsoluteInitialValue(this._CurrentKeyframeGetter())})}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._getter(this._worldInfo)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=this._lastValue;return this._PickResultMode(()=>this._setter(this._worldInfo,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>this._setter(this._worldInfo,b),()=>this._setter(this._worldInfo,a-b))}),this._lastValue=a,C3.Timeline.WORLD_INSTANCE_BOX_CHANGE}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.WorldInstanceSourceAdapter.NumericPropertyAdapter=c} + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapterProperties/colorPropertyAdapter.js +"use strict";{const a=0;class b extends C3.PropertyTrack.PropertyAdapter{constructor(a){super(a),this._lastValueR=0,this._lastValueG=0,this._lastValueB=0}Release(){super.Release()}SetInitialState(){const a=this._PickResultMode(()=>{const a=this._PickTimelinePlaybackMode(()=>[0,0,0],()=>C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack));return this._GetColorFromArray(a)},()=>(this.SetFirstAbsoluteUpdate(!0),this._GetAbsoluteInitialValue(this._FirstKeyframeGetter())));this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())||this._PickResultMode(()=>{},()=>{this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._CurrentKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()})}SetSaveState(){this._saveState=this._Getter()}GetCurrentState(){return this._Getter().toArray().slice(0,3)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return!this._CompareColors(a,this._Getter())}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&!this._CompareColors(this._saveState,this._Getter())}ChangeProperty(c){const d=c[a],e=c[1],f=c[2],b=this._lastValueR,g=this._lastValueG,h=this._lastValueB;return this._PickResultMode(()=>this._Setter(b-d,g-e,h-f),()=>{this._PickFirstAbsoluteUpdate(()=>this._Setter(-b,-g,-h),()=>this._Setter(-b+d,-g+e,-h+f))}),this._lastValueR=d,this._lastValueG=e,this._lastValueB=f,C3.Timeline.LAYOUT_RENDER_CHANGE}_Getter(){return this._worldInfo.GetUnpremultipliedColor().clone()}_Setter(a,c,d){this._worldInfo.OffsetUnpremultipliedColorRGB(a,c,d)}_CompareColors(a,b){return a.equalsIgnoringAlpha(b)}_FirstKeyframeGetter(){const a=super._FirstKeyframeGetter();return this._GetColorFromArray(a)}_CurrentKeyframeGetter(){const a=super._CurrentKeyframeGetter();return this._GetColorFromArray(a)}_GetAbsoluteInitialValue(a){const b=this._GetColorFromArray(a);return C3.Color.Diff(b,this._Getter())}_GetColorFromArray(b){return C3.IsInstanceOf(b,C3.Color)?b:new C3.Color(b[a],b[1],b[2])}}C3.PropertyTrack.WorldInstanceSourceAdapter.ColorPropertyAdapter=b} + +// c3/timelines/propertySourceAdapters/valueSourceAdapter.js +"use strict";C3.PropertyTrack.ValueSourceAdapter=class{constructor(a){this._propertyTrack=a,this._track=a.GetTrack(),this._value=0}Release(){this._propertyTrack=null,this._track=null}SetInitialState(){this._value=this._propertyTrack._GetFirstKeyframe().GetValueWithResultMode()}SetResumeState(){}GetValue(){return this._value}Interpolate(a,b,c){const d=C3.PropertyTrack.NumericTypeAdapter.Interpolate;this._value=d(a,b,c,this._propertyTrack)}SaveState(){}ClearSaveState(){}GetCurrentState(){return this._value}CompareInitialStateWithCurrent(){return!1}CompareSaveStateWithCurrent(){return!1}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertyTypeAdapters/numericTypeAdapter.js +"use strict";C3.PropertyTrack.NumericTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){var f=Math.floor;if(!c)return d._GetLastKeyframe().GetValueWithResultMode();let g=d.GetInterpolationMode();if("default"===g&&(g="continuous"),"combo"===d.GetPropertyType()&&(g="discrete"),"discrete"===g)return b.GetValueWithResultMode();if("continuous"===g||"step"===g){if("step"===g){const b=1/d.GetTimeline().GetStep();a=f(a*b)/b}const h=b.GetTime(),i=c.GetTime(),j=b.GetValueWithResultMode(),k=c.GetValueWithResultMode();if(j===k)return j;const l=C3.normalize(a,h,i),m=b.GetEase(),e=Ease.GetEase(m)((i-h)*l,j,k-j,i-h);return"integer"===d.GetPropertyType()?f(e):e}}}; + +// c3/timelines/propertyTypeAdapters/angleTypeAdapter.js +"use strict";C3.PropertyTrack.AngleTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){if(!c)return d._GetLastKeyframe().GetValueWithResultMode();let e=d.GetInterpolationMode();if("default"===e&&(e="continuous"),"combo"===d.GetPropertyType()&&(e="discrete"),"discrete"===e)return b.GetValueWithResultMode();if("continuous"===e||"step"===e){if("step"===e){const b=1/d.GetTimeline().GetStep();a=Math.floor(a*b)/b}const f=b.GetTime(),g=c.GetTime(),h=b.GetValueWithResultMode(),i=c.GetValueWithResultMode();if(h===i)return h;let j=C3.normalize(a,f,g);const k=Ease.GetEase(b.GetEase());return C3.angleLerp(h,i,k(j,0,1,1))}}}; + +// c3/timelines/propertyTypeAdapters/booleanTypeAdapter.js +"use strict";C3.PropertyTrack.BooleanTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){return c?b.GetValueWithResultMode()?1:0:d._GetLastKeyframe().GetValueWithResultMode()?1:0}}; + +// c3/timelines/propertyTypeAdapters/colorTypeAdapter.js +"use strict";{const a=[0,0,0],b=[0,0,0];C3.PropertyTrack.ColorTypeAdapter=class{constructor(){}static WillChange(c,d,e){var f=Math.floor;const g=d.GetPropertyValueByIndex(c);return Array.isArray(e)?(a[0]=e[0],a[1]=e[1],a[2]=e[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(e),a[0]=f(255*TEMP_COLOR_ARRAY_3.getR()),a[1]=f(255*TEMP_COLOR_ARRAY_3.getG()),a[2]=f(255*TEMP_COLOR_ARRAY_3.getB())),Array.isArray(g)?(b[0]=g[0],b[1]=g[1],b[2]=g[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(g),b[0]=f(255*TEMP_COLOR_ARRAY_3.getR()),b[1]=f(255*TEMP_COLOR_ARRAY_3.getG()),b[2]=f(255*TEMP_COLOR_ARRAY_3.getB())),a[0]!==b[0]||a[1]!==b[1]||a[2]!==b[2]}static Interpolate(b,c,f,d){if(!f){const b=d._GetLastKeyframe().GetValueWithResultMode();return a[0]=b[0],a[1]=b[1],a[2]=b[2],a}let g=d.GetInterpolationMode();if("default"===g&&(g="continuous"),"discrete"===g){const b=c.GetValueWithResultMode();return a[0]=b[0],a[1]=b[1],a[2]=b[2],a}if("continuous"===g||"step"===g){if("step"===g){const a=1/d.GetTimeline().GetStep();b=Math.floor(b*a)/a}const h=c.GetTime(),i=f.GetTime(),j=c.GetValueWithResultMode(),k=f.GetValueWithResultMode(),l=C3.normalize(b,h,i),m=c.GetEase(),e=j[0],n=j[1],o=j[2],p=k[0],q=k[1],r=k[2],s=Ease.GetEase(m),t=i-h,u=t*l;return a[0]=e===p?e:s(u,e,p-e,t),a[1]=n===q?n:s(u,n,q-n,t),a[2]=o===r?o:s(u,o,r-o,t),a}}}} + +// c3/timelines/propertyTypeAdapters/textTypeAdapter.js +"use strict";C3.PropertyTrack.TextTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){return c?b.GetValueWithResultMode():d._GetLastKeyframe().GetValueWithResultMode()}}; + +// c3/timelines/tweens/tween.js +"use strict";{C3.Tween=class a extends C3.Timeline{constructor(a,b){super(a,b),this._tags=[""],this._stringTags="",this._tagsChanged=!1,this._destroyInstanceOnComplete=!1,this._initialValueMode="start-value",this.SetStep(0),this.SetInterpolationMode("default"),this.SetStartedTriggers(null),this.SetFinishedTriggers(null)}Release(){C3.clearArray(this._tags),this._tags=null,super.Release()}SetStartValue(a,b){for(const c of this._tracks)for(const d of c._propertyTracks){if(d.GetPropertyName()!==b)continue;const c=d._GetFirstKeyframe();c.SetValue(a),c.SetAbsoluteValue(a)}}SetEndValue(a,b){for(const c of this._tracks)for(const d of c._propertyTracks){if(d.GetPropertyName()!==b)continue;const c=d._GetLastKeyframe();c.SetValue(a),c.SetAbsoluteValue(a),(this.IsPlaying()||!this.IsComplete())&&d.AddPropertyKeyframeAtCurrentTime()}}HasTags(b){if(!this._tags)return!1;if(!this._tags.length)return!1;const c=a._GetTagArray(b);return!!c&&!!c.length&&c.every(a._HasTag,this)}SetTags(b){this._tags=a._GetTagArray(b),this._tagsChanged=!0}GetTags(){return this._tags}GetStringTags(){return this._tagsChanged&&(this._stringTags=this._tags.join(" ")),this._tagsChanged=!1,this._stringTags}SetInitialValueMode(a){this._initialValueMode=a}GetInitialValueMode(){return this._initialValueMode}SetDestroyInstanceOnComplete(a){this._destroyInstanceOnComplete=a}GetDestroyInstanceOnComplete(){return this._destroyInstanceOnComplete}OnStarted(){if(super.OnStarted(),!this.IsComplete())for(const a of this._tracks)a.CompareSaveStateWithCurrent()}SetTime(a){this._DeleteIntermediateKeyframes(),super.SetTime(a)}SetInitialState(){if(!this.InitialStateSet()&&this.GetInitialValueMode()==="current-state")for(const a of this._tracks)a.CompareInitialStateWithCurrent();super.SetInitialState()}Stop(a=!1){if(super.Stop(a),!this.IsComplete())for(const a of this._tracks)a.SaveState()}Reset(){this._DeleteIntermediateKeyframes(),super.Reset()}_DeleteIntermediateKeyframes(){for(const a of this._tracks){const b=(a)=>{const b=a.GetTime(),c=this.GetTotalTime();return 0!==b&&b!==c};a.DeleteKeyframes(b),a.DeletePropertyKeyframes(b)}}static IsPlaying(a){return a.IsPlaying()}static _HasTag(a){const b=this.GetTags();return""===a?1===b.length&&""===b[0]:b.includes(a)}static _GetTagArray(a){return C3.IsArray(a)?a.slice(0):C3.IsString(a)?a.split(" "):void 0}static Build(a){const b=C3.Timeline.GetDefaultInitData(),c=a.runtime.GetTimelineManager(),d=C3.New(C3.Tween,b,c);C3.IsArray(a.propertyTracksConfig)||(a.propertyTracksConfig=[a.propertyTracksConfig]),d.SetTags(a.tags),d.SetInitialValueMode(a.initialValueMode),d.SetTotalTime(a.time),d.SetResultMode(a.propertyTracksConfig[0].resultMode),d.SetDestroyInstanceOnComplete(a.releaseOnComplete);const e=d.AddTrack();e.SetInstanceUID(a.instance.GetUID()),e.SetInterpolationMode("default"),e.SetResultMode(a.propertyTracksConfig[0].resultMode),e.SetEnable(!0);const f=e.AddKeyframe();f.SetTime(0),f.SetEase("noease"),f.SetEnable(!0);const g=e.AddKeyframe();g.SetTime(a.time),g.SetEase("noease"),g.SetEnable(!0);for(const b of a.propertyTracksConfig){const c=e.AddPropertyTrack(b.sourceId);c.SetPropertyName(b.property),c.SetPropertyType(b.type),c.SetMin(NaN),c.SetMax(NaN),c.SetInterpolationMode("default"),c.SetResultMode(b.resultMode),c.SetEnable(!0);const d=c.AddPropertyKeyframe();d.SetValue(b.startValue),d.SetAbsoluteValue(b.startValue),d.SetType(b.valueType),d.SetTime(0),d.SetEase(b.ease),d.SetEnable(!0);const f=c.AddPropertyKeyframe();f.SetValue(b.endValue),f.SetAbsoluteValue(b.endValue),f.SetType(b.valueType),f.SetTime(a.time),f.SetEase(b.ease),f.SetEnable(!0)}return d}}} + +// c3/events/stacks/solStack.js +"use strict";C3.SolStack=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=a,this._stack=[],this._stack.push(C3.New(C3.Sol,this)),this._index=0}Release(){for(const a of this._stack)a.Release();C3.clearArray(this._stack),this._objectClass=null}GetObjectClass(){return this._objectClass}GetCurrentSol(){return this._stack[this._index]}Clear(){this.GetCurrentSol().Clear()}PushClean(){const a=this._stack,b=++this._index;b===a.length?a.push(C3.New(C3.Sol,this)):a[b].Reset()}PushCopy(){const a=this._stack,b=++this._index;b===a.length&&a.push(C3.New(C3.Sol,this)),a[b].Copy(a[b-1])}Pop(){--this._index}}; + +// c3/events/stacks/sol.js +"use strict";C3.Sol=class extends C3.DefendedBase{constructor(a){super(),this._stack=a,this._objectClass=this._stack.GetObjectClass(),this._eventStack=this._objectClass.GetRuntime().GetEventStack(),this._selectAll=!0,this._instances=[],this._elseInstances=[]}Release(){this.ClearArrays(),this._stack=null,this._objectClass=null,this._eventStack=null}ClearArrays(){C3.clearArray(this._instances),C3.clearArray(this._elseInstances)}GetObjectClass(){return this._objectClass}IsSelectAll(){return this._selectAll}HasAnyInstances(){return this._selectAll?!!this._objectClass.GetInstanceCount():!!this._instances.length}GetInstances(){return this._selectAll?this._objectClass.GetInstances():this._instances}HasAnyElseInstances(){return!!this._elseInstances.length}GetElseInstances(){return this._elseInstances}GetExpressionInstances(){const a=this.GetInstances();return a.length?a:this._elseInstances}Reset(){this._selectAll=!0,C3.clearArray(this._elseInstances)}Clear(){this._selectAll=!0}Copy(a){a.IsSelectAll()?this.Reset():(this._selectAll=!1,C3.shallowAssignArray(this._instances,a._instances),C3.clearArray(this._elseInstances))}_PushInstance(a){this._instances.push(a)}_PushElseInstance(a){this._elseInstances.push(a)}_SetSelectAll(a){this._selectAll=!!a}_GetOwnInstances(){return this._instances}_GetOwnElseInstances(){return this._elseInstances}SetSinglePicked(a){this._selectAll=!1,C3.clearArray(this._instances),this._instances.push(a)}SetArrayPicked(a){this._selectAll=!1,C3.shallowAssignArray(this._instances,a)}PickOne(a){if(a)if(this._eventStack.GetCurrentStackFrame().GetCurrentEvent().IsOrBlock()){this.IsSelectAll()&&(C3.clearArray(this._instances),C3.shallowAssignArray(this._elseInstances,a.GetObjectClass().GetInstances()),this._selectAll=!1);const b=this._elseInstances.indexOf(a);-1!==b&&(this._instances.push(this._elseInstances[b]),this._elseInstances.splice(b,1))}else this.SetSinglePicked(a)}}; + +// c3/events/stacks/eventStack.js +"use strict";C3.EventStack=class extends C3.DefendedBase{constructor(a){super(),this._eventSheetManager=a,this._runtime=this._eventSheetManager.GetRuntime(),this._stack=[],this._stack.push(C3.New(C3.EventStackFrame,this,null)),this._index=0}Release(){for(const a of this._stack)a.Release();C3.clearArray(this._stack),this._eventSheetManager=null,this._runtime=null}GetEventSheetManager(){return this._eventSheetManager}GetRuntime(){return this._runtime}GetCurrentStackFrame(){return this._stack[this._index]}Push(a){const b=this._stack,c=++this._index;if(c===b.length){const c=C3.New(C3.EventStackFrame,this,a);return b.push(c),c}else{const d=b[c];return d.Reset(a),d}}Pop(){--this._index}}; + +// c3/events/stacks/eventStackFrame.js +"use strict";C3.EventStackFrame=class extends C3.DefendedBase{constructor(a,b){super(),this._stack=a,this._runtime=this._stack.GetRuntime(),this._currentEvent=b,this._cndIndex=0,this._actIndex=0,this._lastEventTrue=!1,this._elseBranchRan=!1,this._expressionObjectClass=null}Release(){this.Reset(null),this._stack=null,this._runtime=null}Reset(a){this._currentEvent=a,this._cndIndex=0,this._actIndex=0,this._lastEventTrue=!1,this._elseBranchRan=!1}_Restore(a,b){this._currentEvent=a,this._cndIndex=0,this._actIndex=b}ResetQuick(){this._cndIndex=0,this._actIndex=0}GetCurrentEvent(){return this._currentEvent}SetCurrentEvent(a){this._currentEvent=a}GetConditionIndex(){return this._cndIndex}SetConditionIndex(a){this._cndIndex=a}GetActionIndex(){return this._actIndex}SetActionIndex(a){this._actIndex=a}SetLastEventTrue(a){this._lastEventTrue=!!a}GetLastEventTrue(){return this._lastEventTrue}SetElseBranchRan(a){this._elseBranchRan=!!a}GetElseBranchRan(){return this._elseBranchRan}SetExpressionObjectClass(a){this._expressionObjectClass=a}GetExpressionObjectClass(){return this._expressionObjectClass}IsSolModifierAfterCnds(){const a=this._currentEvent;return!!a.IsSolWriterAfterCnds()||!!(this._cndIndexc=a);return this._queuedDebugTriggers.push([a,b,c]),d}*_RunQueuedDebugTriggersGen(){if(this._runtime.HitBreakpoint())throw new Error("should not be in breakpoint");for(const a=this._runtime.GetLayoutManager();this._queuedDebugTriggers.length;){const[b,c,d]=this._queuedDebugTriggers.shift(),e=yield*this._DebugTrigger(a,b,c);d(e)}}async RunQueuedDebugTriggersAsync(){for(const a of this._RunQueuedDebugTriggersGen())await this._runtime.DebugBreak(a)}_FastTrigger(a,b,c,d){let e=!1;const f=a.GetMainRunningLayout(),g=f.GetEventSheet();if(g){this._executingTriggerDepth++,this._runtime.PushCurrentLayout(f);const a=g.deepIncludes();for(let f=0,g=a.length;fa.ShouldRelease());for(const b of a)b.Release()}ClearAllScheduledWaits(){for(const a of this._scheduledWaits)a.Release();C3.clearArray(this._scheduledWaits)}RemoveInstancesFromScheduledWaits(a){for(const b of this._scheduledWaits)b.RemoveInstances(a)}_SaveToJson(){return{"groups":this._SaveGroupsToJson(),"cnds":this._SaveCndsToJson(),"acts":this._SaveActsToJson(),"vars":this._SaveVarsToJson(),"waits":this._SaveScheduledWaitsToJson()}}_LoadFromJson(a){this._LoadGroupsFromJson(a["groups"]),this._LoadCndsFromJson(a["cnds"]),this._LoadActsFromJson(a["acts"]),this._LoadVarsFromJson(a["vars"]),this._LoadScheduledWaitsFromJson(a["waits"])}_SaveGroupsToJson(){const a={};for(const b of this.GetAllGroups())a[b.GetSID().toString()]=b.IsGroupActive();return a}_LoadGroupsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetEventGroupBySID(a);d&&d.SetGroupActive(c)}}_SaveCndsToJson(){const a={};for(const[b,c]of this._cndsBySid){const d=c._SaveToJson();d&&(a[b.toString()]=d)}return a}_LoadCndsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetConditionBySID(a);d&&d._LoadFromJson(c)}}_SaveActsToJson(){const a={};for(const[b,c]of this._actsBySid){const d=c._SaveToJson();d&&(a[b.toString()]=d)}return a}_LoadActsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetActionBySID(a);d&&d._LoadFromJson(c)}}_SaveVarsToJson(){const a={};for(const[b,c]of this._eventVarsBySid)!c.IsConstant()&&(c.IsGlobal()||c.IsStatic())&&(a[b.toString()]=c.GetValue());return a}_LoadVarsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetEventVariableBySID(a);d&&d.SetValue(c)}}_SaveScheduledWaitsToJson(){return this._scheduledWaits.map((a)=>a._SaveToJson())}_LoadScheduledWaitsFromJson(a){this.ClearAllScheduledWaits();for(const b of a){const a=C3.ScheduledWait._CreateFromJson(this,b);a&&this._scheduledWaits.push(a)}}_GetPerfRecords(){return[...this._runtime.GetLayoutManager().runningLayouts()].map((a)=>a.GetEventSheet()).filter((a)=>a).map((a)=>a._GetPerfRecord())}}} + +// c3/events/eventSheet.js +"use strict";C3.EventSheet=class extends C3.DefendedBase{constructor(a,b){super(),this._eventSheetManager=a,this._runtime=a.GetRuntime(),this._name=b[0],this._events=[],this._triggers=new Map,this._fastTriggers=new Map,this._eventsByDisplayNumber=new Map,this._hasRun=!1,this._shallowIncludes=[],this._deepIncludes=[],this._alreadyIncludedSheets=new Set;for(const c of b[1])this._CreateEvent(c,null,this._events);this._perfRecord=this._runtime.IsDebug()?{type:"sheet",name:this._name,totalTimeCounter:0,children:[]}:null}Release(){this._eventSheetManager=null,this._runtime=null}_CreateEvent(a,b,c){switch(a[0]){case 0:this._CreateEventBlock(a,b,c);break;case 1:this._CreateEventVariable(a,b,c);break;case 2:this._CreateInclude(a,b,c);break;default:throw new Error("invalid event type");}}_CreateEventBlock(a,b,c){const d=C3.EventBlock.Create(this,b,a);if(d.IsOrBlock()){c.push(d);const a=d.GetConditions();for(let b=0,c=a.length;ba.DebugCanRunFast()),a.canRunAllActionsFast=this._actions.every((b)=>b.DebugCanRunFast()),a.canRunAllSubEventsFast=this._subEvents.every((a)=>a.DebugCanRunFast()),a.canRunSelfFast=a.canRunAllConditionsFast&&a.canRunAllActionsFast&&a.canRunAllSubEventsFast}_UpdateCanRunFastRecursive(){let a=this;do a._UpdateCanRunFast(),a=a.GetParent();while(a)}_IdentifyTopLevelGroup(){if(!this.IsGroup())return;let a=this.GetParent();for(this._isTopLevelGroup=!0;a;){if(!a.IsGroup()){this._isTopLevelGroup=!1;break}a=a.GetParent()}}_IdentifySolModifiersIncludingParents(){const a=this._runtime.GetAllObjectClasses();if(this._solModifiers===a)this._solModifiersIncludingParents=a;else{this._solModifiersIncludingParents=C3.cloneArray(this._solModifiers);for(let a=this.GetParent();a;){for(const b of a._solModifiers)this._AddParentSolModifier(b);a=a.GetParent()}const a=this.GetEventSheetManager();this._solModifiers=a._DeduplicateSolModifierList(this._solModifiers),this._solModifiersIncludingParents=a._DeduplicateSolModifierList(this._solModifiersIncludingParents)}}_IdentifyTriggerParents(){if(this.HasAnyTriggeredCondition()){this._triggerParents=[];for(let a=this.GetParent();a;)this._triggerParents.push(a),a=a.GetParent();this._triggerParents.reverse()}}SetSolWriterAfterCnds(){this._isSolWriterAfterCnds=!0,this._parent&&this._parent.SetSolWriterAfterCnds()}IsSolWriterAfterCnds(){return this._isSolWriterAfterCnds}GetSolModifiers(){return this._solModifiers}GetSolModifiersIncludingParents(){return this._solModifiersIncludingParents}HasSolModifier(a){return this._solModifiers.includes(a)}GetTriggerParents(){return this._triggerParents}GetEventSheet(){return this._eventSheet}GetEventSheetManager(){return this._eventSheet.GetEventSheetManager()}GetRuntime(){return this._runtime}GetParent(){return this._parent}GetDebugDisplayNumber(){return this._debugData?this._debugData.displayNumber:-1}IsDebugBreakable(){return this._debugData&&this._debugData.isBreakable}IsDebugBreakpoint(){return this.IsDebugBreakable()&&this._debugData.isBreakpoint}_SetDebugBreakpoint(a){this._debugData.isBreakpoint=!!a,this._UpdateCanRunFastRecursive()}IsGroup(){return this._isGroup}IsTopLevelGroup(){return this._isTopLevelGroup}IsElseBlock(){return this._isElseBlock}HasElseBlock(){return this._hasElseBlock}GetGroupName(){return this._groupName}IsGroupActive(){return this._isGroupActive}ResetInitialActivation(){this.SetGroupActive(this._isInitiallyActive)}SetGroupActive(b){if(b=!!b,!this._isGroup)throw new Error("not a group");if(this._isGroupActive!==b){this._isGroupActive=b;for(const a of this._containedIncludes)a.UpdateActive();if(this._containedIncludes.length){const a=this._runtime.GetCurrentLayout(),b=a.GetEventSheet();b&&b._UpdateDeepIncludes()}}}GetSID(){return this._sid}IsOrBlock(){return this._isOrBlock}IsTrigger(){return this._conditions.length&&this._conditions[0].IsTrigger()}HasAnyTriggeredCondition(){return this._conditions.some((a)=>a.IsTrigger())}GetConditions(){return this._conditions}GetConditionCount(){return this._conditions.length}GetConditionAt(a){if(a=Math.floor(a),0>a||a>=this._conditions.length)throw new RangeError("invalid condition index");return this._conditions[a]}IsFirstConditionOfType(a){let b=a.GetIndex();if(0===b)return!0;for(;0<=b;--b)if(this._conditions[b].GetObjectClass()===a.GetObjectClass())return!1;return!0}GetActions(){return this._actions}GetActionCount(){return this._actions.length}GetActionAt(a){if(a=Math.floor(a),0>a||a>=this._actions.length)throw new RangeError("invalid action index");return this._actions[a]}_HasActionIndex(a){return a=Math.floor(a),0<=a&&a=a.length?this._initialValue:a[b]}GetTypedValue(){let a=this.GetValue();return this.IsBoolean()&&(a=!!a),a}ResetToInitialValue(){this._value=this._initialValue}}} + +// c3/events/eventInclude.js +"use strict";{const a=[];C3.EventInclude=class extends C3.DefendedBase{constructor(a,b,c){super();const d=a.GetEventSheetManager();this._eventSheet=a,this._eventSheetManager=d,this._runtime=a.GetRuntime(),this._parent=b,this._includeSheet=null,this._includeSheetName=c[1],this._isActive=!0}static Create(a,b,c){return C3.New(C3.EventInclude,a,b,c)}Release(){}_PostInit(){this._includeSheet=this._eventSheetManager.GetEventSheetByName(this._includeSheetName);this._eventSheet._AddShallowInclude(this);for(let a=this.GetParent();a;)a instanceof C3.EventBlock&&a.IsGroup()&&a._AddContainedInclude(this),a=a.GetParent();this.UpdateActive(),this._runtime.IsDebug()&&this._eventSheet._GetPerfRecord().children.push(this._includeSheet._GetPerfRecord())}GetParent(){return this._parent}GetSolModifiers(){return a}GetIncludeSheet(){return this._includeSheet}Run(){const a=!!this.GetParent(),b=this._runtime.GetAllObjectClasses();a&&this._eventSheetManager.PushCleanSol(b),this._includeSheet.Run(),a&&this._eventSheetManager.PopSol(b)}*DebugRun(){const a=!!this.GetParent(),b=this._runtime.GetAllObjectClasses();a&&this._eventSheetManager.PushCleanSol(b),yield*this._includeSheet.DebugRun(),a&&this._eventSheetManager.PopSol(b)}DebugCanRunFast(){return!1}IsActive(){return this._isActive}UpdateActive(){for(let a=this.GetParent();a;){if(a instanceof C3.EventBlock&&a.IsGroup()&&!a.IsGroupActive())return void(this._isActive=!1);a=a.GetParent()}this._isActive=!0}}} + +// c3/events/expNode.js +"use strict";{function a(a,b){return a>=b?a%b:0>a?(a<=-b&&(a%=b),0>a&&(a+=b),a):a}C3.ExpNode=class extends C3.DefendedBase{constructor(a){super(),this._owner=a,this._runtime=a.GetRuntime()}_PostInit(){}static CreateNode(a,g){const h=g[0];return C3.New([e,c,d,f,b][h],a,g)}};class b extends C3.ExpNode{constructor(a,b){super(a),this._systemPlugin=this._runtime.GetSystemPlugin(),this._func=this._runtime.GetObjectReference(b[1]);(this._func===C3.Plugins.System.Exps.random||this._func===C3.Plugins.System.Exps.choose)&&this._owner.SetVariesPerInstance()}GetBoundMethod(){return this._systemPlugin._GetBoundACEMethod(this._func,this._systemPlugin)}}class c extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._func=this._runtime.GetObjectReference(b[2]);this._returnsString=!!b[3],this._eventStack=this._runtime.GetEventSheetManager().GetEventStack(),this._owner._MaybeVaryFor(this._objectClass)}GetBoundMethod(){return this._objectClass.GetPlugin()._GetBoundACEMethod(this._func,this._objectClass.GetSingleGlobalInstance().GetSdkInstance())}ExpObject(...b){const c=this._objectClass,d=c.GetCurrentSol().GetExpressionInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(this._owner.GetSolIndex(),e);return this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(c),this._func.apply(d[f].GetSdkInstance(),b)}ExpObject_InstExpr(b,...c){const d=this._objectClass,e=d.GetInstances(),f=e.length;if(0===f)return this._returnsString?"":0;const g=a(b,f);return this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(d),this._func.apply(e[g].GetSdkInstance(),c)}}class d extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._varIndex=b[3],this._returnsString=!!b[2],this._owner._MaybeVaryFor(this._objectClass)}ExpInstVar(){const b=this._objectClass.GetCurrentSol().GetExpressionInstances(),c=b.length;if(0===c)return this._returnsString?"":0;const d=a(this._owner.GetSolIndex(),c);return b[d]._GetInstanceVariableValueUnchecked(this._varIndex)}ExpInstVar_Family(){const b=this._objectClass,c=b.GetCurrentSol().GetExpressionInstances(),d=c.length;if(0===d)return this._returnsString?"":0;const e=a(this._owner.GetSolIndex(),d),f=c[e],g=f.GetObjectClass().GetFamilyInstanceVariableOffset(b.GetFamilyIndex());return f._GetInstanceVariableValueUnchecked(this._varIndex+g)}ExpInstVar_InstExpr(b){const c=this._objectClass,d=c.GetInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(b,e),g=d[f];let h=0;return c.IsFamily()&&(h=g.GetObjectClass().GetFamilyInstanceVariableOffset(c.GetFamilyIndex())),g._GetInstanceVariableValueUnchecked(this._varIndex+h)}}class e extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._behaviorType=this._objectClass.GetBehaviorTypeByName(b[2]),this._behaviorIndex=this._objectClass.GetBehaviorIndexByName(b[2]),this._func=this._runtime.GetObjectReference(b[3]);this._returnsString=!!b[4],this._eventStack=this._runtime.GetEventSheetManager().GetEventStack(),this._owner._MaybeVaryFor(this._objectClass)}ExpBehavior(...b){const c=this._objectClass,d=c.GetCurrentSol().GetExpressionInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(this._owner.GetSolIndex(),e);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(c);const g=d[f];let h=0;return c.IsFamily()&&(h=g.GetObjectClass().GetFamilyBehaviorOffset(c.GetFamilyIndex())),this._func.apply(g.GetBehaviorInstances()[this._behaviorIndex+h].GetSdkInstance(),b)}ExpBehavior_InstExpr(b,...c){const d=this._objectClass,e=d.GetInstances(),f=e.length;if(0===f)return this._returnsString?"":0;const g=a(b,f);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(d);const h=e[g];let i=0;return d.IsFamily()&&(i=h.GetObjectClass().GetFamilyBehaviorOffset(d.GetFamilyIndex())),this._func.apply(h.GetBehaviorInstances()[this._behaviorIndex+i].GetSdkInstance(),c)}}class f extends C3.ExpNode{constructor(a,b){super(a),this._eventVar=null,this._eventVarName=b[1]}_PostInit(){this._eventVar=this._runtime.GetEventSheetManager().GetEventVariableByName(this._eventVarName,this._owner.GetEventBlock().GetParent());this._eventVarName=null}GetVar(){return this._eventVar}}} + +// c3/events/parameter.js +"use strict";{function a(a){const b=self.C3_ExpressionFuncs[a];if(!b)throw new Error("invalid expression number");return b}C3.Parameter=class extends C3.DefendedBase{constructor(a,b,c){super(),this._owner=a,this._index=c,this._type=b,this.Get=null,this._variesPerInstance=!1,this._isConstant=!1}static Create(a,m,n){const o=m[0];return C3.New([b,c,i,e,f,d,g,b,e,e,j,k,i,l,c,h][o],a,o,n,m)}_PostInit(){}SetVariesPerInstance(){this._variesPerInstance=!0}_MaybeVaryFor(a){!this._variesPerInstance&&a&&(a.GetPlugin().IsSingleGlobal()||(this._variesPerInstance=!0))}VariesPerInstance(){return this._variesPerInstance}GetIndex(){return this._index}GetRuntime(){return this._owner.GetRuntime()}GetEventBlock(){return this._owner.GetEventBlock()}IsConstant(){return this._isConstant}};class b extends C3.Parameter{constructor(b,c,d,e){super(b,c,d),this._solIndex=0;const f=e[1];this._expressionNumber=f[0],this._numberedNodes=[],this._expressionFunc=null;for(let a=1,g=f.length;aa||a>=this._numberedNodes.length)throw new RangeError("invalid numbered node");return this._numberedNodes[a]}_PostInit(){for(const a of this._numberedNodes)a._PostInit();const b=a(this._expressionNumber);this._expressionFunc=this._numberedNodes.length?b(this):b}GetSolIndex(){return this._solIndex}GetExpression(a){return this._solIndex=a,this._expressionFunc()}}class c extends b{constructor(a,b,c,d){super(a,b,c,d),this.Get=this.GetStringExpression,14===b&&(this.GetEventBlock().SetAllSolModifiers(),this._owner instanceof C3.Action&&this.GetEventBlock().SetSolWriterAfterCnds())}GetStringExpression(a){this._solIndex=a;const b=this._expressionFunc();return"string"==typeof b?b:""}_GetFastTriggerValue(){return a(this._expressionNumber)()}}class d extends b{constructor(a,b,c,d){super(a,b,c,d),this.Get=this.GetLayer,this._isConstant=!1}GetLayer(a){this._solIndex=a;const b=this._expressionFunc(),c=this.GetRuntime().GetCurrentLayout();return c.GetLayer(b)}}class e extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._combo=d[1],this.Get=this.GetCombo,this._isConstant=!0}GetCombo(){return this._combo}}class f extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._objectClass=this.GetRuntime().GetObjectClassByIndex(d[1]);this.Get=this.GetObjectClass;const e=this.GetEventBlock();e._AddSolModifier(this._objectClass),this._owner instanceof C3.Action?e.SetSolWriterAfterCnds():e.GetParent()&&e.GetParent().SetSolWriterAfterCnds(),this._isConstant=!0}GetObjectClass(){return this._objectClass}}class g extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._layout=this.GetRuntime().GetLayoutManager().GetLayoutByName(d[1]),this.Get=this.GetLayout,this._isConstant=!0}GetLayout(){return this._layout}}class h extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._timeline=this.GetRuntime().GetTimelineManager().GetTimelineByName(d[1]),this.Get=this.GetTimeline,this._isConstant=!0}GetTimeline(){return this._timeline}}class i extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._fileInfo=d[1],this.Get=this.GetFile,this._isConstant=!0}GetFile(){return this._fileInfo}}class j extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._instVarIndex=d[1];const e=this._owner.GetObjectClass();e&&e.IsFamily()?(this.Get=this.GetFamilyInstanceVariable,this.SetVariesPerInstance()):(this.Get=this.GetInstanceVariable,this._isConstant=!0)}GetInstanceVariable(){return this._instVarIndex}GetFamilyInstanceVariable(a){a=a||0;const b=this._owner.GetObjectClass(),c=b.GetCurrentSol(),d=c.GetInstances();let e=null;if(d.length)e=d[a%d.length].GetObjectClass();else if(c.HasAnyElseInstances()){const b=c.GetElseInstances();e=b[a%b.length].GetObjectClass()}else if(0[a[0].GetUID(),a[1].GetUID(),a[2]])),a[b]=d}return{"ex":a}}_LoadFromJson(a){const b=this._runtime,c=a["ex"];if(c){const a=this.GetSavedDataMap();a.clear();for(const[d,e]of Object.entries(c)){let c=e;"collmemory"===d&&(c=C3.New(C3.PairMap,e.map((a)=>[b.GetInstanceByUID(a[0]),b.GetInstanceByUID(a[1]),a[2]]).filter((a)=>a[0]&&a[1]))),a.set(d,c)}}else this._savedData&&(this._savedData.clear(),this._savedData=null)}}} + +// c3/events/action.js +"use strict";{function a(a,b){for(let c=0,d=a.length;ca.VariesPerInstance())?(this.Run=this._RunObject_AllParamsVary,this.DebugRun=this._DebugRunObject_AllParamsVary):this._anyParamVariesPerInstance?(this.Run=this._RunObject_SomeParamsVary,this.DebugRun=this._DebugRunObject_SomeParamsVary):this._parameters.every((a)=>a.IsConstant())?(a(this._parameters,this._results),this.Run=this._RunObject_ParamsConst,this.DebugRun=this._DebugRunObject_ParamsConst):(this.Run=this._RunObject_ParamsDontVary,this.DebugRun=this._DebugRunObject_ParamsDontVary):(this.Run=this._RunObject_ParamsConst,this.DebugRun=this._DebugRunObject_ParamsConst)}_SetSystemRunMethod(){const a=this._systemPlugin,b=this._systemPlugin;this._SetRunMethodForBoundFunc(a,b,this._RunSystem)}_SetSingleGlobalRunMethod(){const a=this._objectClass.GetPlugin(),b=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();this._SetRunMethodForBoundFunc(a,b,this._RunSingleGlobal)}_SetRunMethodForBoundFunc(a,b,c){const d=this._func,e=this._parameters;if(0===e.length)this.Run=a._GetBoundACEMethod(d,b);else if(1===e.length){const c=e[0];if(c.IsConstant())this.Run=a._GetBoundACEMethod_1param(d,b,c.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0))}}}else if(2===e.length){const c=e[0],f=e[1];if(c.IsConstant()&&f.IsConstant())this.Run=a._GetBoundACEMethod_2params(d,b,c.Get(0),f.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0),f.Get(0))}}}else if(3===e.length){const c=e[0],f=e[1],g=e[2];if(c.IsConstant()&&f.IsConstant()&&g.IsConstant())this.Run=a._GetBoundACEMethod_3params(d,b,c.Get(0),f.Get(0),g.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0),f.Get(0),g.Get(0))}}}else this.Run=c}GetSID(){return this._sid}GetObjectClass(){return this._objectClass}GetEventBlock(){return this._eventBlock}GetRuntime(){return this._runtime}GetIndex(){return this._index}IsBreakpoint(){return this._debugData.isBreakpoint}_SetBreakpoint(a){this._debugData.isBreakpoint=!!a,this._eventBlock._UpdateCanRunFastRecursive()}_DebugReturnsGenerator(){return this._debugData.canDebug}DebugCanRunFast(){return!this.IsBreakpoint()&&!this._runtime.DebugBreakNext()&&!this._DebugReturnsGenerator()}GetSavedDataMap(){return this._savedData||(this._savedData=new Map),this._savedData}GetUnsavedDataMap(){return this._unsavedData||(this._unsavedData=new Map),this._unsavedData}_RunSystem(){const b=this._results;return a(this._parameters,b),this._func.apply(this._systemPlugin,b)}*_DebugRunSystem(){if((this.IsBreakpoint()||this._runtime.DebugBreakNext())&&(yield this),this._DebugReturnsGenerator()){const b=this._results;a(this._parameters,b);const c=yield*this._func.apply(this._systemPlugin,b);return c}return this.Run()}_RunSingleGlobal(){const b=this._results;return a(this._parameters,b),this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),b)}*_DebugRunSingleGlobal(){if((this.IsBreakpoint()||this._runtime.DebugBreakNext())&&(yield this),this._DebugReturnsGenerator()){const b=this._results;a(this._parameters,b);const c=yield*this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),b);return c}return this.Run()}_RunObject_ParamsConst(){const a=this._results,b=this._objectClass.GetCurrentSol().GetInstances();for(let c=0,d=b.length;cc.getRight()||0>c.getBottom()||c.getLeft()>b.GetWidth()||c.getTop()>b.GetHeight()}function e(a,b,c){const d=this.GetCurrentSol(),e=d.GetInstances();if(!e.length)return!1;let f=e[0],g=f.GetWorldInfo(),h=f,j=C3.distanceSquared(g.GetX(),g.GetY(),b,c);for(let d=1,i=e.length;dj)&&(j=i,h=f)}return d.PickOne(h),!0}function f(a){const b=this.GetWorldInfo();b.GetX()===a||(b.SetX(a),b.SetBboxChanged())}function g(a){const b=this.GetWorldInfo();b.GetY()===a||(b.SetY(a),b.SetBboxChanged())}function h(a,b){const c=this.GetWorldInfo();c.EqualsXY(a,b)||(c.SetXY(a,b),c.SetBboxChanged())}function i(a,b){if(a){const c=a.GetPairedInstance(this._inst);if(c){const[a,d]=c.GetImagePoint(b),e=this.GetWorldInfo();e.GetX()===a&&e.GetY()===d||(e.SetXY(a,d),e.SetBboxChanged())}}}function j(a){if(0!==a){const b=this.GetWorldInfo();b.OffsetXY(b.GetCosAngle()*a,b.GetSinAngle()*a),b.SetBboxChanged()}}function k(b,a){if(0!==a){const c=this.GetWorldInfo();b=C3.toRadians(b),c.OffsetXY(Math.cos(b)*a,Math.sin(b)*a),c.SetBboxChanged()}}function l(){return this.GetWorldInfo().GetX()}function m(){return this.GetWorldInfo().GetY()}function n(){return this._runtime.GetDt(this._inst)}function o(a,b){return C3.compare(this.GetWorldInfo().GetWidth(),a,b)}function p(a,b){return C3.compare(this.GetWorldInfo().GetHeight(),a,b)}function q(a){const b=this.GetWorldInfo();b.GetWidth()===a||(b.SetWidth(a),b.SetBboxChanged())}function r(a){const b=this.GetWorldInfo();b.GetHeight()===a||(b.SetHeight(a),b.SetBboxChanged())}function s(a,b){const c=this.GetWorldInfo();c.GetWidth()===a&&c.GetHeight()===b||(c.SetSize(a,b),c.SetBboxChanged())}function t(){return this.GetWorldInfo().GetWidth()}function u(){return this.GetWorldInfo().GetHeight()}function v(){return this.GetWorldInfo().GetBoundingBox().getLeft()}function w(){return this.GetWorldInfo().GetBoundingBox().getTop()}function x(){return this.GetWorldInfo().GetBoundingBox().getRight()}function y(){return this.GetWorldInfo().GetBoundingBox().getBottom()}function z(b,c){return C3.angleDiff(this.GetWorldInfo().GetAngle(),C3.toRadians(c))<=C3.toRadians(b)}function A(b){return C3.angleClockwise(this.GetWorldInfo().GetAngle(),C3.toRadians(b))}function B(c,a){const b=C3.toRadians(c),d=C3.toRadians(a),e=this.GetWorldInfo().GetAngle(),f=!C3.angleClockwise(d,b);return f?C3.angleClockwise(e,b)||!C3.angleClockwise(e,d):C3.angleClockwise(e,b)&&!C3.angleClockwise(e,d)}function C(b){const a=this.GetWorldInfo(),c=C3.clampAngle(C3.toRadians(b));isNaN(c)||a.GetAngle()===c||(a.SetAngle(c),a.SetBboxChanged())}function D(b){if(!(isNaN(b)||0===b)){const a=this.GetWorldInfo();a.SetAngle(a.GetAngle()+C3.toRadians(b)),a.SetBboxChanged()}}function E(b){if(!(isNaN(b)||0===b)){const a=this.GetWorldInfo();a.SetAngle(a.GetAngle()-C3.toRadians(b)),a.SetBboxChanged()}}function F(b,c){const d=this.GetWorldInfo(),e=d.GetAngle(),a=C3.angleRotate(e,C3.toRadians(c),C3.toRadians(b));isNaN(a)||e===a||(d.SetAngle(a),d.SetBboxChanged())}function G(b,c,d){const e=this.GetWorldInfo(),f=e.GetAngle(),a=c-e.GetX(),g=d-e.GetY(),h=Math.atan2(g,a),i=C3.angleRotate(f,h,C3.toRadians(b));isNaN(i)||f===i||(e.SetAngle(i),e.SetBboxChanged())}function H(b,c){const d=this.GetWorldInfo(),e=d.GetAngle(),a=b-d.GetX(),f=c-d.GetY(),g=Math.atan2(f,a);isNaN(g)||e===g||(d.SetAngle(g),d.SetBboxChanged())}function I(){return C3.toDegrees(this.GetWorldInfo().GetAngle())}function J(a,b){return C3.compare(C3.round6dp(100*this.GetWorldInfo().GetOpacity()),a,b)}function K(){return this.GetWorldInfo().IsVisible()}function L(a){a=!!a;const b=this.GetWorldInfo();b.IsVisible()===a||(b.SetVisible(a),this._runtime.UpdateRender())}function M(a){const b=C3.clamp(a/100,0,1),c=this.GetWorldInfo();c.GetOpacity()===b||(c.SetOpacity(b),this._runtime.UpdateRender())}function N(a){sa.setFromRgbValue(a);const b=this.GetWorldInfo();b.GetUnpremultipliedColor().equalsIgnoringAlpha(sa)||(b.SetUnpremultipliedColor(sa),this._runtime.UpdateRender())}function O(){return C3.round6dp(100*this.GetWorldInfo().GetOpacity())}function P(a){return!!a&&this.GetWorldInfo().GetLayer()===a}function Q(a){const b=this.GetCurrentSol(),c=b.GetInstances();if(!c.length)return!1;let d=c[0],e=d;for(let b=1,d=c.length;bi||h===i&&f.GetZIndex()>g.GetZIndex())&&(e=d):(hb||b>=f.length)){const g=d.GetShaderProgram().GetParameterType(b);if("color"===g){sa.setFromRgbValue(c);const a=f[b];if(sa.equalsIgnoringAlpha(a))return;a.copyRgb(sa)}else{if("percent"===g&&(c/=100),f[b]===c)return;f[b]=c}e.IsEffectIndexActive(a)&&this._runtime.UpdateRender()}}}function $(a,b,c){return C3.compare(this.GetInstance().GetInstanceVariableValue(a),b,c)}function _(a){return!!this.GetInstance().GetInstanceVariableValue(a)}function aa(a,b){const c=this.GetCurrentSol(),d=c.GetInstances();if(!d.length)return!1;let e=d[0],f=e,g=e.GetInstanceVariableValue(b);for(let c=1,h=d.length;cg)&&(g=h,f=e)}return c.PickOne(f),!0}function ba(a){return this._runtime.GetCurrentCondition().IsInverted()?da(this,a):ca(this,a)}function ca(a,b){const c=a.GetRuntime().GetInstanceByUID(b);if(!c)return!1;const d=a.GetCurrentSol();if(!d.IsSelectAll()&&!d._GetOwnInstances().includes(c))return!1;if(a.IsFamily()){if(c.GetObjectClass().BelongsToFamily(a))return d.PickOne(c),a.ApplySolToContainer(),!0;}else if(c.GetObjectClass()===a)return d.PickOne(c),a.ApplySolToContainer(),!0;return!1}function da(a,b){const c=a.GetCurrentSol();if(c.IsSelectAll()){c._SetSelectAll(!1),c.ClearArrays();const d=a.GetInstances();for(let a=0,e=d.length;athis._eventSheetManager.GetRuntime().GetGameTime())return!1;return!0}_Run(a){a._Restore(this._event,this._actIndex);for(const[b,c]of this._sols.entries()){const a=b.GetCurrentSol();c._Restore(a)}this._event._ResumeActionsAndSubEvents(a),this._eventSheetManager.ClearSol(this._solModifiers),this._shouldRelease=!0}async _DebugRun(a){a._Restore(this._event,this._actIndex);for(const[b,c]of this._sols.entries()){const a=b.GetCurrentSol();c._Restore(a)}for(const b of this._event._DebugResumeActionsAndSubEvents(a))await this._eventSheetManager.GetRuntime().DebugBreak(b);this._eventSheetManager.ClearSol(this._solModifiers),this._shouldRelease=!0}ShouldRelease(){return this._shouldRelease}RemoveInstances(a){for(const b of this._sols.values())b.RemoveInstances(a)}_SaveToJson(){const a={},b={"t":this._time,"st":this._signalTag,"s":this._isSignalled,"ev":this._event.GetSID(),"sm":this._solModifiers.map((a)=>a.GetSID()),"sols":a};this._event._HasActionIndex(this._actIndex)&&(b["act"]=this._event.GetActionAt(this._actIndex).GetSID());for(const[b,c]of this._sols)a[b.GetSID().toString()]=c._SaveToJson();return b}static _CreateFromJson(a,b){const c=a.GetRuntime(),d=a.GetEventBlockBySID(b["ev"]);if(!d)return null;let e=0;if(b.hasOwnProperty("act")){const c=a.GetActionBySID(b["act"]);if(!c)return null;e=c.GetIndex()}const f=C3.New(C3.ScheduledWait,a);f._time=b["t"],f._signalTag=b["st"],f._isSignalled=b["s"],f._event=d,f._actIndex=e;for(const d of b["sm"]){const a=c.GetObjectClassBySID(d);a&&f._solModifiers.push(a)}for(const[d,e]of Object.entries(b["sols"])){const b=parseInt(d,10),g=c.GetObjectClassBySID(b);if(!g)continue;const h=C3.New(C3.SolState,null);h._LoadFromJson(a,e),f._sols.set(g,h)}return f}}; + +// c3/events/solState.js +"use strict";C3.SolState=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=null,this._isSelectAll=!0,this._instances=[],a&&(this._objectClass=a.GetObjectClass(),this._isSelectAll=a.IsSelectAll(),C3.shallowAssignArray(this._instances,a._GetOwnInstances()))}Release(){this._objectClass=null,C3.clearArray(this._instances)}_Restore(a){a._SetSelectAll(this._isSelectAll),C3.shallowAssignArray(a._GetOwnInstances(),this._instances)}RemoveInstances(a){C3.arrayRemoveAllInSet(this._instances,a)}_SaveToJson(){return{"sa":this._isSelectAll,"insts":this._instances.map((a)=>a.GetUID())}}_LoadFromJson(a,b){const c=a.GetRuntime();this._isSelectAll=!!b["sa"],C3.clearArray(this._instances);for(const d of b["insts"]){const a=c.GetInstanceByUID(d);a&&this._instances.push(a)}}}; + +// c3/sdk/sdkPluginBase.js +"use strict";{function a(a,b){let c=a.get(b);return c||(c=new Map,a.set(b,c)),c}C3.SDKPluginBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._isSingleGlobal=!!a.isSingleGlobal,this._isWorldType=!!a.isWorld,this._isRotatable=!!a.isRotatable,this._mustPredraw=!!a.mustPredraw,this._hasEffects=!!a.hasEffects,this._singleGlobalObjectClass=null,this._boundACEMethodCache=new Map,this._boundACEMethodCache_1param=new Map,this._boundACEMethodCache_2params=new Map,this._boundACEMethodCache_3params=new Map}Release(){this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}IsSingleGlobal(){return this._isSingleGlobal}IsWorldType(){return this._isWorldType}IsRotatable(){return this._isRotatable}MustPreDraw(){return this._mustPredraw}HasEffects(){return this._hasEffects}_GetBoundACEMethod(a,b){if(!b)throw new Error("missing 'this' binding");let c=this._boundACEMethodCache.get(a);return c?c:(c=a.bind(b),this._boundACEMethodCache.set(a,c),c)}_GetBoundACEMethod_1param(b,c,d){if(!c)throw new Error("missing 'this' binding");const e=a(this._boundACEMethodCache_1param,b);let f=e.get(d);return f?f:(f=b.bind(c,d),e.set(d,f),f)}_GetBoundACEMethod_2params(b,c,d,e){if(!c)throw new Error("missing 'this' binding");const f=a(this._boundACEMethodCache_2params,b),g=a(f,d);let h=g.get(e);return h?h:(h=b.bind(c,d,e),g.set(e,h),h)}_GetBoundACEMethod_3params(b,c,d,e,f){if(!c)throw new Error("missing 'this' binding");const g=a(this._boundACEMethodCache_3params,b),h=a(g,d),i=a(h,e);let j=i.get(f);return j?j:(j=b.bind(c,d,e,f),i.set(f,j),j)}_SetSingleGlobalObjectClass(a){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");this._singleGlobalObjectClass=a}GetSingleGlobalObjectClass(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");return this._singleGlobalObjectClass}GetSingleGlobalInstance(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");return this._singleGlobalObjectClass.GetSingleGlobalInstance()}}} + +// c3/sdk/sdkDOMPluginBase.js +"use strict";C3.SDKDOMPluginBase=class extends C3.SDKPluginBase{constructor(a,b){super(a),this._domComponentId=b,this._nextElementId=0,this._instMap=new Map}Release(){super.Release()}_AddElement(a){const b=this._nextElementId++;return this._instMap.set(b,a),b}_RemoveElement(a){this._instMap.delete(a)}AddElementMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,(a)=>{const c=this._instMap.get(a["elementId"]);b(c,a)})}}; + +// c3/sdk/sdkTypeBase.js +"use strict";C3.SDKTypeBase=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=a,this._runtime=a.GetRuntime(),this._plugin=a.GetPlugin()}Release(){this._objectClass=null,this._runtime=null,this._plugin=null}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetImageInfo(){return this._objectClass.GetImageInfo()}FinishCondition(){}LoadTextures(){}ReleaseTextures(){}OnDynamicTextureLoadComplete(){}LoadTilePolyData(){}}; + +// c3/sdk/sdkInstanceBase.js +"use strict";C3.SDKInstanceBase=class extends C3.DefendedBase{constructor(a,b){super(),this._inst=a,this._domComponentId=b,this._runtime=a.GetRuntime(),this._objectClass=this._inst.GetObjectClass(),this._sdkType=this._objectClass.GetSdkType(),this._tickFunc=null,this._tick2Func=null,this._isTicking=!1,this._isTicking2=!1,this._disposables=null,this._wasReleased=!1}Release(){this._wasReleased=!0,this._StopTicking(),this._StopTicking2(),this._tickFunc=null,this._tick2Func=null,this._disposables&&(this._disposables.Release(),this._disposables=null),this._inst=null,this._runtime=null,this._objectClass=null,this._sdkType=null}WasReleased(){return this._wasReleased}GetInstance(){return this._inst}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetPlugin(){return this._sdkType.GetPlugin()}GetSdkType(){return this._sdkType}Trigger(a){return this._runtime.Trigger(a,this._inst)}DebugTrigger(a){return this._runtime.DebugTrigger(a,this._inst)}TriggerAsync(a){return this._runtime.TriggerAsync(a,this._inst)}FastTrigger(a,b){return this._runtime.FastTrigger(a,this._inst,b)}DebugFastTrigger(a,b){return this._runtime.DebugFastTrigger(a,this._inst,b)}AddDOMMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,b)}AddDOMMessageHandlers(a){for(const[b,c]of a)this.AddDOMMessageHandler(b,c)}PostToDOM(a,b){this._runtime.PostComponentMessageToDOM(this._domComponentId,a,b)}PostToDOMAsync(a,b){return this._runtime.PostComponentMessageToDOMAsync(this._domComponentId,a,b)}_PostToDOMMaybeSync(a,b){this._runtime.IsInWorker()?this.PostToDOM(a,b):window["c3_runtimeInterface"]["_OnMessageFromRuntime"]({"type":"event","component":this._domComponentId,"handler":a,"data":b,"responseId":null})}GetCurrentImageInfo(){return null}GetImagePoint(){const a=this._inst.GetWorldInfo();return[a.GetX(),a.GetY()]}Tick(){}Tick2(){}_StartTicking(){this._isTicking||(!this._tickFunc&&(this._tickFunc=()=>this.Tick()),this._runtime.Dispatcher().addEventListener("tick",this._tickFunc),this._isTicking=!0)}_StopTicking(){this._isTicking&&(this._runtime.Dispatcher().removeEventListener("tick",this._tickFunc),this._isTicking=!1)}IsTicking(){return this._isTicking}_StartTicking2(){this._isTicking2||(!this._tick2Func&&(this._tick2Func=()=>this.Tick2()),this._runtime.Dispatcher().addEventListener("tick2",this._tick2Func),this._isTicking2=!0)}_StopTicking2(){this._isTicking2&&(this._runtime.Dispatcher().removeEventListener("tick2",this._tick2Func),this._isTicking2=!1)}IsTicking2(){return this._isTicking2}GetDebuggerProperties(){return[]}SaveToJson(){return null}LoadFromJson(){}LoadTilemapData(){}TestPointOverlapTile(){}GetPropertyValueByIndex(){}SetPropertyValueByIndex(){}CallAction(a,...b){a.call(this,...b)}CallExpression(a,...b){return a.call(this,...b)}}; + +// c3/sdk/sdkWorldInstanceBase.js +"use strict";C3.SDKWorldInstanceBase=class extends C3.SDKInstanceBase{constructor(a,b){super(a,b),this._worldInfo=a.GetWorldInfo(),this._webglcontextlost_handler=null,this._webglcontextrestored_handler=null}Release(){if(this._webglcontextlost_handler){const a=this._runtime.Dispatcher();a.removeEventListener("webglcontextlost",this._webglcontextlost_handler),a.removeEventListener("webglcontextrestored",this._webglcontextrestored_handler),this._webglcontextlost_handler=null,this._webglcontextrestored_handler=null}this._worldInfo=null,super.Release()}HandleWebGLContextLoss(){if(!this._webglcontextlost_handler){this._webglcontextlost_handler=()=>this.OnWebGLContextLost(),this._webglcontextrestored_handler=()=>this.OnWebGLContextRestored();const a=this._runtime.Dispatcher();a.addEventListener("webglcontextlost",this._webglcontextlost_handler),a.addEventListener("webglcontextrestored",this._webglcontextrestored_handler)}}OnWebGLContextLost(){}OnWebGLContextRestored(){}GetWorldInfo(){return this._worldInfo}}; + +// c3/sdk/sdkDOMInstanceBase.js +"use strict";{const a=C3.New(C3.Rect);C3.SDKDOMInstanceBase=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a,b),this._elementId=this.GetPlugin()._AddElement(this),this._isElementShowing=!0,this._autoFontSize=!1,this._lastRect=C3.New(C3.Rect,0,0,-1,-1);const c=this._runtime.GetCanvasManager();this._lastWindowWidth=c.GetLastWidth(),this._lastWindowHeight=c.GetLastHeight(),this._isPendingUpdateState=!1,this._StartTicking()}Release(){this.GetPlugin()._RemoveElement(this._elementId),this.PostToDOMElement("destroy"),this._elementId=-1,super.Release()}PostToDOMElement(a,b){b||(b={}),b["elementId"]=this._elementId,this.PostToDOM(a,b)}PostToDOMElementAsync(a,b){return b||(b={}),b["elementId"]=this._elementId,this.PostToDOMAsync(a,b)}CreateElement(a){a||(a={});const b=this.GetWorldInfo().IsVisible();a["elementId"]=this._elementId,a["isVisible"]=b,Object.assign(a,this.GetElementState()),this._isElementShowing=!!a["isVisible"],this.PostToDOM("create",a),this._UpdatePosition(!0)}SetElementVisible(a){a=!!a;this._isElementShowing===a||(this._isElementShowing=a,this.PostToDOMElement("set-visible",{"isVisible":a}))}Tick(){this._UpdatePosition(!1)}_UpdatePosition(b){var c=Math.round;const d=this.GetWorldInfo(),e=d.GetLayer(),f=d.GetX(),g=d.GetY();let[h,i]=e.LayerToCanvasCss(f,g),[j,k]=e.LayerToCanvasCss(f+d.GetWidth(),g+d.GetHeight());const l=this._runtime.GetCanvasManager(),m=l.GetCssWidth(),n=l.GetCssHeight();if(!d.IsVisible()||!e.IsVisible()||0>=j||0>=k||h>=m||i>=n)return void this.SetElementVisible(!1);1>h&&(h=1),1>i&&(i=1),j>=m&&(j=m-1),k>=n&&(k=n-1),a.set(h,i,j,k);const o=l.GetLastWidth(),p=l.GetLastHeight();if(!b&&a.equals(this._lastRect)&&this._lastWindowWidth===o&&this._lastWindowHeight===p)return void this.SetElementVisible(!0);this._lastRect.copy(a),this._lastWindowWidth=o,this._lastWindowHeight=p,this.SetElementVisible(!0);let q=null;this._autoFontSize&&(q=e.GetDisplayScale()-.2),this.PostToDOMElement("update-position",{"left":c(this._lastRect.getLeft())+l.GetCanvasClientX(),"top":c(this._lastRect.getTop())+l.GetCanvasClientY(),"width":c(this._lastRect.width()),"height":c(this._lastRect.height()),"fontSize":q})}FocusElement(){this.PostToDOMElement("focus",{"focus":!0})}BlurElement(){this.PostToDOMElement("focus",{"focus":!1})}SetElementCSSStyle(a,b){this.PostToDOMElement("set-css-style",{"prop":C3.CSSToCamelCase(a),"val":b})}UpdateElementState(){this._isPendingUpdateState||(this._isPendingUpdateState=!0,Promise.resolve().then(()=>{this._isPendingUpdateState=!1,this.PostToDOMElement("update-state",this.GetElementState())}))}GetElementState(){}GetElementId(){return this._elementId}}} + +// c3/sdk/sdkBehaviorBase.js +"use strict";C3.SDKBehaviorBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._myObjectClasses=C3.New(C3.ArraySet),this._myInstances=C3.New(C3.ArraySet)}Release(){this._myInstances.Release(),this._myObjectClasses.Release(),this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}_AddObjectClass(a){this._myObjectClasses.Add(a)}GetObjectClasses(){return this._myObjectClasses.GetArray()}_AddInstance(a){this._myInstances.Add(a)}_RemoveInstance(a){this._myInstances.Delete(a)}GetInstances(){return this._myInstances.GetArray()}}; + +// c3/sdk/sdkBehaviorTypeBase.js +"use strict";C3.SDKBehaviorTypeBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.GetRuntime(),this._behaviorType=a,this._objectClass=a.GetObjectClass(),this._behavior=a.GetBehavior(),this._behavior._AddObjectClass(this._objectClass)}Release(){this._runtime=null,this._behaviorType=null,this._objectClass=null,this._behavior=null}GetBehaviorType(){return this._behaviorType}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetBehavior(){return this._behavior}}; + +// c3/sdk/sdkBehaviorInstanceBase.js +"use strict";C3.SDKBehaviorInstanceBase=class extends C3.DefendedBase{constructor(a,b){super(),this._behInst=a,this._domComponentId=b,this._inst=a.GetObjectInstance(),this._runtime=a.GetRuntime(),this._behaviorType=a.GetBehaviorType(),this._sdkType=this._behaviorType.GetSdkType(),this._isTicking=!1,this._isTicking2=!1,this._isPostTicking=!1,this._disposables=null}Release(){this._StopTicking(),this._StopTicking2(),this._StopPostTicking(),this._disposables&&(this._disposables.Release(),this._disposables=null),this._behInst=null,this._inst=null,this._runtime=null,this._behaviorType=null,this._sdkType=null}GetBehavior(){return this._behaviorType.GetBehavior()}GetBehaviorInstance(){return this._behInst}GetObjectInstance(){return this._inst}GetObjectClass(){return this._inst.GetObjectClass()}GetWorldInfo(){return this._inst.GetWorldInfo()}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetSdkType(){return this._sdkType}Trigger(a){return this._runtime.Trigger(a,this._inst)}DebugTrigger(a){return this._runtime.DebugTrigger(a,this._inst)}TriggerAsync(a){return this._runtime.TriggerAsync(a,this._inst)}PostCreate(){}Tick(){}Tick2(){}PostTick(){}_StartTicking(){this._isTicking||(this._runtime._AddBehInstToTick(this),this._isTicking=!0)}_StopTicking(){this._isTicking&&(this._runtime._RemoveBehInstToTick(this),this._isTicking=!1)}IsTicking(){return this._isTicking}_StartTicking2(){this._isTicking2||(this._runtime._AddBehInstToTick2(this),this._isTicking2=!0)}_StopTicking2(){this._isTicking2&&(this._runtime._RemoveBehInstToTick2(this),this._isTicking2=!1)}IsTicking2(){return this._isTicking2}_StartPostTicking(){this._isPostTicking||(this._runtime._AddBehInstToPostTick(this),this._isPostTicking=!0)}_StopPostTicking(){this._isPostTicking&&(this._runtime._RemoveBehInstToPostTick(this),this._isPostTicking=!1)}IsPostTicking(){return this._isPostTicking}GetDebuggerProperties(){return[]}AddDOMMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,b)}OnSpriteFrameChanged(){}SaveToJson(){return null}LoadFromJson(){}GetPropertyValueByIndex(){}SetPropertyValueByIndex(){}CallAction(a,...b){a.call(this,...b)}CallExpression(a,...b){return a.call(this,...b)}}; + +// c3/objects/pluginManager.js +"use strict";C3.Plugins={},C3.Behaviors={},C3.PluginManager=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._allPlugins=[],this._pluginsByCtor=new Map,this._systemPlugin=null,this._allBehaviors=[],this._behaviorsByCtor=new Map,this._solidBehavior=null,this._jumpthruBehavior=null}CreatePlugin(a){const b=this._runtime.GetObjectReference(a[0]);if(!b)throw new Error("missing plugin");C3.AddCommonACEs(a,b);const c=C3.New(b,{runtime:this._runtime,isSingleGlobal:a[1],isWorld:a[2],isRotatable:a[5],hasEffects:a[8],mustPredraw:a[9]});c.OnCreate(),this._allPlugins.push(c),this._pluginsByCtor.set(b,c)}CreateSystemPlugin(){this._systemPlugin=C3.New(C3.Plugins.System,{runtime:this._runtime,isSingleGlobal:!0}),this._systemPlugin.OnCreate()}CreateBehavior(a){const b=this._runtime.GetObjectReference(a[1]);if(!b)throw new Error("missing behavior");const c=C3.New(b,{runtime:this._runtime});c.OnCreate(),this._allBehaviors.push(c),this._behaviorsByCtor.set(b,c),!this._solidBehavior&&C3.Behaviors.solid&&c instanceof C3.Behaviors.solid?this._solidBehavior=c:!this._jumpthruBehavior&&C3.Behaviors.jumpthru&&c instanceof C3.Behaviors.jumpthru&&(this._jumpthruBehavior=c)}GetPluginByConstructorFunction(a){return this._pluginsByCtor.get(a)||null}HasBehaviorByConstructorFunction(a){return this._behaviorsByCtor.has(a)}GetBehaviorByConstructorFunction(a){return this._behaviorsByCtor.get(a)||null}GetSystemPlugin(){return this._systemPlugin}GetSolidBehavior(){return this._solidBehavior}GetJumpthruBehavior(){return this._jumpthruBehavior}}; + +// c3/objects/imageInfo.js +"use strict";{const a=new Set;C3.ImageInfo=class extends C3.DefendedBase{constructor(){super(),this._url="",this._size=0,this._pixelFormat=0,this._offsetX=0,this._offsetY=0,this._width=0,this._height=0,this._hasMetaData=!1,this._imageAsset=null,this._textureState="",this._rcTex=C3.New(C3.Rect),a.add(this)}Release(){this.ReleaseTexture(),this._imageAsset=null,a.delete(this)}static OnWebGLContextLost(){for(const b of a)b._textureState="",b._rcTex.set(0,0,0,0)}LoadData(a){this._url=a[0],this._size=a[1],this._pixelFormat=a[2],this._offsetX=a[3],this._offsetY=a[4],this._width=a[5],this._height=a[6],this._hasMetaData=!0}LoadAnimationFrameData(a){this._url=a[0],this._size=a[1],this._offsetX=a[2],this._offsetY=a[3],this._width=a[4],this._height=a[5],this._pixelFormat=a[11],this._hasMetaData=!0}LoadDynamicAsset(a,b){if(this._imageAsset)throw new Error("already loaded asset");this._url=b;const c={};return C3.IsAbsoluteURL(b)&&(c.loadPolicy="remote"),this.LoadAsset(a,c),this._imageAsset.Load()}ReplaceWith(a){if(a===this)throw new Error("cannot replace with self");this.ReleaseTexture(),this._url=a._url,this._size=a._size,this._pixelFormat=a._pixelFormat,this._offsetX=a._offsetX,this._offsetY=a._offsetY,this._width=a._width,this._height=a._height,this._hasMetaData=a._hasMetaData,this._imageAsset=a._imageAsset,this._textureState=a._textureState,this._rcTex=a._rcTex}GetURL(){return this._url}GetSize(){return this._size}GetPixelFormat(){return this._pixelFormat}GetOffsetX(){return this._offsetX}GetOffsetY(){return this._offsetY}GetWidth(){return this._width}GetHeight(){return this._height}GetSheetWidth(){return this._imageAsset.GetWidth()}GetSheetHeight(){return this._imageAsset.GetHeight()}LoadAsset(a,b){if(this._imageAsset)throw new Error("already got asset");b=Object.assign({},b,{url:this.GetURL(),size:this.GetSize()}),this._imageAsset=a.LoadImage(b)}async LoadStaticTexture(a,b){if(!this._imageAsset)throw new Error("no asset");if(this._textureState)throw new Error("already loaded texture");this._textureState="loading";const c=await this._imageAsset.LoadStaticTexture(a,b);return c?(this._textureState="loaded",this._hasMetaData||(this._width=c.GetWidth(),this._height=c.GetHeight(),this._hasMetaData=!0),this._rcTex.set(this._offsetX,this._offsetY,this._offsetX+this._width,this._offsetY+this._height),this._rcTex.divide(c.GetWidth(),c.GetHeight()),c):(this._textureState="",null)}ReleaseTexture(){this._textureState&&(this._imageAsset&&this._imageAsset.ReleaseTexture(),this._textureState="",this._rcTex.set(0,0,0,0))}GetTexture(){return this._imageAsset?this._imageAsset.GetTexture():null}GetTexRect(){return this._rcTex}async ExtractImageToCanvas(){const a=await this._imageAsset.LoadToDrawable(),b=C3.CreateCanvas(this._width,this._height),c=b.getContext("2d");return c.drawImage(a,this._offsetX,this._offsetY,this._width,this._height,0,0,this._width,this._height),b}}} + +// c3/objects/animationInfo.js +"use strict";C3.AnimationInfo=class extends C3.DefendedBase{constructor(a){super(),this._name=a[0],this._speed=a[1],this._isLooping=!!a[2],this._repeatCount=a[3],this._repeatTo=a[4],this._isPingPong=!!a[5],this._sid=a[6],this._frames=a[7].map((a)=>C3.New(C3.AnimationFrameInfo,a))}Release(){for(const a of this._frames)a.Release();C3.clearArray(this._frames)}LoadAllAssets(a){for(const b of this._frames)b.GetImageInfo().LoadAsset(a)}LoadAllTextures(a,b){return Promise.all(this._frames.map((c)=>c.GetImageInfo().LoadStaticTexture(a,b)))}ReleaseAllTextures(){for(const a of this._frames)a.GetImageInfo().ReleaseTexture()}GetName(){return this._name}GetSID(){return this._sid}GetFrameCount(){return this._frames.length}GetFrames(){return this._frames}GetFrameAt(a){if(a=Math.floor(a),0>a||a>=this._frames.length)throw new RangeError("invalid frame");return this._frames[a]}GetSpeed(){return this._speed}IsLooping(){return this._isLooping}GetRepeatCount(){return this._repeatCount}GetRepeatTo(){return this._repeatTo}IsPingPong(){return this._isPingPong}}; + +// c3/objects/animationFrameInfo.js +"use strict";C3.AnimationFrameInfo=class extends C3.DefendedBase{constructor(a){super(),this._imageInfo=C3.New(C3.ImageInfo),this._imageInfo.LoadAnimationFrameData(a),this._duration=a[6],this._origin=C3.New(C3.Vector2,a[7],a[8]),this._imagePoints=a[9].map((a)=>C3.New(C3.ImagePoint,this,a)),this._imagePointsByName=new Map;for(const b of this._imagePoints)this._imagePointsByName.set(b.GetName().toLowerCase(),b);this._collisionPoly=null;const b=a[10];6<=b.length&&(this._collisionPoly=C3.New(C3.CollisionPoly,b))}Release(){this._collisionPoly&&(this._collisionPoly.Release(),this._collisionPoly=null),this._imageInfo.Release(),this._imageInfo=null}GetImageInfo(){return this._imageInfo}GetDuration(){return this._duration}GetOriginX(){return this._origin.getX()}GetOriginY(){return this._origin.getY()}GetCollisionPoly(){return this._collisionPoly}GetImagePointByName(a){return this._imagePointsByName.get(a.toLowerCase())||null}GetImagePointByIndex(a){return a=Math.floor(a),0>a||a>=this._imagePoints.length?null:this._imagePoints[a]}GetImagePointCount(){return this._imagePoints.length}}; + +// c3/objects/imagePoint.js +"use strict";C3.ImagePoint=class extends C3.DefendedBase{constructor(a,b){super(),this._afi=a,this._name=b[0],this._pos=C3.New(C3.Vector2,b[1],b[2])}Release(){}GetName(){return this._name}GetX(){return this._pos.getX()}GetY(){return this._pos.getY()}GetVec2(){return this._pos}}; + +// c3/objects/objectClass.js +"use strict";C3.ObjectClass=class extends C3.DefendedBase{constructor(a,b,c){super();const d=a.GetObjectReference(c[1]);if(this._runtime=a,this._plugin=a.GetPluginManager().GetPluginByConstructorFunction(d),this._sdkType=null,this._instSdkCtor=d.Instance,this._index=b,this._sid=c[11],this._name=c[0],this._isGlobal=!!c[9],this._isFamily=!!c[2],this._isOnLoaderLayout=!!c[10],this._instVarSids=c[3].map((a)=>a[0]),this._instVarTypes=c[3].map((a)=>a[1]),this._behaviorsCount=c[4],this._effectsCount=c[5],this._isWorldType=this._plugin.IsWorldType(),this._effectList=null,this._collisionGrid=C3.New(C3.SparseGrid,a.GetOriginalViewportWidth(),a.GetOriginalViewportHeight()),this._anyCollisionCellChanged=!0,this._anyInstanceParallaxed=!1,this._familyMembers=null,this._familyMembersSet=null,this._familyIndex=-1,this._families=null,this._familiesSet=null,this._familyInstVarMap=null,this._familyBehaviorMap=null,this._familyEffectMap=null,this._isInContainer=!1,this._container=null,this._behaviorTypes=c[8].map((a)=>C3.BehaviorType.Create(this,a)),this._behaviorTypesIncludingInherited=[],this._behaviorsByName=new Map,this._behaviorNameToIndex=new Map,this._usedBehaviorCtors=new Set,this._solStack=C3.New(C3.SolStack,this),this._defaultInstanceData=null,this._defaultLayerIndex=0,this._isContained=!1,this._container=null,this._imageInfo=null,this._animations=null,this._animationsByName=null,this._animationsBySid=null,this._textureRefCount=0,this._savedData=new Map,this._unsavedData=new Map,this._instances=[],this._iidsStale=!0,this._plugin.HasEffects()&&(this._effectList=C3.New(C3.EffectList,this,c[12])),c[6]&&(this._imageInfo=C3.New(C3.ImageInfo),this._imageInfo.LoadData(c[6])),c[7]){this._animations=c[7].map((a)=>C3.New(C3.AnimationInfo,a)),this._animationsByName=new Map,this._animationsBySid=new Map;for(const a of this._animations)this._animationsByName.set(a.GetName().toLowerCase(),a),this._animationsBySid.set(a.GetSID(),a)}this._isFamily?(this._familyMembers=[],this._familyMembersSet=new Set,this._familyIndex=this._runtime._GetNextFamilyIndex()):(this._families=[],this._familiesSet=new Set,this._familyInstVarMap=[],this._familyBehaviorMap=[],this._familyEffectMap=[]),this._sdkType=C3.New(d.Type,this),c[13]&&c[13].length&&this._sdkType.LoadTilePolyData(c[13]),(!this._runtime.UsesLoaderLayout()||this._isFamily||this._isOnLoaderLayout||!this._isWorldType)&&this.OnCreate(),this._plugin.IsSingleGlobal()&&(this._plugin._SetSingleGlobalObjectClass(this),this._CreateSingleGlobalInstance(c))}static Create(a,b,c){return C3.New(C3.ObjectClass,a,b,c)}Release(){if(this._imageInfo&&(this._imageInfo.Release(),this._imageInfo=null),this._animations){for(const b of this._animations)b.Release();C3.clearArray(this._animations),this._animationsByName.clear(),this._animationsBySid.clear()}this._solStack.Release(),this._solStack=null,this._savedData.clear(),this._unsavedData.clear(),this._container=null,this._runtime=null}_LoadFamily(a){for(let b=1,c=a.length;bthis._textureRefCount)throw new Error("released textures too many times");0===this._textureRefCount&&this._sdkType.ReleaseTextures()}}OnDynamicTextureLoadComplete(){if(this._isFamily)throw new Error("not applicable to family");this._sdkType.OnDynamicTextureLoadComplete()}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetIndex(){return this._index}GetSID(){return this._sid}IsFamily(){return this._isFamily}IsGlobal(){return this._isGlobal}IsWorldType(){return this._isWorldType}GetFamilyIndex(){return this._familyIndex}GetBehaviorTypes(){return this._behaviorTypes}GetBehaviorTypesCount(){return this._behaviorsCount}UsesBehaviorByCtor(a){return a&&this._usedBehaviorCtors.has(a)}GetInstanceVariablesCount(){return this._instVarSids.length}GetInstanceVariableSIDs(){return this._instVarSids}GetInstanceVariableIndexBySID(a){return this._instVarSids.indexOf(a)}GetInstanceVariableType(a){if(a=Math.floor(a),0>a||a>=this._instVarTypes.length)throw new RangeError("invalid instance variable index");return this._instVarTypes[a]}GetEffectTypesCount(){return this._effectsCount}GetBehaviorTypesIncludingInherited(){return this._behaviorTypesIncludingInherited}GetBehaviorTypeByName(a){return this._behaviorsByName.get(a.toLowerCase())||null}GetBehaviorIndexByName(a){const b=this._behaviorNameToIndex.get(a.toLowerCase());return"undefined"==typeof b?-1:b}GetEffectList(){return this._effectList}HasEffects(){return this._plugin.HasEffects()}GetSolStack(){return this._solStack}GetCurrentSol(){return this._solStack.GetCurrentSol()}GetImageInfo(){return this._imageInfo}SetDefaultInstanceData(a){this._defaultInstanceData=a}GetDefaultInstanceData(){return this._defaultInstanceData}_SetDefaultLayerIndex(a){this._defaultLayerIndex=a}GetDefaultLayerIndex(){return this._defaultLayerIndex}GetAnimations(){return this._animations}GetAnimationCount(){return this._animations.length}GetFamilies(){return this._families}BelongsToFamily(a){return this._familiesSet.has(a)}GetFamilyMembers(){return this._familyMembers}FamilyHasMember(a){return this._familyMembersSet.has(a)}GetFamilyBehaviorOffset(a){return this._familyBehaviorMap[a]}GetFamilyInstanceVariableOffset(a){return this._familyInstVarMap[a]}GetAnimationByName(a){if(!this._animations)throw new Error("no animations");return this._animationsByName.get(a.toLowerCase())||null}GetAnimationBySID(a){if(!this._animations)throw new Error("no animations");return this._animationsBySid.get(a)||null}GetFirstAnimationFrame(){if(!this._animations)throw new Error("no animations");return this._animations[0].GetFrameAt(0)}GetDefaultInstanceSize(){if(this._animations){const a=this.GetFirstAnimationFrame().GetImageInfo();return[a.GetWidth(),a.GetHeight()]}return this._imageInfo?[this._imageInfo.GetWidth(),this._imageInfo.GetHeight()]:[100,100]}GetSingleGlobalInstance(){if(!this._plugin.IsSingleGlobal())throw new Error("not a single-global plugin");return this._instances[0]}GetInstances(){return this._instances}GetInstanceCount(){return this._instances.length}_AddInstance(a){this._instances.push(a)}_SetIIDsStale(){this._iidsStale=!0}_UpdateIIDs(){if(this._iidsStale&&!this._isFamily){const a=this._instances;let b=0;for(let c=a.length;ba.SaveToJson())};return this._savedData&&this._savedData.size&&(a["ex"]=C3.ToSuperJSON(this._savedData)),a}_LoadFromJson(a){this._savedData&&(this._savedData.clear(),this._savedData=null);const b=a["ex"];b&&(this._savedData=C3.FromSuperJSON(b));const c=this._instances,d=a["instances"];for(let b=0,e=Math.min(c.length,d.length);ba.IsWorldType())}}; + +// c3/objects/instance.js +"use strict";{let a=0;C3.Instance=class extends C3.DefendedBase{constructor(b){if(super(),this._runtime=b.runtime,this._objectType=b.objectType,this._plugin=this._objectType.GetPlugin(),this._mustPreDraw=this._plugin.MustPreDraw(),this._iid=0,this._uid=b.uid,this._puid=0,this._sequenceId=a++,this._isDestroyed=!1,this._instVarValues=[],this._instVarNames=null,this._behaviorInstances=this._objectType.GetBehaviorTypesIncludingInherited().map((a,b)=>C3.New(C3.BehaviorInstance,{runtime:this._runtime,behaviorType:a,instance:this,index:b})),this._worldInfo=null,this._timeScale=-1,this._sdkInst=null,this._savedData=null,this._unsavedData=null,this._hasTilemap=!1,this._isInContainer=this._objectType.IsInContainer(),this._siblings=this._isInContainer?[]:null,this._dispatcher=null,this._plugin.IsWorldType())if(this._worldInfo=C3.New(C3.WorldInfo,this,b.layer),b.worldData)this._worldInfo.Init(b.worldData);else{const[a,b]=this._objectType.GetDefaultInstanceSize();this._worldInfo.SetSize(a,b),this._worldInfo.GetInstanceEffectList().LoadDefaultEffectParameters()}b.instVarData?this._LoadInstanceVariableData(b.instVarData):this._LoadDefaultInstanceVariables()}Release(){for(const a of this._behaviorInstances)a.Release();C3.clearArray(this._behaviorInstances),this._sdkInst.Release(),this._sdkInst=null,this._savedData&&this._savedData.clear(),this._unsavedData&&this._unsavedData.clear(),this._siblings&&C3.clearArray(this._siblings),this._dispatcher&&(this._dispatcher.Release(),this._dispatcher=null),this._runtime=null,this._objectType=null,this._plugin=null,C3.clearArray(this._instVarValues),this._worldInfo&&(this._worldInfo.Release(),this._worldInfo=null)}_LoadInstanceVariableData(a){if(this._runtime.IsPreview()){this._instVarNames=[];for(const b of a)this._instVarNames.push(b[1])}for(const b of a)this._instVarValues.push(b[0])}_LoadDefaultInstanceVariables(){const a=[!1,0,""];for(let b=0,c=this._objectType.GetInstanceVariablesCount();ba||!isFinite(a))&&(a=0),this._timeScale=a}RestoreTimeScale(){this._timeScale=-1}MustPreDraw(){return this._mustPreDraw}Dispatcher(){return this._dispatcher||(this._dispatcher=C3.New(C3.Event.Dispatcher)),this._dispatcher}Draw(a){this._sdkInst.Draw(a)}OnCreate(a){this._sdkInst.OnCreate(a)}_SetHasTilemap(){this._hasTilemap=!0}HasTilemap(){return this._hasTilemap}GetCurrentImageInfo(){return this._sdkInst.GetCurrentImageInfo()}GetImagePoint(a){return this._sdkInst.GetImagePoint(a)}GetObjectClass(){return this._objectType}BelongsToObjectClass(a){return a.IsFamily()?a.FamilyHasMember(this.GetObjectClass()):this.GetObjectClass()===a}IsInContainer(){return this._isInContainer}_AddSibling(a){this._siblings.push(a)}GetSiblings(){return this._siblings}siblings(){return this._siblings}SetSiblingsSinglePicked(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol().SetSinglePicked(a)}_PushSiblingsToSolInstances(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol()._PushInstance(a)}_SetSiblingsToSolInstancesIndex(a){for(const b of this.siblings())b.GetObjectClass().GetCurrentSol()._GetOwnInstances()[a]=b}_PushSiblingsToSolElseInstances(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol()._PushElseInstance(a)}_SetSiblingsToSolElseInstancesIndex(a){for(const b of this.siblings())b.GetObjectClass().GetCurrentSol()._GetOwnElseInstances()[a]=b}GetPlugin(){return this._plugin}_SetIID(a){this._iid=a}GetIID(){return this._objectType._UpdateIIDs(),this._iid}GetUID(){return this._uid}_GetSequenceID(){return this._sequenceId}GetBehaviorInstances(){return this._behaviorInstances}GetBehaviorInstanceFromCtor(a){if(!a)return null;for(const b of this._behaviorInstances)if(b.GetBehavior()instanceof a)return b;return null}GetBehaviorSdkInstanceFromCtor(a){if(!a)return null;const b=this.GetBehaviorInstanceFromCtor(a);return b?b.GetSdkInstance():null}GetBehaviorIndexBySID(a){const b=this._behaviorInstances;for(let c=0,d=b.length;ca||a>=b.length)throw new RangeError("invalid instance variable");return b[a]}_GetInstanceVariableValueUnchecked(a){return this._instVarValues[a]}SetInstanceVariableValue(a,b){a|=0;const c=this._instVarValues;if(0>a||a>=c.length)throw new RangeError("invalid instance variable");const d=c[a];if("number"==typeof d)c[a]="number"==typeof b?b:parseFloat(b);else if("string"==typeof d)c[a]="string"==typeof b?b:b.toString();else throw new Error("unknown instance variable type")}GetSavedDataMap(){return this._savedData||(this._savedData=new Map),this._savedData}GetUnsavedDataMap(){return this._unsavedData||(this._unsavedData=new Map),this._unsavedData}_TriggerOnCreated(){this._runtime.Trigger(this.GetPlugin().constructor.Cnds.OnCreated,this)}_TriggerOnDestroyed(){this._runtime.Trigger(this.GetPlugin().constructor.Cnds.OnDestroyed,this)}_MarkDestroyed(){this._isDestroyed=!0}IsDestroyed(){return this._isDestroyed}_GetDebuggerProperties(){return this._sdkInst.GetDebuggerProperties()}SaveToJson(a){const b={};if(a?b["c3"]=!0:b["uid"]=this.GetUID(),this._savedData&&this._savedData.size&&(b["ex"]=C3.ToSuperJSON(this._savedData)),-1!==this.GetTimeScale()&&(b["mts"]=this.GetTimeScale()),0d||d>=this._instVarValues.length)continue;let e=b;null===e&&(e=NaN),this._instVarValues[d]=e}if(this._plugin.IsWorldType()){const c=a["w"],d=c["l"];if(this._worldInfo.GetLayer().GetSID()!==d){const a=this._worldInfo.GetLayer(),c=a.GetLayout().GetLayerBySID(d);c?(this._worldInfo._SetLayer(c),a._RemoveInstance(this,!0),c._AddInstance(this,!0),c._SetZIndicesStaleFrom(0),this._worldInfo.SetBboxChanged()):!b&&this._runtime.DestroyInstance(this)}this._worldInfo._LoadFromJson(c)}const e=a["behs"];if(e)for(const[a,b]of Object.entries(e)){const c=parseInt(a,10),d=this.GetBehaviorIndexBySID(c);0>d||d>=this._behaviorInstances.length||this._behaviorInstances[d].LoadFromJson(b)}const f=a["data"];f&&this._sdkInst.LoadFromJson(f)}}} + +// c3/objects/worldInfo.js +"use strict";{const a=C3.New(C3.Rect),b=C3.New(C3.Event,"bboxchange",!1);C3.WorldInfo=class extends C3.DefendedBase{constructor(a,b){super(),this._inst=a,this._objectClass=a.GetObjectClass(),this._runtime=a.GetRuntime(),this._layer=b,this._zIndex=-1,this._isVisible=!0,this._x=0,this._y=0,this._zElevation=0,this._w=0,this._h=0,this._a=0,this._sinA=0,this._cosA=1,this._ox=0,this._oy=0,this._bboxChanged=!0,this._boundingBox=new C3.Rect,this._boundingQuad=new C3.Quad,this._enableBboxChangeEvent=!1,this._isCollisionEnabled=!0,this._isCollisionCellChanged=!0,this._collisionCells=C3.New(C3.Rect,0,0,-1,-1),this._renderCells=C3.New(C3.Rect,0,0,-1,-1),this._sourceCollisionPoly=null,this._transformedCollisionPoly=C3.New(C3.CollisionPoly),this._polyWidth=-1,this._polyHeight=-1,this._polyAngle=0,this._solidFilterInclusive=!1,this._solidFilterTags=null,this._color=C3.New(C3.Color,1,1,1,1),this._colorPremultiplied=C3.New(C3.Color,1,1,1,1),this._hasDefaultColor=!0,this._blendMode=-1,this._srcBlend=0,this._destBlend=0,this._stateGroup=null,this._instanceEffectList=null,this._hasAnyActiveEffect=!1,this._inst.GetObjectClass().HasEffects()&&(this._instanceEffectList=C3.New(C3.InstanceEffectList,this._inst,this)),this.SetBlendMode(0)}Release(){this._stateGroup&&(this._runtime.GetWebGLRenderer().ReleaseStateGroup(this._stateGroup),this._stateGroup=null),this._sourceCollisionPoly=null,this._transformedCollisionPoly.Release(),this._transformedCollisionPoly=null,this._solidFilterTags&&(this._solidFilterTags.clear(),this._solidFilterTags=null),this._inst=null,this._objectClass=null,this._runtime=null,this._layer=null}Init(a){this.SetX(a[0]),this.SetY(a[1]),this.SetWidth(a[3]),this.SetHeight(a[4]),this.SetAngle(a[6]),this._color.setFromJSON(a[7]),this.SetOriginX(a[8]),this.SetOriginY(a[9]),this.SetBlendMode(a[10]),this._instanceEffectList&&this._instanceEffectList._LoadEffectParameters(a[12]),this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup()}GetInstance(){return this._inst}SetX(a){this._x=+a}OffsetX(a){this._x+=+a}GetX(){return this._x}SetY(a){this._y=+a}OffsetY(a){this._y+=+a}GetY(){return this._y}SetXY(a,b){this._x=+a,this._y=+b}OffsetXY(a,b){this._x+=+a,this._y+=+b}EqualsXY(a,b){return this._x===a&&this._y===b}SetZElevation(a){a=+a;this._zElevation===a||(this._zElevation=a,this._UpdateWebGLStateGroup())}GetZElevation(){return this._zElevation}SetWidth(a){this._w=+a}OffsetWidth(a){this._w+=+a}GetWidth(){return this._w}SetHeight(a){this._h=+a}OffsetHeight(a){this._h+=+a}GetHeight(){return this._h}SetSize(a,b){this._w=+a,this._h=+b}SetAngle(b){b=C3.clampAngle(+b);this._a===b||(this._a=b,this._sinA=Math.sin(b),this._cosA=Math.cos(b))}OffsetAngle(b){b=+b;0===b||this.SetAngle(this._a+b)}GetAngle(){return this._a}GetSinAngle(){return this._sinA}GetCosAngle(){return this._cosA}SetOriginX(a){this._ox=+a}OffsetOriginX(a){this._ox+=+a}GetOriginX(){return this._ox}SetOriginY(a){this._oy=+a}OffsetOriginY(a){this._oy+=+a}GetOriginY(){return this._oy}SetOpacity(a){a=C3.clamp(a,0,1);this._color.a===a||(this._color.a=a,this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}OffsetOpacity(a){if(0!==a){const b=this._color.a;this._color.a+=a,this._color.a===b||(this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}}GetOpacity(){return this._color.a}SetUnpremultipliedColor(a){this._color.equalsIgnoringAlpha(a)||(this._color.copyRgb(a),this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}SetUnpremultipliedColorRGB(a,c,d){const b=this._color;b.r===a&&b.g===c&&b.b===d||(b.r=a,b.g=c,b.b=d,this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}OffsetUnpremultipliedColorRGB(a,c,d){if(0!==a||0!==c||0!==d){const b=this._color,e=b.r,f=b.g,g=b.b;b.r+=a,b.g+=c,b.b+=d,b.r===e&&b.g===f&&b.b===g||(this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}}GetUnpremultipliedColor(){return this._color}_UpdatePremultipliedColor(){const a=this._color,b=this._colorPremultiplied;this._hasDefaultColor=a.equalsRgba(1,1,1,1),b.set(a),b.premultiply()}GetPremultipliedColor(){return this._colorPremultiplied}_UpdateWebGLStateGroup(){}GetWebGLStateGroup(){return this._stateGroup}HasDefaultColor(){return this._hasDefaultColor}SetBlendMode(a){if(this._blendMode!==a){this._blendMode=a;const b=this._runtime.GetWebGLRenderer();if(b){const c=b.GetBlendByIndex(a);this._srcBlend=c.srcBlend,this._destBlend=c.destBlend}this._UpdateWebGLStateGroup()}}GetBlendMode(){return this._blendMode}GetSrcBlend(){return this._srcBlend}GetDestBlend(){return this._destBlend}_SetLayer(a){this._layer=a}GetLayer(){return this._layer}GetLayout(){return this.GetLayer().GetLayout()}_SetZIndex(a){this._zIndex=0|a}GetZIndex(){return this._layer._UpdateZIndices(),this._zIndex}_GetLastCachedZIndex(){return this._zIndex}IsVisible(){return this._isVisible}SetVisible(a){this._isVisible=!!a}IsCollisionEnabled(){return this._isCollisionEnabled}SetCollisionEnabled(a){a=!!a;this._isCollisionEnabled===a||(this._isCollisionEnabled=a,a?this.SetBboxChanged():this._RemoveFromCollisionCells())}SetSolidCollisionFilter(a,b){if(this._solidFilterInclusive=!!a,this._solidFilterTags&&this._solidFilterTags.clear(),!b.trim())return void(this._solidFilterTags=null);this._solidFilterTags||(this._solidFilterTags=new Set);for(const c of b.split(" "))c&&this._solidFilterTags.add(c.toLowerCase())}IsSolidCollisionAllowed(a){const b=this._solidFilterInclusive,c=this._solidFilterTags;if(!a||!c)return!b;for(const d of c)if(a.has(d))return b;return!b}SetBboxChanged(){this._bboxChanged=!0,this._isCollisionCellChanged=!0,this._objectClass._SetAnyCollisionCellChanged(!0),this._runtime.UpdateRender(),this._layer.UsesRenderCells()&&(this._CalculateBbox(),this._UpdateRenderCell()),this._enableBboxChangeEvent&&this._inst.Dispatcher().dispatchEvent(b)}_CalculateBbox(){const a=this._boundingBox,b=this._boundingQuad,c=this._x,d=this._y,e=this._w,f=this._h;a.setWH(c-this._ox*e,d-this._oy*f,e,f),0===this._a?b.setFromRect(a):(a.offset(-c,-d),b.setFromRotatedRectPrecalc(a,this._sinA,this._cosA),b.offset(c,d),b.getBoundingBox(a)),a.normalize(),this._bboxChanged=!1}_UpdateBbox(){this._bboxChanged&&this._CalculateBbox()}GetBoundingBox(){return this._UpdateBbox(),this._boundingBox}GetBoundingQuad(){return this._UpdateBbox(),this._boundingQuad}OverwriteBoundingBox(a){this._boundingBox.copy(a),this._boundingQuad.setFromRect(this._boundingBox),this._bboxChanged=!1,this._UpdateCollisionCell(),this._UpdateRenderCell()}SetBboxChangeEventEnabled(a){this._enableBboxChangeEvent=!!a}IsBboxChangeEventEnabled(){return this._enableBboxChangeEvent}SetSourceCollisionPoly(a){this._sourceCollisionPoly=a,this._polyWidth=-1,this._polyHeight=-1,this._polyAngle=0}GetSourceCollisionPoly(){return this._sourceCollisionPoly}HasOwnCollisionPoly(){return!!this._sourceCollisionPoly}GetTransformedCollisionPoly(){return this._GetCustomTransformedCollisionPolyPrecalc(this.GetWidth(),this.GetHeight(),this.GetAngle(),this.GetSinAngle(),this.GetCosAngle())}GetCustomTransformedCollisionPoly(b,c,d){let a=0,e=1;return 0!==d&&(a=Math.sin(d),e=Math.cos(d)),this._GetCustomTransformedCollisionPolyPrecalc(b,c,d,a,e)}_GetCustomTransformedCollisionPolyPrecalc(b,c,d,a,e){return this._polyWidth===b&&this._polyHeight===c&&this._polyAngle===d?this._transformedCollisionPoly:(this._sourceCollisionPoly?(this._transformedCollisionPoly.copy(this._sourceCollisionPoly),this._transformedCollisionPoly.transformPrecalc(b,c,a,e)):this._transformedCollisionPoly.setFromQuad(this.GetBoundingQuad(),-this.GetX(),-this.GetY()),this._polyWidth=b,this._polyHeight=c,this._polyAngle=d,this._transformedCollisionPoly)}HasTilemap(){return this._inst.HasTilemap()}ContainsPoint(a,b){return!!this.GetBoundingBox().containsPoint(a,b)&&!!this.GetBoundingQuad().containsPoint(a,b)&&(this.HasTilemap()?this._inst.GetSdkInstance().TestPointOverlapTile(a,b):!this.HasOwnCollisionPoly()||this.GetTransformedCollisionPoly().containsPoint(a-this.GetX(),b-this.GetY()))}_UpdateCollisionCell(){if(this._isCollisionCellChanged&&this._isCollisionEnabled){const b=this.GetBoundingBox(),c=this._objectClass._GetCollisionCellGrid(),d=this._collisionCells;if(a.set(c.XToCell(b.getLeft()),c.YToCell(b.getTop()),c.XToCell(b.getRight()),c.YToCell(b.getBottom())),!d.equals(a)){const b=this._inst;d.getRight()=this._renderCells.getLeft()}GetRenderCellRange(){return this._renderCells}GetInstanceEffectList(){return this._instanceEffectList}_SetHasAnyActiveEffect(a){this._hasAnyActiveEffect=!!a}HasAnyActiveEffect(){return this._hasAnyActiveEffect}SaveGeometryState(){this._UpdateBbox();const a=this._boundingBox,b=this._boundingQuad;return[this._x,this._y,this._w,this._h,this._a,this._ox,this._oy,a.getLeft(),a.getTop(),a.getRight(),a.getBottom(),b.getTlx(),b.getTly(),b.getTrx(),b.getTry(),b.getBrx(),b.getBry(),b.getBlx(),b.getBly()]}RestoreGeometryState(a){this._x=a[0],this._y=a[1],this._w=a[2],this._h=a[3],this.SetAngle(a[4]),this._ox=a[5],this._oy=a[6],this._boundingBox.set(a[7],a[8],a[9],a[10]),this._boundingQuad.set(a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18]),this._bboxChanged=!1}_SaveToJson(){const a={"x":this.GetX(),"y":this.GetY(),"w":this.GetWidth(),"h":this.GetHeight(),"l":this.GetLayer().GetSID(),"zi":this.GetZIndex()};return 0!==this.GetZElevation()&&(a["ze"]=this.GetZElevation()),0!==this.GetAngle()&&(a["a"]=this.GetAngle()),1!==this.GetOpacity()&&(a["o"]=this.GetOpacity()),.5!==this.GetOriginX()&&(a["oX"]=this.GetOriginX()),.5!==this.GetOriginY()&&(a["oY"]=this.GetOriginY()),0!==this.GetBlendMode()&&(a["bm"]=this.GetBlendMode()),this.IsVisible()||(a["v"]=this.IsVisible()),this.IsCollisionEnabled()||(a["ce"]=this.IsCollisionEnabled()),this.IsBboxChangeEventEnabled()&&(a["be"]=this.IsBboxChangeEventEnabled()),this._instanceEffectList&&(a["fx"]=this._instanceEffectList._SaveToJson()),this._solidFilterInclusive&&(a["sfi"]=this._solidFilterInclusive),this._solidFilterTags&&(a["sft"]=[...this._solidFilterTags].join(" ")),a}_LoadFromJson(a){this.SetX(a["x"]),this.SetY(a["y"]),this.SetWidth(a["w"]),this.SetHeight(a["h"]),this._SetZIndex(a["zi"]),this.SetZElevation(a.hasOwnProperty("ze")?a["ze"]:0),this.SetAngle(a.hasOwnProperty("a")?a["a"]:0),this.SetOpacity(a.hasOwnProperty("o")?a["o"]:1),this.SetOriginX(a.hasOwnProperty("oX")?a["oX"]:.5),this.SetOriginY(a.hasOwnProperty("oY")?a["oY"]:.5),this.SetBlendMode(a.hasOwnProperty("bm")?a["bm"]:0),this.SetVisible(!a.hasOwnProperty("v")||a["v"]),this.SetCollisionEnabled(!a.hasOwnProperty("ce")||a["ce"]),this.SetBboxChangeEventEnabled(!!a.hasOwnProperty("be")&&a["be"]),this.SetSolidCollisionFilter(!!a.hasOwnProperty("sfi")&&a["sfi"],a.hasOwnProperty("sft")?a["sft"]:""),this._instanceEffectList&&a.hasOwnProperty("fx")&&this._instanceEffectList._LoadFromJson(a["fx"]),this.SetBboxChanged()}}} + +// c3/objects/behaviorType.js +"use strict";C3.BehaviorType=class extends C3.DefendedBase{constructor(a,b){super();const c=a.GetRuntime(),d=c.GetPluginManager(),e=c.GetObjectReference(b[1]);d.HasBehaviorByConstructorFunction(e)||d.CreateBehavior(b),this._runtime=c,this._objectClass=a,this._behavior=d.GetBehaviorByConstructorFunction(e),this._sdkType=null,this._instSdkCtor=e.Instance,this._sid=b[2],this._name=b[0],this._sdkType=C3.New(e.Type,this);this.OnCreate()}static Create(a,b){return C3.New(C3.BehaviorType,a,b)}Release(){this._runtime=null,this._behavior=null,this._sdkType.Release(),this._sdkType=null,this._instSdkCtor=null}GetSdkType(){return this._sdkType}OnCreate(){this._sdkType.OnCreate()}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetBehavior(){return this._behavior}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetSID(){return this._sid}}; + +// c3/objects/behaviorInstance.js +"use strict";C3.BehaviorInstance=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._behaviorType=a.behaviorType,this._behavior=this._behaviorType.GetBehavior(),this._inst=a.instance,this._index=a.index,this._sdkInst=null,this._behavior._AddInstance(this._inst)}Release(){this._behavior._RemoveInstance(this._inst),this._sdkInst.Release(),this._sdkInst=null,this._runtime=null,this._behaviorType=null,this._behavior=null,this._inst=null}_CreateSdkInstance(a){if(this._sdkInst)throw new Error("already got sdk instance");this._sdkInst=C3.New(this._behaviorType.GetInstanceSdkCtor(),this,a)}GetSdkInstance(){return this._sdkInst}GetObjectInstance(){return this._inst}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetBehavior(){return this._behavior}_GetIndex(){return this._index}PostCreate(){this._sdkInst.PostCreate()}OnSpriteFrameChanged(a,b){this._sdkInst.OnSpriteFrameChanged(a,b)}_GetDebuggerProperties(){return this._sdkInst.GetDebuggerProperties()}SaveToJson(){return this._sdkInst.SaveToJson()}LoadFromJson(a){return this._sdkInst.LoadFromJson(a)}static SortByTickSequence(c,a){const b=c.GetObjectInstance(),d=a.GetObjectInstance(),e=b.GetObjectClass().GetIndex(),f=d.GetObjectClass().GetIndex();if(e!==f)return e-f;const g=b._GetSequenceID(),h=d._GetSequenceID();return g===h?c.GetBehaviorInstance()._GetIndex()-a.GetBehaviorInstance()._GetIndex():g-h}}; + +// c3/objects/effectList.js +"use strict";C3.EffectList=class extends C3.DefendedBase{constructor(a,b){super(),this._owner=a,this._allEffectTypes=[],this._activeEffectTypes=[],this._effectTypesByName=new Map,this._effectParams=[],this._preservesOpaqueness=!0;for(const c of b){const a=C3.New(C3.EffectType,this,c,this._allEffectTypes.length);this._allEffectTypes.push(a),this._effectTypesByName.set(a.GetName().toLowerCase(),a),3<=c.length&&this._effectParams.push(this._LoadSingleEffectParameters(c[2]))}this.GetRuntime()._AddEffectList(this)}Release(){C3.clearArray(this._allEffectTypes),C3.clearArray(this._activeEffectTypes),this._effectTypesByName.clear(),C3.clearArray(this._effectParams),this._owner=null}PrependEffectTypes(a){if(a.length){this._allEffectTypes=a.concat(this._allEffectTypes);for(const b of a)this._effectTypesByName.set(b.GetName().toLowerCase(),b);for(let a=0,b=this._allEffectTypes.length;a({"name":a.GetName(),"active":a.IsActive(),"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[a.GetIndex()])}))}LoadFromJson(a){for(const b of a){const a=this.GetEffectTypeByName(b["name"]);a&&(a.SetActive(b["active"]),this._effectParams[a.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(b["params"]))}this.UpdateActiveEffects()}}; + +// c3/objects/effectType.js +"use strict";C3.EffectType=class extends C3.DefendedBase{constructor(a,b,c){super(),this._effectList=a,this._id=b[0],this._name=b[1],this._index=c,this._shaderProgram=null,this._isActive=!0}Release(){this._effectList=null,this._shaderProgram=null}Clone(a){const b=C3.New(C3.EffectType,a,[this._id,this._name],-1);return b._shaderProgram=this._shaderProgram,b._isActive=this._isActive,b}_InitRenderer(a){const b=a.GetShaderProgramByName(this._id);if(!b)throw new Error("failed to find shader program '"+this._id+"'");this._shaderProgram=b}GetEffectList(){return this._effectList}GetName(){return this._name}_SetIndex(a){this._index=a}GetIndex(){return this._index}GetOwner(){return this._effectList.GetOwner()}GetRuntime(){return this._effectList.GetRuntime()}SetActive(b){this._isActive=!!b}IsActive(){return this._isActive}GetShaderProgram(){return this._shaderProgram}GetDefaultParameterValues(){const a=[];for(let b=0,c=this._shaderProgram.GetParameterCount();ba.GetShaderProgram().UsesDest())}IsEffectIndexActive(a){return this._activeEffectFlags[a]}SetEffectIndexActive(a,b){this._activeEffectFlags[a]=!!b}_SaveToJson(){return this._effectList.GetAllEffectTypes().map((a)=>({"name":a.GetName(),"active":this._activeEffectFlags[a.GetIndex()],"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[a.GetIndex()])}))}_LoadFromJson(a){for(const b of a){const a=this._effectList.GetEffectTypeByName(b["name"]);a&&(this._activeEffectFlags[a.GetIndex()]=b["active"],this._effectParams[a.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(b["params"]))}this.UpdateActiveEffects()}}; + +// c3/collisions/collisionEngine.js +"use strict";{const a=[],b=[],c=[],d=C3.New(C3.CollisionPoly),e=C3.New(C3.CollisionPoly),f=C3.New(C3.Quad),g=C3.New(C3.Rect),h=C3.New(C3.Rect);C3.CollisionEngine=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._registeredCollisions=[],this._collisionCheckCount=0,this._collisionCheckSec=0,this._polyCheckCount=0,this._polyCheckSec=0}Release(){this._runtime=null}_Update1sStats(){this._collisionCheckSec=this._collisionCheckCount,this._collisionCheckCount=0,this._polyCheckSec=this._polyCheckCount,this._polyCheckCount=0}Get1secCollisionChecks(){return this._collisionCheckSec}Get1secPolyChecks(){return this._polyCheckSec}RegisterCollision(c,a){const b=c.GetWorldInfo(),d=a.GetWorldInfo();b&&d&&b.IsCollisionEnabled()&&d.IsCollisionEnabled()&&this._registeredCollisions.push([c,a])}AddRegisteredCollisionCandidates(c,d,e){for(const[f,a]of this._registeredCollisions){let b=null;if(c===f)b=a;else if(c===a)b=f;else continue;b.BelongsToObjectClass(d)&&!e.includes(b)&&e.push(b)}}CheckRegisteredCollision(e,a){if(!this._registeredCollisions.length)return!1;for(const[b,c]of this._registeredCollisions)if(e===b&&a===c||e===c&&a===b)return!0;return!1}ClearRegisteredCollisions(){C3.clearArray(this._registeredCollisions)}TestOverlap(c,d){if(!c||!d||c===d)return!1;const e=c.GetWorldInfo(),f=d.GetWorldInfo();if(!e.IsCollisionEnabled()||!f.IsCollisionEnabled())return!1;this._collisionCheckCount++;const g=e.GetLayer(),h=f.GetLayer(),i=g!==h&&!g._IsCollisionCompatibleWith(h);return i?this._TestOverlap_DifferentLayers(e,f):this._TestOverlap_SameLayers(e,f)}_TestOverlap_SameLayers(a,b){if(!a.GetBoundingBox().intersectsRect(b.GetBoundingBox()))return!1;if(this._polyCheckCount++,!a.GetBoundingQuad().intersectsQuad(b.GetBoundingQuad()))return!1;if(a.HasTilemap()&&b.HasTilemap())return!1;if(a.HasTilemap())return this.TestTilemapOverlap(a,b);if(b.HasTilemap())return this.TestTilemapOverlap(b,a);if(!a.HasOwnCollisionPoly()&&!b.HasOwnCollisionPoly())return!0;const c=a.GetTransformedCollisionPoly(),d=b.GetTransformedCollisionPoly();return c.intersectsPoly(d,b.GetX()-a.GetX(),b.GetY()-a.GetY())}_TestOverlap_DifferentLayers(a,b){const c=a.GetLayer(),f=b.GetLayer();d.copy(a.GetTransformedCollisionPoly()),e.copy(b.GetTransformedCollisionPoly());const g=d.pointsArr();for(let d=0,e=g.length;dd;++d){const i=2*d-1;if(e.SetXY(f+b*k*i,g+c*k*i),e.SetBboxChanged(),!this.TestOverlap(a,h))if(h=this.TestOverlapSolid(a),h)j=h;else return j&&this.PushInFractional(a,b*i,c*i,j,16),!0}return e.SetXY(f,g),e.SetBboxChanged(),!1}PushInFractional(a,b,c,d,e){let f=2,g=!1,h=!1;const i=a.GetWorldInfo();let j=i.GetX(),k=i.GetY();for(;f<=e;){const e=1/f;f*=2,i.OffsetXY(b*e*(g?1:-1),c*e*(g?1:-1)),i.SetBboxChanged(),this.TestOverlap(a,d)?(g=!0,h=!0):(g=!1,h=!1,j=i.GetX(),k=i.GetY())}h&&(i.SetXY(j,k),i.SetBboxChanged())}PushOutSolidNearest(a,b=100){var c=Math.floor;let d=0;const e=a.GetWorldInfo(),f=e.GetX(),g=e.GetY();let h=0,i=this.TestOverlapSolid(a);if(!i)return!0;for(;d<=b;){let b=0,j=0;if(0==h?(b=0,j=-1,d++):1==h?(b=1,j=-1):2==h?(b=1,j=0):3==h?(b=1,j=1):4==h?(b=0,j=1):5==h?(b=-1,j=1):6==h?(b=-1,j=0):7==h?(b=-1,j=-1):void 0,h=(h+1)%8,e.SetXY(c(f+b*d),c(g+j*d)),e.SetBboxChanged(),!this.TestOverlap(a,i)&&(i=this.TestOverlapSolid(a),!i))return!0}return e.SetXY(f,g),e.SetBboxChanged(),!1}CalculateBounceAngle(a,b,c,d){var e=Math.sin,f=Math.cos,g=Math.PI;const h=a.GetWorldInfo(),j=h.GetX(),k=h.GetY(),l=Math.max(10,C3.distanceTo(b,c,j,k)),m=C3.angleTo(b,c,j,k),n=d||this.TestOverlapSolid(a);if(!n)return C3.clampAngle(m+g);let o=n,p=0,q=0;const r=C3.toRadians(5);let s;for(s=1;36>s;++s){const g=m-s*r;if(h.SetXY(b+f(g)*l,c+e(g)*l),h.SetBboxChanged(),!this.TestOverlap(a,o)&&(o=d?null:this.TestOverlapSolid(a),!o)){p=g;break}}for(36===s&&(p=C3.clampAngle(m+g)),o=n,s=1;36>s;++s){const g=m+s*r;if(h.SetXY(b+f(g)*l,c+e(g)*l),h.SetBboxChanged(),!this.TestOverlap(a,o)&&(o=d?null:this.TestOverlapSolid(a),!o)){q=g;break}}if(36===s&&(q=C3.clampAngle(m+g)),h.SetXY(j,k),h.SetBboxChanged(),q===p)return q;const i=C3.angleDiff(q,p)/2;let t=C3.angleClockwise(q,p)?C3.clampAngle(p+i+g):C3.clampAngle(q+i);const u=f(m),v=e(m),w=f(t),x=e(t),y=u*w+v*x;return C3.angleTo(0,0,u-2*y*w,v-2*y*x)}TestSegmentOverlap(a,b,c,d,e){var f=Math.min,h=Math.max;if(!e)return!1;const i=e.GetWorldInfo();if(!i.IsCollisionEnabled())return!1;if(this._collisionCheckCount++,g.set(f(a,c),f(b,d),h(a,c),h(b,d)),!i.GetBoundingBox().intersectsRect(g))return!1;if(e.HasTilemap())return this._TestSegmentOverlapTilemap(a,b,c,d,e,i);if(this._polyCheckCount++,!i.GetBoundingQuad().intersectsSegment(a,b,c,d))return!1;if(!i.HasOwnCollisionPoly())return!0;const j=i.GetTransformedCollisionPoly();return j.intersectsSegment(i.GetX(),i.GetY(),a,b,c,d)}_TestSegmentOverlapTilemap(a,d,e,j,c,i){const k=i.GetX(),l=i.GetY(),m=c.GetSdkInstance(),n=b;h.set(a,d,e,j),h.normalize(),m.GetCollisionRectCandidates(h,n);for(let b=0,h=n.length;bthis._loadingProgress=a.progress,this._webglPercentText=null,this._loadingLogoAsset=null,this._splashTextures={logo:null,powered:null,website:null},this._splashFrameNumber=0,this._splashFadeInFinishTime=0,this._splashFadeOutStartTime=0,this._splashState="fade-in",this._splashDoneResolve=null,this._splashDonePromise=new Promise((a)=>this._splashDoneResolve=a)}_SetGPUPowerPreference(a){this._gpuPreference=a}async CreateCanvas(a){this._canvas=a["canvas"],this._canvas.addEventListener("webglcontextlost",(a)=>this._OnWebGLContextLost(a)),this._canvas.addEventListener("webglcontextrestored",(a)=>this._OnWebGLContextRestored(a)),this._webglRenderer=C3.New(C3.Gfx.WebGLRenderer,this._canvas,{powerPreference:this._gpuPreference,enableGpuProfiling:!0,alpha:!0}),await this._webglRenderer.InitState(),this._webglRenderer.SupportsGPUProfiling()||(this._gpuLastUtilisation=NaN),this._runtime.AddDOMComponentMessageHandler("runtime","window-resize",(a)=>this._OnWindowResize(a)),this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenchange",(a)=>this._OnFullscreenChange(a)),this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenerror",(a)=>this._OnFullscreenError(a)),this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["windowInnerWidth"],a["windowInnerHeight"],!0),this._shaderData=a["shaders"]||self["C3_Shaders"],await this._LoadShaderPrograms();let b=!1;for(const c of this._runtime._GetAllEffectLists()){for(const a of c.GetAllEffectTypes())a._InitRenderer(this._webglRenderer),a.GetShaderProgram().UsesDest()&&(b=!0);c.UpdateActiveEffects()}this._runtime._SetUsesAnyBackgroundBlending(b),this._webglRenderer.SupportsGPUProfiling()&&(this._gpuFrameTimingsBuffer=C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer))}async _LoadShaderPrograms(){if(this._shaderData){const a=[];for(const[b,c]of Object.entries(this._shaderData))a.push(this._webglRenderer.CreateShaderProgram(c,C3.Gfx.WebGLShaderProgram.GetDefaultVertexShaderSource(),b));await Promise.all(a),this._webglRenderer.ResetLastProgram(),this._webglRenderer.SetTextureFillMode()}}Release(){this._runtime=null,this._webglRenderer=null,this._canvas=null}_OnWindowResize(a){this._runtime.IsInWorker()&&(self.devicePixelRatio=a["devicePixelRatio"]),this.SetSize(a["innerWidth"],a["innerHeight"]),this._runtime.UpdateRender()}_OnFullscreenChange(a){this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["innerWidth"],a["innerHeight"],!0),this._runtime.UpdateRender()}_OnFullscreenError(a){this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["innerWidth"],a["innerHeight"],!0),this._runtime.UpdateRender()}SetSize(a,b,c=!1){var d=Math.floor;if(a=d(a),b=d(b),0>=a||0>=b)throw new Error("invalid size");if(this._windowInnerWidth!==a||this._windowInnerHeight!==b||c){this._windowInnerWidth=a,this._windowInnerHeight=b;const c=this.GetCurrentFullscreenMode();"letterbox-scale"===c?this._CalculateLetterboxScale(a,b):"letterbox-integer-scale"===c?this._CalculateLetterboxIntegerScale(a,b):"off"===c?this._CalculateFixedSizeCanvas(a,b):this._CalculateFullsizeCanvas(a,b),this._UpdateFullscreenScalingQuality(c),this._canvas.width=this._canvasDeviceWidth,this._canvas.height=this._canvasDeviceHeight,this._runtime.PostComponentMessageToDOM("canvas","update-size",{"marginLeft":this._canvasCssOffsetX,"marginTop":this._canvasCssOffsetY,"styleWidth":this._canvasCssWidth,"styleHeight":this._canvasCssHeight}),this._webglRenderer.SetSize(this._canvasDeviceWidth,this._canvasDeviceHeight,!0)}}_CalculateLetterboxScale(a,b){var c=Math.round,d=Math.floor;const e=self.devicePixelRatio,f=this._runtime.GetOriginalViewportWidth(),g=this._runtime.GetOriginalViewportHeight(),h=f/g;if(a/b>h){this._canvasCssWidth=c(b*h),this._canvasCssHeight=b,this._canvasCssOffsetX=d((a-this._canvasCssWidth)/2),this._canvasCssOffsetY=0}else{this._canvasCssWidth=a,this._canvasCssHeight=c(a/h),this._canvasCssOffsetX=0,this._canvasCssOffsetY=d((b-this._canvasCssHeight)/2)}this._canvasDeviceWidth=c(this._canvasCssWidth*e),this._canvasDeviceHeight=c(this._canvasCssHeight*e),this._runtime.SetViewportSize(f,g)}_CalculateLetterboxIntegerScale(a,b){var c=Math.max,d=Math.round,e=Math.floor;const f=self.devicePixelRatio;1!==f&&(a+=1,b+=1);const g=this._runtime.GetOriginalViewportWidth(),h=this._runtime.GetOriginalViewportHeight(),i=g/h,j=a/b;let k;if(j>i){const a=b*i;k=a*f/g}else{const b=a/i;k=b*f/h}1k&&(k=1/Math.ceil(1/k)),this._canvasDeviceWidth=d(g*k),this._canvasDeviceHeight=d(h*k),this._canvasCssWidth=this._canvasDeviceWidth/f,this._canvasCssHeight=this._canvasDeviceHeight/f,this._canvasCssOffsetX=c(e((a-this._canvasCssWidth)/2),0),this._canvasCssOffsetY=c(e((b-this._canvasCssHeight)/2),0),this._runtime.SetViewportSize(g,h)}_CalculateFullsizeCanvas(a,b){var c=Math.round;const d=self.devicePixelRatio;this._canvasCssWidth=a,this._canvasCssHeight=b,this._canvasDeviceWidth=c(this._canvasCssWidth*d),this._canvasDeviceHeight=c(this._canvasCssHeight*d),this._canvasCssOffsetX=0,this._canvasCssOffsetY=0;const e=this.GetDisplayScale();this._runtime.SetViewportSize(this._canvasCssWidth/e,this._canvasCssHeight/e)}_CalculateFixedSizeCanvas(a,b){var c=Math.round,d=Math.floor;const e=self.devicePixelRatio;this._canvasCssWidth=this._runtime.GetViewportWidth(),this._canvasCssHeight=this._runtime.GetViewportHeight(),this._canvasDeviceWidth=c(this._canvasCssWidth*e),this._canvasDeviceHeight=c(this._canvasCssHeight*e),this.IsDocumentFullscreen()?(this._canvasCssOffsetX=d((a-this._canvasCssWidth)/2),this._canvasCssOffsetY=d((b-this._canvasCssHeight)/2)):(this._canvasCssOffsetX=0,this._canvasCssOffsetY=0),this._runtime.SetViewportSize(this._runtime.GetViewportWidth(),this._runtime.GetViewportHeight())}_UpdateFullscreenScalingQuality(a){if("high"===this._wantFullscreenScalingQuality)this._drawWidth=this._canvasDeviceWidth,this._drawHeight=this._canvasDeviceHeight,this._fullscreenScalingQuality="high";else{let b,c;if("off"===this.GetCurrentFullscreenMode()?(b=this._runtime.GetViewportWidth(),c=this._runtime.GetViewportHeight()):(b=this._runtime.GetOriginalViewportWidth(),c=this._runtime.GetOriginalViewportHeight()),this._canvasDeviceWidtha&&(this._drawHeight=this._drawWidth/d)}else if("scale-outer"===a){const a=b/c,d=this._windowInnerWidth/this._windowInnerHeight;d>a?this._drawWidth=this._drawHeight*d:dd||"scale-inner"===a&&eb.IsCompatibleWithOptions(a));let d;return-1===c?d=this._webglRenderer.CreateRenderTarget(a):(d=b[c],b.splice(c,1)),this._usedAdditionalRenderTargets.add(d),d}ReleaseAdditionalRenderTarget(a){if(!this._usedAdditionalRenderTargets.has(a))throw new Error("render target not in use");this._usedAdditionalRenderTargets.delete(a),this._availableAdditionalRenderTargets.push(a)}*activeLayersGpuProfiles(){for(const a of this._runtime.GetLayoutManager().runningLayouts())for(const b of a.GetLayers()){const a=this._layersGpuProfile.get(b);a&&(yield a)}}GetLayerTimingsBuffer(a){if(!this._webglRenderer.SupportsGPUProfiling())return null;let b=this._layersGpuProfile.get(a);return b||(b={name:a.GetName(),timingsBuffer:C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer),curUtilisation:0,lastUtilisation:0},this._layersGpuProfile.set(a,b)),b.timingsBuffer}_Update1sFrameRange(){if(this._webglRenderer.SupportsGPUProfiling()&&0===this._gpuTimeEndFrame){this._gpuTimeEndFrame=this._webglRenderer.GetFrameNumber(),this._gpuCurUtilisation=NaN;for(const a of this.activeLayersGpuProfiles())a.curUtilisation=NaN}}_UpdateTick(){var a=Math.min;if(this._webglRenderer.SupportsGPUProfiling()&&isNaN(this._gpuCurUtilisation)&&(this._gpuCurUtilisation=this._gpuFrameTimingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame),!isNaN(this._gpuCurUtilisation))){if(this._runtime.IsDebug())for(const a of this.activeLayersGpuProfiles())if(a.curUtilisation=a.timingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame),isNaN(a.curUtilisation))return;if(this._gpuFrameTimingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame),this._gpuLastUtilisation=a(this._gpuCurUtilisation,1),this._runtime.IsDebug()){for(const b of this.activeLayersGpuProfiles())b.timingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame),b.lastUtilisation=a(b.curUtilisation,1);C3Debugger.UpdateGPUProfile(this._gpuLastUtilisation,[...this.activeLayersGpuProfiles()])}this._gpuTimeStartFrame=this._gpuTimeEndFrame,this._gpuTimeEndFrame=0}}GetGPUFrameTimingsBuffer(){return this._gpuFrameTimingsBuffer}GetGPUUtilisation(){return this._gpuLastUtilisation}SnapshotCanvas(a,b){return(this._snapshotFormat=a,this._snapshotQuality=b,this._snapshotPromise)?this._snapshotPromise:(this._snapshotPromise=new Promise((a)=>{this._snapshotResolve=a}),this._snapshotPromise)}_MaybeTakeSnapshot(){this._snapshotFormat&&(C3.CanvasToBlob(this._canvas,this._snapshotFormat,this._snapshotQuality).then((a)=>{this._snapshotUrl=URL.createObjectURL(a),this._snapshotPromise=null,this._snapshotResolve(this._snapshotUrl)}),this._snapshotFormat="",this._snapshotQuality=1)}GetCanvasSnapshotUrl(){return this._snapshotUrl}InitLoadingScreen(a){if(2===a)this._webglPercentText=C3.New(C3.Gfx.WebGLText,this._webglRenderer),this._webglPercentText.SetIsAsync(!1),this._webglPercentText.SetFontName("Arial"),this._webglPercentText.SetFontSize(16),this._webglPercentText.SetHorizontalAlignment("center"),this._webglPercentText.SetVerticalAlignment("center"),this._webglPercentText.SetSize(300,200);else if(0===a){const a=this._runtime.GetAssetManager();let b;if(this._runtime.IsPreview()){if(!a._HasLocalURLBlob("loading-logo.png"))return;b=a.GetLocalUrlAsBlobUrl("loading-logo.png")}else b=a.GetIconsSubfolder()+"loading-logo.png";this._loadingLogoAsset=a.LoadImage({url:b}),this._loadingLogoAsset.LoadStaticTexture(this._webglRenderer).catch(()=>console.warn(`[C3 runtime] Failed to load 'loading-logo.png' for loading screen. Check the project has an icon with that name.`))}else 4===a&&(this._LoadSvgSplashImage("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxNzAwLjc5MDA0cHgiIGhlaWdodD0iMTcwMC43OTAwNHB4IiB2aWV3Qm94PSIyODcgMzE3IDExMjUgMTEyNSINCgkgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTcwMC43OTAwNCAxNzAwLjc5MDA0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJsb2dvIj4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0ZGRkZGRiIgZD0iTTM1NC45Nzc1NCwxMTk1LjYyMzA1DQoJCQkJYzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NjI5LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOGwtNC45MzI2Miw4LjU0MTk5DQoJCQkJYy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNjU2LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMzMiwwLDUuOTYxOTEtMC40NDMzNiw4LjcyNjU2LTEuMjY4NTVjNi4yOTQ5Mi0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTczOCw2LjUwMDk4bDQuOTMxNjQsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM4NDgsNS43MzQzOGMtOS4wMDM5MSw1LjYwMTU2LTE5LjYzMTg0LDguODM3ODktMzEuMDE2Niw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzI5Ni4xNTgyLDEyMjEuOTU3MDMsMzIyLjQ5MjE5LDExOTUuNjIzMDUsMzU0Ljk3NzU0LDExOTUuNjIzMDUNCgkJCQlMMzU0Ljk3NzU0LDExOTUuNjIzMDV6IE03MDMuMjE0ODQsMTI1OS4xNzU3OGMtMTQuNTU5NTctOS44MTczOC0yMC4yMDMxMy0yMC4wMzIyMy0yMC4yMDMxMy0zMy4wODAwOA0KCQkJCWMwLTE4LjQ4OTI2LDE1LjcxNDg0LTI5Ljc2MzY3LDM4LjI2NjYtMjkuNzYzNjdjOS42NTcyMywwLDE4LjcyMTY4LDIuNTQyOTcsMjYuNTU5NTcsNi45OTQxNA0KCQkJCWMyLjA0OTgsMS4xNjQwNiwyLjc2MTcyLDMuNzgzMiwxLjU4MzAxLDUuODI0MjJsLTMuNDE3OTcsNS45MTk5MmMtMy4yNDcwNyw1LjYyNDAyLTkuOTA4Miw4LjMzMTA1LTE2LjE1MzMyLDYuNTQ4ODMNCgkJCQljLTIuNzIzNjMtMC43NzYzNy01LjU5ODYzLTEuMTkyMzgtOC41NzEyOS0xLjE5MjM4Yy0xMC40OTAyMywwLTExLjU5ODYzLDkuNTc2MTctNC44NTc0MiwxNC4xMjMwNWwyMy42ODY1MiwxNS45NzY1Ng0KCQkJCWM5Ljk5MDIzLDYuNzM4MjgsMTUuODk1NTEsMTcuMDY2NDEsMTUuODk1NTEsMjguNzE4NzVjMCwxOC43ODYxMy0xNS4wMDY4NCwzMy4zMDc2Mi0zOC4yNjc1OCwzMy4zMDc2Mg0KCQkJCWMtOS41MjI0NiwwLTE4LjU4Nzg5LTEuOTU3MDMtMjYuODE1NDMtNS40OTAyM2MtNy43ODEyNS0zLjMzOTg0LTEwLjkzMzU5LTEyLjc4MjIzLTYuNjk3MjctMjAuMTE4MTZsMy40ODczLTYuMDQxOTkNCgkJCQljMS4yMTM4Ny0yLjA5OTYxLDMuOTMxNjQtMi43NTk3Nyw1Ljk3NDYxLTEuNDU2MDVjNi44NTkzOCw0LjM4MjgxLDE2LjQ5MDIzLDcuNTk0NzMsMjQuNzU4NzksNy41OTQ3Mw0KCQkJCWMxMC41NDU5LDAsMTEuMzI4MTMtOS45NTg5OCwzLjc2NzU4LTE1LjA1NzYyTDcwMy4yMTQ4NCwxMjU5LjE3NTc4TDcwMy4yMTQ4NCwxMjU5LjE3NTc4eiBNOTg0LjYzMDg2LDEyMDIuMDAwOTgNCgkJCQljMC0yLjM0NzY2LDEuOTAzMzItNC4yNTE5NSw0LjI1MTk1LTQuMjUxOTVoOS45MjE4OGM3LjgyNzE1LDAsMTQuMTcyODUsNi4zNDU3LDE0LjE3Mjg1LDE0LjE3MzgzdjU3LjQwMTM3DQoJCQkJYzAsOC42MTAzNSw2Ljk4MDQ3LDE1LjU5MDgyLDE1LjU5MDgyLDE1LjU5MDgyczE1LjU5MDgyLTYuOTgwNDcsMTUuNTkwODItMTUuNTkwODJ2LTU3LjQwMTM3DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoOS45MjA5YzIuMzQ4NjMsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2NjcuMzIzMjQNCgkJCQljMCwyNC4yNjU2My0xOS42NzA5LDQzLjkzNzUtNDMuOTM2NTIsNDMuOTM3NXMtNDMuOTM3NS0xOS42NzE4OC00My45Mzc1LTQzLjkzNzVWMTIwMi4wMDA5OEw5ODQuNjMwODYsMTIwMi4wMDA5OHoNCgkJCQkgTTQ2Ni44NjkxNCwxMTk1LjYyMzA1YzMyLjQ4NDM4LDAsNTguODE4MzYsMjYuMzMzOTgsNTguODE4MzYsNTguODE5MzRjMCwzMi40ODQzOC0yNi4zMzM5OCw1OC44MTkzNC01OC44MTgzNiw1OC44MTkzNA0KCQkJCWMtMzIuNDg2MzMsMC01OC44MTkzNC0yNi4zMzQ5Ni01OC44MTkzNC01OC44MTkzNEM0MDguMDQ5OCwxMjIxLjk1NzAzLDQzNC4zODI4MSwxMTk1LjYyMzA1LDQ2Ni44NjkxNCwxMTk1LjYyMzA1DQoJCQkJTDQ2Ni44NjkxNCwxMTk1LjYyMzA1eiBNNDY2Ljg2OTE0LDEyMjUuMDMzMmMtMTYuMjQzMTYsMC0yOS40MTAxNiwxMy4xNjY5OS0yOS40MTAxNiwyOS40MDkxOA0KCQkJCXMxMy4xNjY5OSwyOS40MDgyLDI5LjQxMDE2LDI5LjQwODJjMTYuMjQxMjEsMCwyOS40MDgyLTEzLjE2NjAyLDI5LjQwODItMjkuNDA4MlM0ODMuMTEwMzUsMTIyNS4wMzMyLDQ2Ni44NjkxNCwxMjI1LjAzMzINCgkJCQlMNDY2Ljg2OTE0LDEyMjUuMDMzMnogTTU1Ni43MzI0MiwxMzExLjEzNDc3Yy0yLjM0NzY2LDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtOTQuOTYxOTENCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzM4My0xNC4xNzM4M2gzLjk1ODk4YzQuNjI1LDAsOC45NTg5OCwyLjI1Njg0LDExLjYxMTMzLDYuMDQ1OWw0MS4xMjIwNyw1OC43NDcwN3YtNTAuNjE5MTQNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2g5LjkyMTg4YzIuMzQ3NjYsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2OTQuOTYwOTQNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3MzgzLDE0LjE3Mjg1aC0zLjk1ODk4Yy00LjYyNSwwLTguOTU4OTgtMi4yNTU4Ni0xMS42MTEzMy02LjA0NDkybC00MS4xMjIwNy01OC43NDYwOXY1MC42MTgxNg0KCQkJCWMwLDcuODI5MS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVINTU2LjczMjQyTDU1Ni43MzI0MiwxMzExLjEzNDc3eiBNMTIxNS4wMjA1MSwxMjExLjkyMjg1DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoNTAuMzE1NDNjMi4zNDg2MywwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyDQoJCQkJYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVoLTYuMDI0NDF2NzUuMTE4MTZjMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMTg4DQoJCQkJYy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtODUuMDQxMDJoLTE1Ljk0NDM0Yy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMzMyLTQuMjUxOTUtNC4yNTE5NVYxMjExLjkyMjg1DQoJCQkJTDEyMTUuMDIwNTEsMTIxMS45MjI4NXogTTc3Ni40NDkyMiwxMjExLjkyMjg1YzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTczODMtMTQuMTczODNoNTAuMzE0NDUNCgkJCQljMi4zNDk2MSwwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcxODgsMTQuMTcyODVoLTYuMDI1Mzl2NzUuMTE4MTYNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMDljLTIuMzQ5NjEsMC00LjI1MTk1LTEuOTAyMzQtNC4yNTE5NS00LjI1di04NS4wNDEwMmgtMTUuOTQ1MzENCgkJCQljLTIuMzQ3NjYsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMTEuOTIyODVMNzc2LjQ0OTIyLDEyMTEuOTIyODV6IE05MjkuNjA0NDksMTI3Mi4wMjI0NmwyNi45NTgwMSwzMi4xMjc5Mw0KCQkJCWMyLjMxNDQ1LDIuNzU3ODEsMC4zNDM3NSw2Ljk4NDM4LTMuMjU2ODQsNi45ODQzOGgtMTkuNzA1MDhjLTQuMTg5NDUsMC04LjE2NTA0LTEuODUxNTYtMTAuODU3NDItNS4wNjA1NWwtMjIuNjgxNjQtMjcuMDMxMjUNCgkJCQl2MjcuODQxOGMwLDIuMzQ3NjYtMS45MDMzMiw0LjI1LTQuMjUxOTUsNC4yNWgtOS45MjA5Yy03LjgyNzE1LDAtMTQuMTcyODUtNi4zNDM3NS0xNC4xNzI4NS0xNC4xNzI4NXYtODUuMDM5MDYNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2gyOS43NjM2N2MyMi43MDAyLDAsNDEuMTAyNTQsMTcuMTMzNzksNDEuMTAyNTQsMzguMjY4NTUNCgkJCQlDOTU2Ljc1NDg4LDEyNTIuNTkwODIsOTQ1LjQzNjUyLDEyNjYuNzAyMTUsOTI5LjYwNDQ5LDEyNzIuMDIyNDZMOTI5LjYwNDQ5LDEyNzIuMDIyNDZ6IE05MDAuMDYxNTIsMTIyMS44NDM3NXYzMi41OTg2M2g4LjUwMzkxDQoJCQkJYzEwLjk1ODk4LDAsMTkuODQyNzctNy4yOTc4NSwxOS44NDI3Ny0xNi4yOTg4M2MwLTkuMDAxOTUtOC44ODM3OS0xNi4yOTk4LTE5Ljg0Mjc3LTE2LjI5OThIOTAwLjA2MTUyTDkwMC4wNjE1MiwxMjIxLjg0Mzc1eg0KCQkJCSBNMTE1OC4zNTkzOCwxMTk1LjYyMzA1YzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NzI3LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOA0KCQkJCWwtNC45MzI2Miw4LjU0MTk5Yy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNTU5LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMyMjMsMCw1Ljk2MDk0LTAuNDQzMzYsOC43MjU1OS0xLjI2ODU1YzYuMjk1OS0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTgzNiw2LjUwMDk4bDQuOTMwNjYsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM3NSw1LjczNDM4Yy05LjAwNDg4LDUuNjAxNTYtMTkuNjMyODEsOC44Mzc4OS0zMS4wMTc1OCw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzEwOTkuNTQwMDQsMTIyMS45NTcwMywxMTI1Ljg3NDAyLDExOTUuNjIzMDUsMTE1OC4zNTkzOCwxMTk1LjYyMzA1eiIvPg0KCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMwMEZGREEiIGQ9Ik0xMzE4LjE5NzI3LDEyMDYuMDMyMjMNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2MyMC42NTYyNSwwLDQxLjMxMjUsMCw2MS45Njg3NSwwYzMuNDI5NjksMCw1LjQ1MDIsMy44ODA4NiwzLjQ4MzQsNi42OTA0Mw0KCQkJCWwtMTkuMjk2ODgsMjcuNTY3MzhjMTUuNTQyOTcsOC4zNzU5OCwyNi4xMDY0NSwyNC44MDA3OCwyNi4xMDY0NSw0My42OTUzMWMwLDI3LjM5NzQ2LTIyLjIwODk4LDQ5LjYwNjQ1LTQ5LjYwNjQ1LDQ5LjYwNjQ1DQoJCQkJYy0xNi42ODg0OCwwLTMxLjQ1MTE3LTguMjQwMjMtNDAuNDQzMzYtMjAuODc1OThjLTEuNDUwMi0yLjAzOTA2LTAuODMxMDUtNC44OTk0MSwxLjMzNTk0LTYuMTUyMzRsMTAuOTc3NTQtNi4zMzc4OQ0KCQkJCWM0Ljg4MTg0LTIuODE4MzYsMTAuOTc5NDktMi40NzU1OSwxNS41MTQ2NSwwLjg3MzA1YzMuNTI4MzIsMi42MDU0Nyw3Ljg5MTYsNC4xNDY0OCwxMi42MTUyMyw0LjE0NjQ4DQoJCQkJYzExLjc0MjE5LDAsMjEuMjU5NzctOS41MTg1NSwyMS4yNTk3Ny0yMS4yNTk3N3MtOS41MTc1OC0yMS4yNTk3Ny0yMS4yNTk3Ny0yMS4yNTk3N2gtMTUuMjE3NzcNCgkJCQljLTMuNDI5NjksMC01LjQ1MDItMy44ODA4Ni0zLjQ4NDM4LTYuNjkwNDNsMTguMTM1NzQtMjUuOTA4MmgtMzIuMDA5NzdjLTIuMzQ4NjMsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMDYuMDMyMjN6DQoJCQkJIi8+DQoJCTwvZz4NCgkJPGc+DQoJCQk8Zz4NCgkJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0RBRThGNyIgZD0iTTg1MC4zOTU1MSw4NTcuNTkxOA0KCQkJCQljLTUwLjM1NjQ1LDAtOTQuMzI1Mi0yNy4zNTY0NS0xMTcuODUyNTQtNjguMDIwNTFsLTgwLjAzMDI3LDQ2LjIwNDFjLTQuNjU1MjcsMi42ODk0NS02LjEzMTg0LDguNzE4NzUtMy4yNDkwMiwxMy4yNTU4Ng0KCQkJCQljNDIuMjM3Myw2Ni40ODYzMywxMTYuNTMzMiwxMTAuNjA3NDIsMjAxLjEzMTg0LDExMC42MDc0MmM4OC4xMjU5OCwwLDE2NS4wNzEyOS00Ny44NzUsMjA2LjI0MzE2LTExOS4wMzYxM2wtODAuNDg3My00Ni40Njk3Mw0KCQkJCQljLTQuMzEzNDgtMi40OTAyMy05LjgwMTc2LTEuMjA1MDgtMTIuNTcwMzEsMi45MzU1NUM5MzkuMTc1NzgsODMzLjU2MjUsODk3LjU5MTgsODU3LjU5MTgsODUwLjM5NTUxLDg1Ny41OTE4DQoJCQkJCUw4NTAuMzk1NTEsODU3LjU5MTh6IE0xMTM2LjcyMTY4LDU1Ni4yMTc3N2M0LjYxNDI2LTIuNjYzMDksNi4xMTAzNS04LjYxOTE0LDMuMzEyNS0xMy4xNTEzNw0KCQkJCQljLTU5LjkxNTA0LTk3LjAzMDI3LTE2Ny4yMjQ2MS0xNjEuNjk0MzQtMjg5LjYzODY3LTE2MS42OTQzNGMtMTI1Ljg5MzU1LDAtMjM1LjgxMzQ4LDY4LjM5MjU4LTI5NC42MzM3OSwxNzAuMDQ5OA0KCQkJCQlsODAuMzc2OTUsNDYuNDA2MjVjNC4zOTc0NiwyLjUzOTA2LDEwLjAwMTk1LDEuMTQ5NDEsMTIuNzEwOTQtMy4xNDU1MQ0KCQkJCQljNDIuMTY0MDYtNjYuODUxNTYsMTE2LjY2ODk1LTExMS4yNjM2NywyMDEuNTQ1OS0xMTEuMjYzNjdjODguMTI1OTgsMCwxNjUuMDcxMjksNDcuODc1OTgsMjA2LjI0MzE2LDExOS4wMzYxMw0KCQkJCQlMMTEzNi43MjE2OCw1NTYuMjE3Nzd6Ii8+DQoJCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNBNUJBQzgiIGQ9Ik04NTAuMzk1NTEsOTU5LjYzODY3DQoJCQkJCWMtODQuNTk4NjMsMC0xNTguODk0NTMtNDQuMTIxMDktMjAxLjEzMTg0LTExMC42MDc0MmMtMi44NzY5NS00LjUzMDI3LTEuMzk5NDEtMTAuNTcwMzEsMy4yNDkwMi0xMy4yNTU4Nmw4MC4wMzAyNy00Ni4yMDQxDQoJCQkJCWMtMTEuNTgxMDUtMjAuMDE2Ni0xOC4yMDk5Ni00My4yNTQ4OC0xOC4yMDk5Ni02OC4wNDE5OWMwLTc0Ljc4NTE2LDYwLjU1NzYyLTEzNi4wNjI1LDEzNi4wNjI1LTEzNi4wNjI1DQoJCQkJCWM0Ny4xOTYyOSwwLDg4Ljc4MDI3LDI0LjAyOTMsMTEzLjE4NTU1LDYwLjUyMjQ2YzIuNzY0NjUsNC4xMzM3OSw4LjI2MzY3LDUuNDIxODgsMTIuNTcwMzEsMi45MzU1NWw4MC40ODczLTQ2LjQ2OTczDQoJCQkJCWMtNDEuMTcxODgtNzEuMTYwMTYtMTE4LjExNzE5LTExOS4wMzYxMy0yMDYuMjQzMTYtMTE5LjAzNjEzYy04NC44NzY5NSwwLTE1OS4zODE4NCw0NC40MTIxMS0yMDEuNTQ1OSwxMTEuMjYzNjcNCgkJCQkJYy0yLjcwNjA1LDQuMjkxMDItOC4zMTgzNiw1LjY4MTY0LTEyLjcxMDk0LDMuMTQ1NTFsLTgwLjM3Njk1LTQ2LjQwNjI1DQoJCQkJCWMtMjguOTUyMTUsNTAuMDQwMDQtNDUuNTIzNDQsMTA4LjEzOTY1LTQ1LjUyMzQ0LDE3MC4xMDc0MmMwLDE4Ni45NjM4NywxNTEuMzk0NTMsMzQwLjE1NzIzLDM0MC4xNTcyMywzNDAuMTU3MjMNCgkJCQkJYzEyMi40MTQwNiwwLDIyOS43MjM2My02NC42NjQwNiwyODkuNjM4NjctMTYxLjY5NTMxYzIuNzk0OTItNC41MjYzNywxLjI5NDkyLTEwLjQ5MDIzLTMuMzEyNS0xMy4xNTEzN2wtODAuMDgzMDEtNDYuMjM3Mw0KCQkJCQlDMTAxNS40NjY4LDkxMS43NjM2Nyw5MzguNTIxNDgsOTU5LjYzODY3LDg1MC4zOTU1MSw5NTkuNjM4Njd6Ii8+DQoJCQk8L2c+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzAwRkZEQSIgZD0iTTExMzcuMTg1NTUsNzU4LjExMzI4di03My4xNjc5N2wtNjMuMzY1MjMsMzYuNTgzOTgNCgkJCQlMMTEzNy4xODU1NSw3NTguMTEzMjhMMTEzNy4xODU1NSw3NTguMTEzMjh6IE0xMDI2LjU3NjE3LDcwNS4xNjQwNmwxMjAuMDU4NTktNjkuMzE2NDENCgkJCQljMTIuNTY4MzYtNy4yNTU4NiwyOC4zNDQ3MywxLjg1MjU0LDI4LjM0NTcsMTYuMzY2MjF2MTM4LjYzMDg2Yy0wLjAwMDk4LDE0LjUxMjctMTUuNzc3MzQsMjMuNjIyMDctMjguMzQ1NywxNi4zNjYyMQ0KCQkJCWwtMTIwLjA1ODU5LTY5LjMxNjQxQzEwMTQuMDI4MzIsNzMwLjY0OTQxLDEwMTQuMDI4MzIsNzEyLjQwOTE4LDEwMjYuNTc2MTcsNzA1LjE2NDA2eiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.logo=a}).catch((a)=>console.warn("Failed to load splash image: ",a)),this._LoadBitmapSplashImage("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABABAMAAACekdKMAAAAMFBMVEUAAAByfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYZyfYYgo7vbAAAAD3RSTlMAmd137hFVqjO7zCKIRGZ881JRAAAFY0lEQVR42u2aPW/bVhSGn1iiPizZ8D+QgSJBNglFmiboQA0NUKAD1XotYA0BOspAkZnqx24vnTrIQNCpg4QkQMcYKDoW9j9w5y6qLNqWFDlvh3tJUa6ddHBhAuS7SKBIQffhuee851CQKVOmTJkyZcqUKXmqa8O+uyNlABKsFRmdP0o5AOle2gHoWdoBzFrpBHACwPeetJNmAFSlt6kGwGH0LqUAVqRuqgHkpEaqAVRkfvOWr+Dh9Rc4j6VvwnrhPNAbgK2ezj+yx7Z6GjUuASi4Ch4lHQAGwBeRK1rROQAdUx5K0hE4NUkaAdS02ZEuoms2wkCSgvYSgFJfkn6CobkSPG0mEcAOrHnGFOxAToHNjk/MygLgO/PxL0BN9yRdQKlufMQAoCdJGi8BOJYknXTJ269cu9HtdqNb4Ni6oimUbFb0dAZQ1DmULJ+TFtT0qQHwg73mLlCMfFUMQPR5VWrbmttNHICC1KDiSZ+w3pMOwFPDhP4IYFtv4ZX0nIorbUBNmjWAiqdZg5fmNFd6jvPhJQDjAV9LI0r28IpmycsBZalNWfoRWJcuoKY9c7cCkwpOwdcIqNT1BmrSgQkNbQAvpAGOF+aHOIBpCxhKR/TVBNjVOHkAOgrg2N6aoU7sklmVidtD7bNm/fIrjaBmk+Sxea142iBnTyguAfjZZscNXLOdXFM8EgVgXRpDz/6yonTEts6AXdV1APTVoKigFSXEmj3XN0kSV01WFQwAHC8O4Mhagye8NgHS137SALzsS3dxwhtXkQ4oaw64eqomOFKXbc2xJbFLTX8DOHYnsKsJu2Gdu8IIuTqjrMB8eyM5ACIFXQo2S5t7lNMM6AdFTaCgADqahHW8EQIohBk9rzEdE+JXAtjVmHWpDTmplUAA96Ea/bJDnVKSWjgaFTSHqubgmjVDXQchgFy4wBXNcXV6LYC8RjbEypomcCAyBopRShxqAn21yenM8WawqjOoKVbmLYBFndeImsnyVwJY1RR8NW1FTRiA6UNTCsP6fKwLONQBZTXx1WVbT0KbtwygvAxg81oAZU0xe2QYxkmyrDDx2DzWBXTUZFs7dNQwHUEMwN4VAKb47wOQ1wj8Gx0+/Y8A8powVJtt7XOoxn8A8N4IqCrA8cJUmzgAl3JAUWN8tSjqDX0NwI/XbwugGLe178oBK7bBaBesm0gggOUqwLrOHe8c1jV2NAMOw/XFAFRth2dr/burANS1cSc0C8kDsB7zAZvgKCjoLTiaFqwpmvwLQC7e2b3PB4CrZj48KXkAKktOEPr6VqeAr680udzEWACluK0LreJ1ThBe6+w4HkfJAhD1AtbAu3qgPcDVX2oCK9bqxwFQ1+fRsVW7va/uBZpAWaND652TCGBoM1rHHN6VmQlsq6cdE+4mC75oLAC49prKB1zTDd6NukHIKahbIkkEsGrmAQWZbZqXNLClrg04dTP4KnjnCwBfmgkZT7WD45k94C8BmA3MPGBgeqcbfQBxwwDsRMi3N7Iqc3dzsuVhV5ofkevpJOoGKUn6Ax5L92F49USoayZCls08uQDiM0ETCWPb8k7DMmH02SICGC7ayVhnsABwEpsZQkfxUpI4ALGpsFn4xCbHcVjnwgnvAkBh0U6CbzqrXgzA1E6FB9YOJGcacgUAfl36t0Ro/SIDUDEL/D1WBcJr5q0oRoJ2LQZgZJ4LPIu2RCPJAJafDLm2Yr2OHmQ4H0vzBksA2PKl38L3fY0aLAFYejK0ZpJhelVKzkj8dlRNzkj8dpRP0DTkVjTUXroB9PVnqtefS9I05BZU8NOdAyUl5q8RtwUg6KYcwP1Up8CanpMpU6ZMmTLdgP4BRYsi23xEdOAAAAAASUVORK5CYII=").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.powered=a}).catch((a)=>console.warn("Failed to load splash image: ",a)),this._LoadBitmapSplashImage("data:image/png;base64,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").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.website=a}).catch((a)=>console.warn("Failed to load splash image: ",a)))}async _LoadSvgSplashImage(a){a=new URL(a,this._runtime.GetBaseURL()).toString();const b=await C3.FetchBlob(a),c=await this._runtime.RasterSvgImage(b,2048,2048);return await this._webglRenderer.CreateStaticTextureAsync(c,{mipMapQuality:"high"})}async _LoadBitmapSplashImage(a){a=new URL(a,this._runtime.GetBaseURL()).toString();const b=await C3.FetchBlob(a);return await this._webglRenderer.CreateStaticTextureAsync(b,{mipMapQuality:"high"})}StartLoadingScreen(){this._loaderStartTime=Date.now(),this._runtime.Dispatcher().addEventListener("loadingprogress",this._loadingprogress_handler),this._DrawLoadingScreen(),this._rafId=requestAnimationFrame(()=>this._DrawLoadingScreen())}async EndLoadingScreen(){this._loadingProgress=1,4===this._runtime.GetLoaderStyle()&&(await this._splashDonePromise),this._splashDoneResolve=null,this._splashDonePromise=null,-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1),this._runtime.Dispatcher().removeEventListener("loadingprogress",this._loadingprogress_handler),this._loadingprogress_handler=null,this._webglPercentText&&(this._webglPercentText.Release(),this._webglPercentText=null),this._loadingLogoAsset&&(this._loadingLogoAsset.Release(),this._loadingLogoAsset=null),this._splashTextures.logo&&(this._webglRenderer.DeleteTexture(this._splashTextures.logo),this._splashTextures.logo=null),this._splashTextures.powered&&(this._webglRenderer.DeleteTexture(this._splashTextures.powered),this._splashTextures.powered=null),this._splashTextures.website&&(this._webglRenderer.DeleteTexture(this._splashTextures.website),this._splashTextures.website=null),this._webglRenderer.ClearRgba(0,0,0,0),this._webglRenderer.Finish(),this._splashState="done",this._gpuTimeStartFrame=this._webglRenderer.GetFrameNumber()}_DrawLoadingScreen(){if(-1!==this._rafId){const a=this._webglRenderer;this._rafId=-1;const b=this._runtime.GetAssetManager().HasHadErrorLoading(),c=this._runtime.GetLoaderStyle();if(3!==c&&(this.SetCssTransform(a),a.ClearRgba(0,0,0,0),a.ResetColor(),a.SetTextureFillMode(),a.SetTexture(null)),0===c)this._DrawProgressBarAndLogoLoadingScreen(b);else if(1===c)this._DrawProgressBarLoadingScreen(b,120,0);else if(2===c)this._DrawPercentTextLoadingScreen(b);else if(3===c)C3.noop();else if(4===c)this._DrawSplashLoadingScreen(b);else throw new Error("invalid loader style");a.Finish(),this._rafId=requestAnimationFrame(()=>this._DrawLoadingScreen())}}_DrawPercentTextLoadingScreen(a){a?this._webglPercentText.SetColorRgb(1,0,0):this._webglPercentText.SetColorRgb(.6,.6,.6),this._webglPercentText.SetText(Math.round(100*this._loadingProgress)+"%");const b=this._canvasCssWidth/2,d=this._canvasCssHeight/2;c.setRect(b-150,d-100,b+150,d+100),this._webglRenderer.SetTexture(this._webglPercentText.GetTexture()),this._webglRenderer.Quad3(c,this._webglPercentText.GetTexRect())}_DrawProgressBarLoadingScreen(a,b,c){const e=this._webglRenderer;e.SetColorFillMode(),a?e.SetColorRgba(1,0,0,1):e.SetColorRgba(.118,.565,1,1);const f=this._canvasCssWidth/2,g=this._canvasCssHeight/2,h=b/2;d.setWH(f-h,g-4+c,Math.floor(b*this._loadingProgress),8),e.Rect(d),d.setWH(f-h,g-4+c,b,8),d.offset(-.5,-.5),d.inflate(.5,.5),e.SetColorRgba(0,0,0,1),e.LineRect2(d),d.inflate(1,1),e.SetColorRgba(1,1,1,1),e.LineRect2(d)}_DrawProgressBarAndLogoLoadingScreen(a){if(!this._loadingLogoAsset)return void this._DrawProgressBarLoadingScreen(a,120,0);const b=this._loadingLogoAsset.GetTexture();if(!b)return void this._DrawProgressBarLoadingScreen(a,120,0);const d=b.GetWidth(),e=b.GetHeight(),f=this._canvasCssWidth/2,g=this._canvasCssHeight/2,h=d/2,i=e/2;c.setRect(f-h,g-i,f+h,g+i),this._webglRenderer.SetTexture(b),this._webglRenderer.Quad(c),this._DrawProgressBarLoadingScreen(a,d,i+16)}_DrawSplashLoadingScreen(b){var c=Math.min,e=Math.max,f=Math.ceil;const g=this._webglRenderer,i=this._splashTextures.logo,j=this._splashTextures.powered,k=this._splashTextures.website,l=Date.now();0===this._splashFrameNumber&&(this._loaderStartTime=l);const m=this._runtime.IsPreview()||this._runtime.IsFBInstantAvailable()&&!this._runtime.IsCordova(),n=m?0:200,o=m?0:3000;let p=1;"fade-in"===this._splashState?p=c((l-this._loaderStartTime)/300,1):"fade-out"===this._splashState&&(p=e(1-(l-this._splashFadeOutStartTime)/300,0)),g.SetColorFillMode(),g.SetColorRgba(.231*p,.251*p,.271*p,p),d.set(0,0,this._canvasCssWidth,this._canvasCssHeight),g.Rect(d);const a=f(this._canvasCssWidth),q=f(this._canvasCssHeight);let h,r;256=300&&2<=this._splashFrameNumber&&(this._splashState="wait",this._splashFadeInFinishTime=l),"wait"===this._splashState&&l-this._splashFadeInFinishTime>=o&&1<=this._loadingProgress&&(this._splashState="fade-out",this._splashFadeOutStartTime=l),("fade-out"===this._splashState&&l-this._splashFadeOutStartTime>=300+n||m&&1<=this._loadingProgress&&500>l-this._loaderStartTime)&&this._splashDoneResolve()}}} + +// c3/runtime.js +"use strict";{const e={"messagePort":null,"baseUrl":"","headless":!1,"hasDom":!0,"isInWorker":!1,"useAudio":!0,"projectData":"","exportType":""};let a=!0;C3.Runtime=class extends C3.DefendedBase{constructor(n){n=Object.assign({},e,n);super(),this._messagePort=n["messagePort"],this._baseUrl=n["baseUrl"],this._isHeadless=!!n["headless"],this._hasDom=!!n["hasDom"],this._isInWorker=!!n["isInWorker"],a=n["ife"],this._useAudio=!!n["useAudio"],this._exportType=n["exportType"],this._isWKWebView=!!n["isWKWebView"],this._isFBInstantAvailable=!!n["isFBInstantAvailable"],this._opusWasmScriptUrl=n["opusWasmScriptUrl"],this._opusWasmBinaryUrl=n["opusWasmBinaryUrl"],this._dataJsonFilename="data.json",this._isDebug=!!("preview"===this._exportType&&n["isDebug"]),this._breakpointsEnabled=this._isDebug,this._isDebugging=this._isDebug,this._debuggingDisabled=0;const t=n["previewImageBlobs"],s=n["previewProjectFileBlobs"];s&&Object.assign(t,s);const i=n["projectData"];i&&(t[this._dataJsonFilename]=i),this._additionalLoadPromises=[],this._projectName="",this._projectVersion="",this._projectUniqueId="",this._originalViewportWidth=0,this._originalViewportHeight=0,this._parallaxXorigin=0,this._parallaxYorigin=0,this._viewportWidth=0,this._viewportHeight=0,this._loaderStyle=0,this._usesLoaderLayout=!1,this._isLoading=!0,this._usesAnyBackgroundBlending=!1;const r="html5"===this._exportType||"scirra-arcade"===this._exportType;this._assetManager=C3.New(C3.AssetManager,this,{defaultLoadPolicy:r?"remote":"local",localUrlBlobs:t,isCordova:"cordova"===this._exportType,isWKWebView:this._isWKWebView,supportedAudioFormats:n["supportedAudioFormats"]}),this._layoutManager=C3.New(C3.LayoutManager,this),this._eventSheetManager=C3.New(C3.EventSheetManager,this),this._pluginManager=C3.New(C3.PluginManager,this),this._collisionEngine=C3.New(C3.CollisionEngine,this),this._timelineManager=C3.New(C3.TimelineManager,this),this._allObjectClasses=[],this._objectClassesByName=new Map,this._objectClassesBySid=new Map,this._familyCount=0,this._allContainers=[],this._allEffectLists=[],this._currentLayoutStack=[],this._instancesPendingCreate=[],this._instancesPendingDestroy=new Map,this._hasPendingInstances=!1,this._isFlushingPendingInstances=!1,this._objectCount=0,this._nextUid=0,this._instancesByUid=new Map,this._instancesToReleaseAtEndOfTick=new Set,this._objectReferenceTable=[],this._canvasManager=null,this._isLinearSampling=!0,this._isPixelRoundingEnabled=!1,this._needRender=!0,this._pauseOnBlur=!1,this._isPausedOnBlur=!1,this._tickCallback=(e)=>this.Tick(e),this._rafId=-1,this._tickCount=0,this._tickCountNoSave=0,this._execCount=0,this._hasStarted=!1,this._isInTick=!1,this._hasStartedTicking=!1,this._isLayoutFirstTick=!0,this._suspendCount=0,this._randomNumberCallback=()=>Math.random(),this._startTime=0,this._lastTickTime=0,this._dt1=0,this._dt=0,this._timeScale=1,this._minimumFramerate=30,this._gameTime=C3.New(C3.KahanSum),this._wallTime=C3.New(C3.KahanSum),this._fpsFrameCount=-1,this._fpsLastTime=0,this._fps=0,this._mainThreadTimeCounter=0,this._mainThreadTime=0,this._isLoadingState=!1,this._saveToSlotName="",this._loadFromSlotName="",this._loadFromJson=null,this._lastSaveJson="",this._triggerOnCreateAfterLoad=[],this._savegamesStorage=null,this._dispatcher=C3.New(C3.Event.Dispatcher),this._domEventHandlers=new Map,this._pendingResponsePromises=new Map,this._nextDomResponseId=0,this._isReadyToHandleEvents=!1,this._waitingToHandleEvents=[],this._eventObjects={"pretick":C3.New(C3.Event,"pretick",!1),"tick":C3.New(C3.Event,"tick",!1),"tick2":C3.New(C3.Event,"tick2",!1),"instancedestroy":C3.New(C3.Event,"instancedestroy",!1),"beforelayoutchange":C3.New(C3.Event,"beforelayoutchange",!1),"layoutchange":C3.New(C3.Event,"layoutchange",!1)},this._eventObjects["instancedestroy"].instance=null,this._behInstsToTick=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._behInstsToPostTick=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._behInstsToTick2=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._jobScheduler=C3.New(C3.JobSchedulerRuntime,this,n["jobScheduler"]),n["canvas"]&&(this._canvasManager=C3.New(C3.CanvasManager,this)),this._messagePort.onmessage=(a)=>this["_OnMessageFromDOM"](a.data),this.AddDOMComponentMessageHandler("runtime","visibilitychange",(a)=>this._OnVisibilityChange(a)),this.AddDOMComponentMessageHandler("runtime","opus-decode",(a)=>this._WasmDecodeWebMOpus(a["arrayBuffer"])),this._dispatcher.addEventListener("window-blur",(a)=>this._OnWindowBlur(a)),this._dispatcher.addEventListener("window-focus",()=>this._OnWindowFocus())}static Create(e){return C3.New(C3.Runtime,e)}Release(){C3.clearArray(this._allObjectClasses),this._objectClassesByName.clear(),this._objectClassesBySid.clear(),this._layoutManager.Release(),this._layoutManager=null,this._eventSheetManager.Release(),this._eventSheetManager=null,this._pluginManager.Release(),this._pluginManager=null,this._assetManager.Release(),this._assetManager=null,this._collisionEngine.Release(),this._collisionEngine=null,this._timelineManager.Release(),this._timelineManager=null,this._canvasManager&&(this._canvasManager.Release(),this._canvasManager=null),this._dispatcher.Release(),this._dispatcher=null,this._tickEvent=null,this._tickCallback=null}["_OnMessageFromDOM"](e){const a=e["type"];if("event"===a)this._OnEventFromDOM(e);else if("result"===a)this._OnResultFromDOM(e);else throw new Error(`unknown message '${a}'`)}_OnEventFromDOM(a){if(!this._isReadyToHandleEvents)return void this._waitingToHandleEvents.push(a);const e=a["component"],n=a["handler"],t=a["data"],s=a["dispatchRuntimeEvent"],i=a["responseId"];if("runtime"===e&&s){const e=new C3.Event(n);e.data=t,this._dispatcher.dispatchEventAndWaitAsyncSequential(e)}const r=this._domEventHandlers.get(e);if(!r)return void(s||console.warn(`[Runtime] No DOM event handlers for component '${e}'`));const o=r.get(n);if(!o)return void(s||console.warn(`[Runtime] No DOM handler '${n}' for component '${e}'`));let d=null;try{d=o(t)}catch(a){return console.error(`Exception in '${e}' handler '${n}':`,a),void(null!==i&&this._PostResultToDOM(i,!1,a.toString()))}null!==i&&(d&&d.then?d.then((e)=>this._PostResultToDOM(i,!0,e)).catch((a)=>{console.error(`Rejection from '${e}' handler '${n}':`,a),this._PostResultToDOM(i,!1,a.toString())}):this._PostResultToDOM(i,!0,d))}_PostResultToDOM(e,a,n){this._messagePort.postMessage({"type":"result","responseId":e,"isOk":a,"result":n})}_OnResultFromDOM(e){const a=e["responseId"],n=e["isOk"],t=e["result"],s=this._pendingResponsePromises.get(a);n?s.resolve(t):s.reject(t),this._pendingResponsePromises.delete(a)}AddDOMComponentMessageHandler(e,a,n){let t=this._domEventHandlers.get(e);if(t||(t=new Map,this._domEventHandlers.set(e,t)),t.has(a))throw new Error(`[Runtime] Component '${e}' already has handler '${a}'`);t.set(a,n)}PostComponentMessageToDOM(e,a,n){this._messagePort.postMessage({"type":"event","component":e,"handler":a,"data":n,"responseId":null})}PostComponentMessageToDOMAsync(e,a,n){const t=this._nextDomResponseId++,s=new Promise((e,a)=>{this._pendingResponsePromises.set(t,{resolve:e,reject:a})});return this._messagePort.postMessage({"type":"event","component":e,"handler":a,"data":n,"responseId":t}),s}PostToDebugger(e){if(!this.IsDebug())throw new Error("not in debug mode");this.PostComponentMessageToDOM("runtime","post-to-debugger",e)}async Init(e){this.IsDebug()&&C3Debugger.Init(this);const[a]=await Promise.all([this._assetManager.FetchJson(this._dataJsonFilename),this._MaybeLoadOpusDecoder(),this._jobScheduler.Init()]);this._LoadDataJson(a),await this._InitialiseCanvas(e),this.IsPreview()||console.info("Made with Construct 3, the game and app creator :: https://www.construct.net");const n=this.GetWebGLRenderer();n?(console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, rendering with WebGL ${n.GetWebGLVersionNumber()} [${n.GetUnmaskedRenderer()}]`),n.HasMajorPerformanceCaveat()&&console.warn("[C3 runtime] WebGL indicates a major performance caveat. Software rendering may be in use. This can result in significantly degraded performance.")):console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, headless`),this._isReadyToHandleEvents=!0;for(const a of this._waitingToHandleEvents)this._OnEventFromDOM(a);if(C3.clearArray(this._waitingToHandleEvents),this._canvasManager&&this._canvasManager.StartLoadingScreen(),await Promise.all([this._assetManager.WaitForAllToLoad(),...this._additionalLoadPromises]),!this._assetManager.HasHadErrorLoading())return this._canvasManager&&(await this._canvasManager.EndLoadingScreen()),await this._dispatcher.dispatchEventAndWaitAsync(new C3.Event("beforeruntimestart")),await this.Start(),this._messagePort.postMessage({"type":"runtime-ready"}),this}_LoadDataJson(e){const a=e["project"];this._projectName=a[0],this._projectVersion=a[16],this._projectUniqueId=a[31],this._isPixelRoundingEnabled=!!a[9],this._originalViewportWidth=this._viewportWidth=a[10],this._originalViewportHeight=this._viewportHeight=a[11],this._parallaxXorigin=this._originalViewportWidth/2,this._parallaxYorigin=this._originalViewportHeight/2,this._isLinearSampling=!!a[14],this._usesLoaderLayout=!!a[18],this._loaderStyle=a[19],this._nextUid=a[21],this._pauseOnBlur=a[22],this._assetManager._SetAudioFiles(a[7],a[25]),this._assetManager._SetMediaSubfolder(a[8]),this._assetManager._SetFontsSubfolder(a[32]),this._assetManager._SetIconsSubfolder(a[28]),this._assetManager._SetWebFonts(a[29]),this._canvasManager&&(this._canvasManager.SetFullscreenMode(C3.CanvasManager._FullscreenModeNumberToString(a[12])),this._canvasManager.SetFullscreenScalingQuality(a[23]?"high":"low"),this._canvasManager.SetClearBackground(a[15]),this._canvasManager._SetGPUPowerPreference(a[34])),this._pluginManager.CreateSystemPlugin(),this._objectReferenceTable=self.C3_GetObjectRefTable();for(const n of a[2])this._pluginManager.CreatePlugin(n);this._objectReferenceTable=self.C3_GetObjectRefTable();for(const n of a[3]){const e=C3.ObjectClass.Create(this,this._allObjectClasses.length,n);this._allObjectClasses.push(e),this._objectClassesByName.set(e.GetName().toLowerCase(),e),this._objectClassesBySid.set(e.GetSID(),e)}for(const n of a[4]){const e=this._allObjectClasses[n[0]];e._LoadFamily(n)}for(const n of a[27]){const e=n.map((e)=>this._allObjectClasses[e]);this._allContainers.push(C3.New(C3.Container,this,e))}for(const a of this._allObjectClasses)a._OnAfterCreate();for(const n of a[5])this._layoutManager.Create(n);const n=a[1];if(n){const e=this._layoutManager.GetLayoutByName(n);e&&this._layoutManager.SetFirstLayout(e)}for(const n of a[33])this._timelineManager.Create(n);for(const n of a[6])this._eventSheetManager.Create(n);this._eventSheetManager._PostInit(),C3.clearArray(this._objectReferenceTable),this.FlushPendingInstances();let t="any";const s=a[20];1===s?t="portrait":2===s&&(t="landscape"),this.PostComponentMessageToDOM("runtime","set-target-orientation",{"targetOrientation":t})}GetLoaderStyle(){return this._loaderStyle}IsFBInstantAvailable(){return this._isFBInstantAvailable}IsLoading(){return this._isLoading}AddLoadPromise(e){this._additionalLoadPromises.push(e)}_GetNextFamilyIndex(){return this._familyCount++}GetFamilyCount(){return this._familyCount}_AddEffectList(e){this._allEffectLists.push(e)}_GetAllEffectLists(){return this._allEffectLists}async _InitialiseCanvas(e){this._canvasManager&&(await this._canvasManager.CreateCanvas(e),this._canvasManager.InitLoadingScreen(this._loaderStyle))}async _MaybeLoadOpusDecoder(){if(this._assetManager.IsAudioFormatSupported("audio/webm; codecs=opus"))return;let e=null,a=null;try{this.IsWKWebView()?a=await this._assetManager.CordovaFetchLocalFileAsArrayBuffer(this._opusWasmBinaryUrl):e=await this._assetManager.FetchBlob(this._opusWasmBinaryUrl)}catch(e){return void console.info("Failed to fetch Opus decoder WASM; assuming project has no Opus audio.",e)}a?this.AddJobWorkerBuffer(a,"opus-decoder-wasm"):this.AddJobWorkerBlob(e,"opus-decoder-wasm"),await this.AddJobWorkerScripts([this._opusWasmScriptUrl])}async _WasmDecodeWebMOpus(e){const a=await this.AddJob("OpusDecode",{"arrayBuffer":e},[e]);return a}async Start(){if(this._hasStarted=!0,this._startTime=Date.now(),this._usesLoaderLayout){for(const e of this._allObjectClasses)e.IsFamily()||e.IsOnLoaderLayout()||!e.IsWorldType()||e.OnCreate();this._assetManager.WaitForAllToLoad().then(()=>{this._isLoading=!1,this._OnLoadFinished()})}else this._isLoading=!1;this._assetManager.SetInitialLoadFinished(),this.IsDebug()&&C3Debugger.RuntimeInit(a);for(const e of this._layoutManager.GetAllLayouts())e._CreateGlobalNonWorlds();const e=this._layoutManager.GetFirstLayout();await e._Load(null,this.GetWebGLRenderer()),await e._StartRunning(!0),this._fpsLastTime=performance.now(),this._usesLoaderLayout||this._OnLoadFinished();const n=await this.PostComponentMessageToDOMAsync("runtime","before-start-ticking");n["isSuspended"]?this._suspendCount++:this.Tick()}_OnLoadFinished(){this.Trigger(C3.Plugins.System.Cnds.OnLoadFinished,null),this.PostComponentMessageToDOM("runtime","register-sw")}GetObjectReference(e){if(e=Math.floor(e),0>e||e>=this._objectReferenceTable.length)throw new Error("invalid object reference");return this._objectReferenceTable[e]}HasDOM(){return this._hasDom}IsHeadless(){return this._isHeadless}IsInWorker(){return this._isInWorker}GetBaseURL(){return this._baseUrl}GetEventSheetManager(){return this._eventSheetManager}GetEventStack(){return this._eventSheetManager.GetEventStack()}GetCurrentEventStackFrame(){return this._eventSheetManager.GetCurrentEventStackFrame()}GetCurrentEvent(){return this._eventSheetManager.GetCurrentEvent()}GetCurrentCondition(){return this._eventSheetManager.GetCurrentCondition()}IsCurrentConditionFirst(){return 0===this.GetCurrentEventStackFrame().GetConditionIndex()}GetCurrentAction(){return this._eventSheetManager.GetCurrentAction()}GetPluginManager(){return this._pluginManager}GetSystemPlugin(){return this._pluginManager.GetSystemPlugin()}GetObjectClassByIndex(e){if(e=Math.floor(e),0>e||e>=this._allObjectClasses.length)throw new RangeError("invalid index");return this._allObjectClasses[e]}GetObjectClassByName(e){return this._objectClassesByName.get(e.toLowerCase())||null}GetObjectClassBySID(e){return this._objectClassesBySid.get(e)||null}GetSingleGlobalObjectClassByCtor(e){const a=this._pluginManager.GetPluginByConstructorFunction(e);return a?a.GetSingleGlobalObjectClass():null}GetAllObjectClasses(){return this._allObjectClasses}Dispatcher(){return this._dispatcher}GetOriginalViewportWidth(){return this._originalViewportWidth}GetOriginalViewportHeight(){return this._originalViewportHeight}SetOriginalViewportSize(e,a){this._originalViewportWidth=e,this._originalViewportHeight=a}GetViewportWidth(){return this._viewportWidth}GetViewportHeight(){return this._viewportHeight}SetViewportSize(e,a){this._viewportWidth=e,this._viewportHeight=a}GetParallaxXOrigin(){return this._parallaxXorigin}GetParallaxYOrigin(){return this._parallaxYorigin}GetCanvasManager(){return this._canvasManager}GetDrawWidth(){return this._canvasManager?this._canvasManager.GetDrawWidth():this._viewportWidth}GetDrawHeight(){return this._canvasManager?this._canvasManager.GetDrawHeight():this._viewportHeight}GetRenderScale(){return this._canvasManager?this._canvasManager.GetRenderScale():1}GetDisplayScale(){return this._canvasManager?this._canvasManager.GetDisplayScale():1}GetCanvasClientX(){return this._canvasManager?this._canvasManager.GetCanvasClientX():0}GetCanvasClientY(){return this._canvasManager?this._canvasManager.GetCanvasClientY():0}GetCanvasCssWidth(){return this._canvasManager?this._canvasManager.GetCssWidth():0}GetCanvasCssHeight(){return this._canvasManager?this._canvasManager.GetCssHeight():0}GetFullscreenMode(){return this._canvasManager?this._canvasManager.GetFullscreenMode():"off"}GetAdditionalRenderTarget(e){return this._canvasManager?this._canvasManager.GetAdditionalRenderTarget(e):null}ReleaseAdditionalRenderTarget(e){this._canvasManager&&this._canvasManager.ReleaseAdditionalRenderTarget(e)}_SetUsesAnyBackgroundBlending(e){this._usesAnyBackgroundBlending=!!e}UsesAnyBackgroundBlending(){return this._usesAnyBackgroundBlending}GetGPUUtilisation(){return this._canvasManager?this._canvasManager.GetGPUUtilisation():NaN}IsLinearSampling(){return this._isLinearSampling}UsesLoaderLayout(){return this._usesLoaderLayout}GetLayoutManager(){return this._layoutManager}GetMainRunningLayout(){return this._layoutManager.GetMainRunningLayout()}GetTimelineManager(){return this._timelineManager}GetAssetManager(){return this._assetManager}LoadImage(e){return this._assetManager.LoadImage(e)}CreateInstance(e,a,n,t){return this.CreateInstanceFromData(e,a,!1,n,t)}CreateInstanceFromData(e,a,n,t,s,i){let r=null,o=null;if(e instanceof C3.ObjectClass){if(o=e,o.IsFamily()){const e=o.GetFamilyMembers(),a=Math.floor(this.Random()*e.length);o=e[a]}r=o.GetDefaultInstanceData()}else r=e,o=this.GetObjectClassByIndex(r[1]);const d=o.GetPlugin().IsWorldType();if(this._isLoading&&d&&!o.IsOnLoaderLayout())return null;const _=a;d||(a=null);let l=n&&!i&&r&&!this._instancesByUid.has(r[2])?r[2]:this._nextUid++;const g=r?r[0]:null,u=C3.New(C3.Instance,{runtime:this,objectType:o,layer:a,worldData:g,instVarData:r?r[3]:null,uid:l});this._instancesByUid.set(l,u);let c=null;if(d&&(c=u.GetWorldInfo(),"undefined"!=typeof t&&"undefined"!=typeof s&&(c.SetX(t),c.SetY(s)),o._SetAnyCollisionCellChanged(!0)),a&&(a._AddInstance(u,!0),(1!==a.GetParallaxX()||1!==a.GetParallaxY())&&o._SetAnyInstanceParallaxed(!0),a.GetLayout().MaybeLoadTexturesFor(o)),(this._objectCount++,o.IsInContainer()&&!n&&!i)){for(const e of o.GetContainer().objectTypes()){if(e===o)continue;const a=this.CreateInstanceFromData(e,_,!1,c?c.GetX():t,c?c.GetY():s,!0);u._AddSibling(a)}for(const e of u.siblings()){e._AddSibling(u);for(const a of u.siblings())e!==a&&e._AddSibling(a)}}o._SetIIDsStale();const m=r?C3.cloneArray(r[5]):null,p=r?r[4].map((e)=>C3.cloneArray(e)):null;if(u._CreateSdkInstance(m,p),d&&g&&14===g.length){const e=g[13];u._SetHasTilemap(),u.GetSdkInstance().LoadTilemapData(e[2],e[0],e[1])}return this._instancesPendingCreate.push(u),this._hasPendingInstances=!0,this.IsDebug()&&C3Debugger.InstanceCreated(u),u}DestroyInstance(e){if(this._instancesToReleaseAtEndOfTick.has(e))return;const a=e.GetObjectClass();let n=this._instancesPendingDestroy.get(a);if(n){if(n.has(e))return;n.add(e)}else n=new Set,n.add(e),this._instancesPendingDestroy.set(a,n);if(this.IsDebug()&&C3Debugger.InstanceDestroyed(e),e._MarkDestroyed(),this._hasPendingInstances=!0,e.IsInContainer())for(const a of e.siblings())this.DestroyInstance(a);if(this._isFlushingPendingInstances&&C3.NotYetImplemented(),!this._layoutManager.IsEndingLayout()){const a=this.GetEventSheetManager();a.BlockFlushingInstances(!0),e._TriggerOnDestroyed(),a.BlockFlushingInstances(!1)}}FlushPendingInstances(){this._hasPendingInstances&&(this._isFlushingPendingInstances=!0,this._FlushInstancesPendingCreate(),this._FlushInstancesPendingDestroy(),this._isFlushingPendingInstances=!1,this._hasPendingInstances=!1,this.UpdateRender())}_FlushInstancesPendingCreate(){for(const e of this._instancesPendingCreate){const a=e.GetObjectClass();a._AddInstance(e);for(const n of a.GetFamilies())n._AddInstance(e),n._SetIIDsStale()}C3.clearArray(this._instancesPendingCreate)}_FlushInstancesPendingDestroy(){this._dispatcher.SetDelayRemoveEventsEnabled(!0);for(const[e,a]of this._instancesPendingDestroy.entries())this._FlushInstancesPendingDestroyForObjectClass(e,a),a.clear();this._instancesPendingDestroy.clear(),this._dispatcher.SetDelayRemoveEventsEnabled(!1)}_FlushInstancesPendingDestroyForObjectClass(e,a){C3.arrayRemoveAllInSet(e.GetInstances(),a),e._SetIIDsStale(),0===e.GetInstances().length&&e._SetAnyInstanceParallaxed(!1);for(const n of e.GetFamilies())C3.arrayRemoveAllInSet(n.GetInstances(),a),n._SetIIDsStale();if(e.GetPlugin().IsWorldType()){const e=new Set([...a].map((e)=>e.GetWorldInfo().GetLayer()));for(const n of e)n._RemoveAllInstancesInSet(a)}for(const n of a){const e=this._eventObjects["instancedestroy"];e.instance=n,this._dispatcher.dispatchEvent(e),this._instancesByUid.delete(n.GetUID());const a=n.GetWorldInfo();a&&(a._RemoveFromCollisionCells(),a._RemoveFromRenderCells()),this._instancesToReleaseAtEndOfTick.add(n),this._objectCount--}}_GetInstancesPendingCreate(){return this._instancesPendingCreate}_GetNewUID(){return this._nextUid++}_MapInstanceByUID(e,a){this._instancesByUid.set(e,a)}_OnWebGLContextLost(){this._dispatcher.dispatchEvent(C3.New(C3.Event,"webglcontextlost")),this.SetSuspended(!0);for(const e of this._allObjectClasses)!e.IsFamily()&&e.HasLoadedTextures()&&e.ReleaseTextures();this.GetMainRunningLayout()._OnWebGLContextLost(),C3.ImageInfo.OnWebGLContextLost(),C3.ImageAsset.OnWebGLContextLost()}async _OnWebGLContextRestored(){await this.GetMainRunningLayout()._Load(null,this.GetWebGLRenderer()),this._dispatcher.dispatchEvent(C3.New(C3.Event,"webglcontextrestored")),this.SetSuspended(!1),this.UpdateRender()}_OnVisibilityChange(a){this.SetSuspended(a["hidden"])}_OnWindowBlur(a){this.IsPreview()&&this._pauseOnBlur&&!C3.Platform.IsMobile&&(a.data["parentHasFocus"]||(this.SetSuspended(!0),this._isPausedOnBlur=!0))}_OnWindowFocus(){this._isPausedOnBlur&&(this.SetSuspended(!1),this._isPausedOnBlur=!1)}IsSuspended(){return 0this._suspendCount&&(this._suspendCount=0),!a&&n)console.log("[Construct 3] Suspending"),-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1),this._dispatcher.dispatchEvent(C3.New(C3.Event,"suspend")),this.Trigger(C3.Plugins.System.Cnds.OnSuspend,null);else if(a&&!n){console.log("[Construct 3] Resuming");const e=performance.now();this._lastTickTime=e,this._fpsLastTime=e,this._fpsFrameCount=0,this._fps=0,this._mainThreadTime=0,this._mainThreadTimeCounter=0,this._dispatcher.dispatchEvent(C3.New(C3.Event,"resume")),this.Trigger(C3.Plugins.System.Cnds.OnResume,null),this.HitBreakpoint()||this.Tick(e)}}_AddBehInstToTick(e){this._behInstsToTick.Add(e)}_AddBehInstToPostTick(e){this._behInstsToPostTick.Add(e)}_AddBehInstToTick2(e){this._behInstsToTick2.Add(e)}_RemoveBehInstToTick(e){this._behInstsToTick.Remove(e)}_RemoveBehInstToPostTick(e){this._behInstsToPostTick.Remove(e)}_RemoveBehInstToTick2(e){this._behInstsToTick2.Remove(e)}_BehaviorTick(){for(const e of this._behInstsToTick)e.Tick()}_BehaviorPostTick(){for(const e of this._behInstsToPostTick)e.PostTick()}_BehaviorTick2(){for(const e of this._behInstsToTick2)e.Tick2()}*_DebugBehaviorTick(){for(const e of this._behInstsToTick){const a=e.Tick();C3.IsIterator(a)&&(yield*a)}}*_DebugBehaviorPostTick(){for(const e of this._behInstsToPostTick){const a=e.PostTick();C3.IsIterator(a)&&(yield*a)}}*_DebugBehaviorTick2(){for(const e of this._behInstsToTick2){const a=e.Tick2();C3.IsIterator(a)&&(yield*a)}}async Tick(e,a){if(this._rafId=-1,this._hasStartedTicking=!0,this._hasStarted&&(!this.IsSuspended()||a)){const a=performance.now();this._isInTick=!0,e||(e=a),await this.Step(e),this.Render(),this.IsSuspended()||(this._rafId=self.requestAnimationFrame(this._tickCallback)),this._tickCount++,this._tickCountNoSave++,this._execCount++,this._isInTick=!1,this._mainThreadTimeCounter+=performance.now()-a}}async Step(e){const a=this._eventSheetManager,n=this._dispatcher,t=this._eventObjects,s=this.IsDebug(),i=this.IsDebugging();if(this._MeasureDt(e),this.FlushPendingInstances(),a.BlockFlushingInstances(!0),this.PushCurrentLayout(this.GetMainRunningLayout()),s&&C3Debugger.StartMeasuringTime(),i?await a.DebugRunScheduledWaits():a.RunScheduledWaits(),s&&C3Debugger.AddEventsTime(),this.PopCurrentLayout(),a.BlockFlushingInstances(!1),this.FlushPendingInstances(),a.BlockFlushingInstances(!0),await n.dispatchEventAndWaitAsync(t["pretick"]),s&&C3Debugger.StartMeasuringTime(),i?await this.DebugIterateAndBreak(this._DebugBehaviorTick()):this._BehaviorTick(),i?await this.DebugIterateAndBreak(this._DebugBehaviorPostTick()):this._BehaviorPostTick(),s&&C3Debugger.AddBehaviorTickTime(),s&&C3Debugger.StartMeasuringTime(),i?await this.DebugFireGeneratorEventAndBreak(t["tick"]):n.dispatchEvent(t["tick"]),s&&C3Debugger.AddPluginTickTime(),a.BlockFlushingInstances(!1),this._NeedsHandleSaveOrLoad()&&(await this._HandleSaveOrLoad()),this.GetLayoutManager().IsPendingChangeMainLayout()&&(await this._MaybeChangeLayout()),s&&C3Debugger.StartMeasuringTime(),i?await a.DebugRunEvents(this._layoutManager):a.RunEvents(this._layoutManager),s&&C3Debugger.AddEventsTime(),this._collisionEngine.ClearRegisteredCollisions(),0a++;)await this._DoChangeLayout(e.GetPendingChangeMainLayout())}_MeasureDt(e){if(0!==this._lastTickTime){const a=Math.max(e-this._lastTickTime,0);this._dt1=a/1e3;const n=1/this._minimumFramerate;.5n&&(this._dt1=n)}this._lastTickTime=e,this._dt=this._dt1*this._timeScale,this._gameTime.Add(this._dt),this._wallTime.Add(this._dt1),this._canvasManager&&this._canvasManager._UpdateTick(),1e3<=e-this._fpsLastTime&&(this._fpsLastTime+=1e3,1e3<=e-this._fpsLastTime&&(this._fpsLastTime=e),this._fps=this._fpsFrameCount,this._fpsFrameCount=0,this._mainThreadTime=Math.min(this._mainThreadTimeCounter/1e3,1),this._mainThreadTimeCounter=0,this._canvasManager&&this._canvasManager._Update1sFrameRange(),this._collisionEngine._Update1sStats(),this.IsDebug()&&C3Debugger.Update1sPerfStats()),this._fpsFrameCount++}async _DoChangeLayout(e){const a=this._dispatcher,n=this.GetLayoutManager(),t=n.GetMainRunningLayout();await t._StopRunning(),t._Unload(e,this.GetWebGLRenderer()),t===e&&this._eventSheetManager.ClearAllScheduledWaits(),this._collisionEngine.ClearRegisteredCollisions(),a.dispatchEvent(this._eventObjects["beforelayoutchange"]),await e._Load(t,this.GetWebGLRenderer()),await e._StartRunning(!1),a.dispatchEvent(this._eventObjects["layoutchange"]),this.UpdateRender(),this._isLayoutFirstTick=!0,this.FlushPendingInstances()}UpdateRender(){this._needRender=!0}GetWebGLRenderer(){return this._canvasManager?this._canvasManager.GetWebGLRenderer():null}Render(){if(!this._canvasManager||this._canvasManager.IsWebGLContextLost())return;const e=this.GetWebGLRenderer();if(e.CheckForQueryResults(),!this._needRender)return void e.IncrementFrameNumber();const a=this.IsDebug();a&&C3Debugger.StartMeasuringTime(),this._needRender=!1;let n=null;e.SupportsGPUProfiling()&&(n=this._canvasManager.GetGPUFrameTimingsBuffer().AddTimeElapsedQuery(),e.StartQuery(n)),e.SetTextureFillMode(),e.SetAlphaBlend(),e.SetColorRgba(1,1,1,1),e.SetRenderTarget(null),e.SetTexture(null);const t=this._layoutManager.GetMainRunningLayout();t.Draw(e),n&&e.EndQuery(n),e.Finish(),a&&(C3Debugger.AddDrawCallsTime(),C3Debugger.UpdateInspectHighlight()),this._canvasManager&&this._canvasManager._MaybeTakeSnapshot()}Trigger(e,a){if(!this._hasStarted)return!1;const n=!this._isInTick&&!this._eventSheetManager.IsInTrigger();let t=0;n&&(t=performance.now());const s=this.IsDebug();s&&this.SetDebuggingEnabled(!1);const i=this._eventSheetManager._Trigger(this._layoutManager,e,a);if(n){const e=performance.now()-t;this._mainThreadTimeCounter+=e,s&&C3Debugger.AddTriggersTime(e)}return s&&this.SetDebuggingEnabled(!0),i}DebugTrigger(e,a){if(!this.IsDebug())return this.Trigger(e,a);if(this.HitBreakpoint())throw new Error("called DebugTrigger() while stopped on breakpoint");if(!this._isInTick&&!this._eventSheetManager.IsInTrigger())throw new Error("called DebugTrigger() outside of event code - use TriggerAsync() instead");return this._eventSheetManager._DebugTrigger(this._layoutManager,e,a)}async TriggerAsync(e,a){if(!this.IsDebugging())return this.Trigger(e,a);if(!this._hasStarted)return!1;if(this.HitBreakpoint())return this._eventSheetManager.QueueDebugTrigger(e,a);if(!this.GetMainRunningLayout())return this._eventSheetManager.QueueTrigger(e,a);const n=performance.now(),t=this._eventSheetManager._DebugTrigger(this._layoutManager,e,a);let s=t.next();for(;!s.done;)await this.DebugBreak(s.value),s=t.next();return this.IsSuspended()||this._eventSheetManager.IsInTrigger()||(await this._eventSheetManager.RunQueuedDebugTriggersAsync(),this._hasStartedTicking&&-1===this._rafId&&!this._isInTick&&(this._rafId=self.requestAnimationFrame(this._tickCallback))),this._mainThreadTimeCounter+=performance.now()-n,s.value}FastTrigger(e,a,n){const t=this.IsDebug();t&&this.SetDebuggingEnabled(!1);const s=this._eventSheetManager._FastTrigger(this._layoutManager,e,a,n);return t&&this.SetDebuggingEnabled(!0),s}DebugFastTrigger(e,a,n){return this._eventSheetManager._DebugFastTrigger(this._layoutManager,e,a,n)}PushCurrentLayout(e){this._currentLayoutStack.push(e)}PopCurrentLayout(){if(!this._currentLayoutStack.length)throw new Error("layout stack empty");this._currentLayoutStack.pop()}GetCurrentLayout(){if(!this._currentLayoutStack.length)throw new Error("no current layout");return this._currentLayoutStack[this._currentLayoutStack.length-1]}GetDt(e){return e&&-1!==e.GetTimeScale()?this._dt1*e.GetTimeScale():this._dt}_GetDtFast(){return this._dt}GetDt1(){return this._dt1}GetTimeScale(){return this._timeScale}SetTimeScale(e){(isNaN(e)||0>e)&&(e=0),this._timeScale=e}SetMinimumFramerate(e){this._minimumFramerate=C3.clamp(e,1,120)}GetMinimumFramerate(){return this._minimumFramerate}GetFPS(){return this._fps}GetMainThreadTime(){return this._mainThreadTime}GetStartTime(){return this._startTime}GetGameTime(){return this._gameTime.Get()}GetWallTime(){return this._wallTime.Get()}GetTickCount(){return this._tickCount}GetTickCountNoSave(){return this._tickCountNoSave}IncrementExecCount(){++this._execCount}GetExecCount(){return this._execCount}GetObjectCount(){return this._objectCount}GetProjectName(){return this._projectName}GetProjectVersion(){return this._projectVersion}GetProjectUniqueId(){return this._projectUniqueId}GetInstanceByUID(e){if(this._isLoadingState)throw new Error("cannot call while loading state - wait until afterload event");return this._instancesByUid.get(e)||null}_RefreshUidMap(){this._instancesByUid.clear();for(const e of this._allObjectClasses)if(!e.IsFamily())for(const a of e.GetInstances())this._instancesByUid.set(a.GetUID(),a)}IsPreview(){return"preview"===this._exportType}IsDebug(){return this._isDebug}GetExportType(){return this._exportType}IsCordova(){return"cordova"===this._exportType}IsWKWebView(){return this._isWKWebView}GetCollisionEngine(){return this._collisionEngine}GetSolidBehavior(){return this._pluginManager.GetSolidBehavior()}GetJumpthruBehavior(){return this._pluginManager.GetJumpthruBehavior()}IsLayoutFirstTick(){return this._isLayoutFirstTick}SetPixelRoundingEnabled(a){a=!!a;this._isPixelRoundingEnabled===a||(this._isPixelRoundingEnabled=a,this.UpdateRender())}IsPixelRoundingEnabled(){return this._isPixelRoundingEnabled}SaveToSlot(e){this._saveToSlotName=e}LoadFromSlot(e){this._loadFromSlotName=e}LoadFromJsonString(e){this._loadFromJson=e}GetLastSaveJsonString(){return this._lastSaveJson}_NeedsHandleSaveOrLoad(){return!!(this._saveToSlotName||this._loadFromSlotName||null!==this._loadFromJson)}async _HandleSaveOrLoad(){if(this._saveToSlotName&&(this.FlushPendingInstances(),await this._DoSaveToSlot(this._saveToSlotName),this._ClearSaveOrLoad()),this._loadFromSlotName&&(await this._DoLoadFromSlot(this._loadFromSlotName),this._ClearSaveOrLoad(),this.IsDebug()&&C3Debugger.StepIfPausedInDebugger()),null!==this._loadFromJson){this.FlushPendingInstances();try{await this._DoLoadFromJsonString(this._loadFromJson),this._lastSaveJson=this._loadFromJson,await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to load state from JSON string: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}this._ClearSaveOrLoad()}}_ClearSaveOrLoad(){this._saveToSlotName="",this._loadFromSlotName="",this._loadFromJson=null}_GetSavegamesStorage(){return this._savegamesStorage||(this._savegamesStorage=localforage.createInstance({name:"c3-savegames-"+this.GetProjectUniqueId(),description:this.GetProjectName()})),this._savegamesStorage}async _DoSaveToSlot(e){const a=this._SaveToJsonString();try{await this._GetSavegamesStorage().setItem(e,a),console.log("[Construct 3] Saved state to storage ("+a.length+" chars)"),this._lastSaveJson=a,await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to save state to storage: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveFailed,null)}}async _DoLoadFromSlot(e){try{const a=await this._GetSavegamesStorage().getItem(e);if(!a)throw new Error("empty slot");console.log("[Construct 3] Loaded state from storage ("+a.length+" chars)"),await this._DoLoadFromJsonString(a),this._lastSaveJson=a,await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to load state from storage: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}}_SaveToJsonString(){const e={"c3save":!0,"version":1,"rt":{"time":this.GetGameTime(),"walltime":this.GetWallTime(),"timescale":this.GetTimeScale(),"tickcount":this.GetTickCount(),"execcount":this.GetExecCount(),"next_uid":this._nextUid,"running_layout":this.GetMainRunningLayout().GetSID(),"start_time_offset":Date.now()-this._startTime},"types":{},"layouts":{},"events":this._eventSheetManager._SaveToJson()};for(const a of this._allObjectClasses)a.IsFamily()||a.HasNoSaveBehavior()||(e["types"][a.GetSID().toString()]=a._SaveToJson());for(const a of this._layoutManager.GetAllLayouts())e["layouts"][a.GetSID().toString()]=a._SaveToJson();return JSON.stringify(e)}IsLoadingState(){return this._isLoadingState}_TriggerOnCreateAfterLoad(e){C3.shallowAssignArray(this._triggerOnCreateAfterLoad,e)}async _DoLoadFromJsonString(e){const a=JSON.parse(e);if(a["c2save"])throw new Error("C2 saves are incompatible with C3 runtime");if(!a["c3save"])throw new Error("not valid C3 save data");if(1n||n>=s.length)throw new Error("missing sibling instance");e._AddSibling(s[n])}}this._dispatcher.dispatchEvent(C3.New(C3.Event,"afterload")),this.UpdateRender()}async AddJobWorkerScripts(e){const a=await Promise.all(e.map((e)=>this._assetManager.FetchBlob(e))),n=a.map((e)=>URL.createObjectURL(e));this._jobScheduler.ImportScriptsToJobWorkers(n)}AddJobWorkerBlob(e,a){this._jobScheduler.SendBlobToJobWorkers(e,a)}AddJobWorkerBuffer(e,a){this._jobScheduler.SendBufferToJobWorkers(e,a)}AddJob(e,a,n){return this._jobScheduler.AddJob(e,a,n)}BroadcastJob(e,a,n){return this._jobScheduler.BroadcastJob(e,a,n)}InvokeDownload(e,a){this.PostComponentMessageToDOM("runtime","invoke-download",{"url":e,"filename":a})}async RasterSvgImage(e,a,n){if(this.IsInWorker())return await this.PostComponentMessageToDOMAsync("runtime","raster-svg-image",{"blob":e,"width":a,"height":n});else{const t=await C3.BlobToImage(e);return await self["C3_RasterSvgImage"](t,a,n)}}Random(){return this._randomNumberCallback()}SetRandomNumberGeneratorCallback(e){this._randomNumberCallback=e}HitBreakpoint(){return!!this.IsDebug()&&C3Debugger.HitBreakpoint()}DebugBreak(e){return this.IsDebugging()?C3Debugger.DebugBreak(e):Promise.resolve()}DebugBreakNext(){return!!this.IsDebugging()&&C3Debugger.BreakNext()}SetDebugBreakpointsEnabled(a){this._breakpointsEnabled=!!a,this._UpdateDebuggingFlag()}AreDebugBreakpointsEnabled(){return this._breakpointsEnabled}IsDebugging(){return this._isDebugging}SetDebuggingEnabled(e){e?this._debuggingDisabled--:this._debuggingDisabled++,this._UpdateDebuggingFlag()}_UpdateDebuggingFlag(){this._isDebugging=this.IsDebug()&&this._breakpointsEnabled&&0===this._debuggingDisabled}IsCPUProfiling(){return this.IsDebug()&&C3Debugger.IsCPUProfiling()}IsGPUProfiling(){return this.IsDebug()&&this.GetWebGLRenderer().SupportsGPUProfiling()&&C3Debugger.IsGPUProfiling()}async DebugIterateAndBreak(e){if(e)for(const a of e)await this.DebugBreak(a)}DebugFireGeneratorEventAndBreak(e){return this.DebugIterateAndBreak(this._dispatcher.dispatchGeneratorEvent(e))}},self["C3_CreateRuntime"]=C3.Runtime.Create,self["C3_InitRuntime"]=(e,a)=>e.Init(a)} + +// c3/workers/jobSchedulerRuntime.js +"use strict";C3.JobSchedulerRuntime=class extends C3.DefendedBase{constructor(a,b){super(),this._runtime=a,this._jobPromises=new Map,this._nextJobId=0,this._inputPort=b["inputPort"],b["outputPort"].onmessage=(a)=>this._OnJobWorkerMessage(a),this._maxNumWorkers=b["maxNumWorkers"],this._jobWorkerCount=1,this._isCreatingWorker=!1,this._hadErrorCreatingWorker=!1,this._isBroken=!1,this._testOkResolve=null}async Init(){await this._TestMessageChannelWorks()}ImportScriptsToJobWorkers(a){this._isBroken||this._inputPort.postMessage({"type":"_import_scripts","scripts":a})}SendBlobToJobWorkers(a,b){this._isBroken||this._inputPort.postMessage({"type":"_send_blob","blob":a,"id":b})}SendBufferToJobWorkers(a,b){this._isBroken||this._inputPort.postMessage({"type":"_send_buffer","buffer":a,"id":b},[a])}AddJob(a,b,c,d,e){if(this._isBroken)return Promise.reject("messagechannels broken");c||(c=[]);const f=this._nextJobId++,g={"type":a,"isBroadcast":!1,"jobId":f,"params":b,"transferables":c},h=new Promise((a,b)=>{this._jobPromises.set(f,{resolve:a,progress:d,reject:b,cancelled:!1})});return e&&e.SetAction(()=>this._CancelJob(f)),this._inputPort.postMessage(g,c),this._MaybeCreateExtraWorker(),h}BroadcastJob(a,b,c){if(!this._isBroken){c||(c=[]);const d=this._nextJobId++,e={"type":a,"isBroadcast":!0,"jobId":d,"params":b,"transferables":c};this._inputPort.postMessage(e,c)}}_CancelJob(a){const b=this._jobPromises.get(a);b&&(b.cancelled=!0,b.resolve=null,b.progress=null,b.reject=null,this._inputPort.postMessage({"type":"_cancel","jobId":a}))}_OnJobWorkerMessage(a){const b=a.data,c=b["type"],d=b["jobId"];switch(c){case"result":this._OnJobResult(d,b["result"]);break;case"progress":this._OnJobProgress(d,b["progress"]);break;case"error":this._OnJobError(d,b["error"]);break;case"ready":this._OnJobWorkerReady();break;case"_testMessageChannelOk":this._OnTestMessageChannelOk();break;default:throw new Error(`unknown message from worker '${c}'`);}}_OnJobResult(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");c.cancelled||c.resolve(b),this._jobPromises.delete(a)}_OnJobProgress(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");!c.cancelled&&c.progress&&c.progress(b)}_OnJobError(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");c.cancelled||c.reject(b),this._jobPromises.delete(a)}_OnJobWorkerReady(){this._isCreatingWorker&&(this._isCreatingWorker=!1,this._jobWorkerCount++,this._jobWorkerCount=this._maxNumWorkers||this._isCreatingWorker||this._hadErrorCreatingWorker||this._jobPromises.size<=this._jobWorkerCount))try{this._isCreatingWorker=!0;const a=await this._runtime.PostComponentMessageToDOMAsync("runtime","create-job-worker");a["outputPort"].onmessage=(a)=>this._OnJobWorkerMessage(a)}catch(a){this._hadErrorCreatingWorker=!0,this._isCreatingWorker=!1,console.error(`[Construct 3] Failed to create job worker; stopping creating any more (created ${this._jobWorkerCount} so far)`,a)}}_TestMessageChannelWorks(){return this._inputPort.postMessage({"type":"_testMessageChannel"}),self.setTimeout(()=>this._CheckMessageChannelTestTimedOut(),2e3),new Promise((a)=>this._testOkResolve=a)}_OnTestMessageChannelOk(){this._testOkResolve(),this._testOkResolve=null}_CheckMessageChannelTestTimedOut(){this._testOkResolve&&(console.warn("MessageChannel determined to be broken. Job scheduler disabled."),this._isBroken=!0,this._testOkResolve(),this._testOkResolve=null)}}; + +self["C3_Shaders"] = {}; + + +"use strict";{function a(c,a){const b=c[1],d=a[1];if("number"==typeof b&&"number"==typeof d)return b-d;else{const a=""+b,c=""+d;return ac?1:0}}let b=null,c="",d="",e=[],f="",g="",h="";const i=C3.New(C3.ArrayStack);C3.Plugins.System=class extends C3.SDKPluginBase{constructor(a){super(a),this._loopStack=this._runtime.GetEventSheetManager().GetLoopStack(),this._imagesLoadingTotal=0,this._imagesLoadingComplete=0}Release(){super.Release()}UpdateRender(){this._runtime.UpdateRender()}Trigger(a){this._runtime.Trigger(a,null)}GetRegex(a,e){return b&&a===c&&e===d||(b=new RegExp(a,e),c=a,d=e),b.lastIndex=0,b}GetRegexMatches(a,b,c){if(a===f&&b===g&&c===h)return e;const d=this.GetRegex(b,c);return e=a.match(d),f=a,g=b,h=c,e}async _LoadTexturesForObjectClasses(a,b){if(b.length){this._imagesLoadingTotal+=b.length;const c=[];for(const d of b)c.push(a.MaybeLoadTexturesFor(d));await C3.PromiseAllWithProgress(c,()=>{this._imagesLoadingComplete++}),this._imagesLoadingComplete++,this._imagesLoadingComplete===this._imagesLoadingTotal&&(this._runtime.Trigger(C3.Plugins.System.Cnds.OnImageLoadingComplete,null),this._imagesLoadingComplete=0,this._imagesLoadingTotal=0)}}_UnloadTexturesForObjectClasses(a,b){for(const c of b)0===c.GetInstanceCount()&&a.MaybeUnloadTexturesFor(c)}_GetForEachStack(){return i}_Repeat(a){const b=this._runtime.GetEventSheetManager(),c=b.GetEventStack(),d=c.GetCurrentStackFrame(),e=d.GetCurrentEvent(),f=e.GetSolModifiers(),g=d.IsSolModifierAfterCnds(),h=c.Push(e),i=b.GetLoopStack(),j=i.Push();if(j.SetEnd(a),g)for(let c=0;c=c&&!l.IsStopped();--a)d.PushCopySol(h),l.SetIndex(a),g.Retrigger(f,j),d.PopSol(h);else for(let a=b;a>=c&&!l.IsStopped();--a)l.SetIndex(a),g.Retrigger(f,j);}else if(i)for(let a=b;a<=c&&!l.IsStopped();++a)d.PushCopySol(h),l.SetIndex(a),g.Retrigger(f,j),d.PopSol(h);else for(let a=b;a<=c&&!l.IsStopped();++a)l.SetIndex(a),g.Retrigger(f,j);return e.Pop(),k.Pop(),!1}*_DebugFor(a,b,c){const d=this._runtime.GetEventSheetManager(),e=d.GetEventStack(),f=e.GetCurrentStackFrame(),g=f.GetCurrentEvent(),h=g.GetSolModifiers(),i=f.IsSolModifierAfterCnds(),j=e.Push(g),k=d.GetLoopStack(),l=k.Push();if(l.SetName(a),l.SetEnd(c),c=c&&!l.IsStopped();--a)d.PushCopySol(h),l.SetIndex(a),yield*g.DebugRetrigger(f,j),d.PopSol(h);else for(let a=b;a>=c&&!l.IsStopped();--a)l.SetIndex(a),yield*g.DebugRetrigger(f,j);}else if(i)for(let a=b;a<=c&&!l.IsStopped();++a)d.PushCopySol(h),l.SetIndex(a),yield*g.DebugRetrigger(f,j),d.PopSol(h);else for(let a=b;a<=c&&!l.IsStopped();++a)l.SetIndex(a),yield*g.DebugRetrigger(f,j);return e.Pop(),k.Pop(),!1}_ForEach(a){const b=this._runtime.GetEventSheetManager(),c=b.GetEventStack(),d=c.GetCurrentStackFrame(),e=d.GetCurrentEvent(),f=e.GetSolModifiers(),g=d.IsSolModifierAfterCnds(),h=c.Push(e),j=b.GetLoopStack(),k=j.Push(),l=a.IsInContainer(),m=a.GetCurrentSol(),n=i.Push();if(C3.shallowAssignArray(n,m.GetInstances()),k.SetEnd(n.length),g)for(let c=0,g=n.length;c=d+f?(c.set("Every_lastTime",d+f),e>=c.get("Every_lastTime")+.04&&c.set("Every_lastTime",e),c.set("Every_seconds",a),!0):(e=d&&c<=a},CompareVar(a,b,c){return C3.compare(a.GetValue(),b,c)},CompareBoolVar(a){return!!a.GetValue()},CompareTime(a,b){const c=this._runtime.GetGameTime();if(0===a){const a=this._runtime.GetCurrentCondition(),d=a.GetSavedDataMap();return!(d.get("CompareTime_executed")||!(c>=b))&&(d.set("CompareTime_executed",!0),!0)}return C3.compare(c,a,b)},IsNaN(a){return isNaN(a)},AngleWithin(a,b,c){return C3.angleDiff(C3.toRadians(a),C3.toRadians(c))<=C3.toRadians(b)},IsClockwiseFrom(a,b){return C3.angleClockwise(C3.toRadians(a),C3.toRadians(b))},IsBetweenAngles(b,a,c){let d=C3.toRadians(b),e=C3.toRadians(a),f=C3.toRadians(c),g=!C3.angleClockwise(f,e);return g?C3.angleClockwise(d,e)||!C3.angleClockwise(d,f):C3.angleClockwise(d,e)&&!C3.angleClockwise(d,f)},IsValueType(a,b){return"number"==typeof a?0===b:1===b},PickByComparison(a,b,c,d){if(!a)return!1;const e=this._GetForEachStack(),f=e.Push(),g=a.GetCurrentSol();C3.shallowAssignArray(f,g.GetInstances()),g.IsSelectAll()&&C3.clearArray(g._GetOwnElseInstances());const h=this._runtime.GetCurrentCondition();let j=0;for(let e=0,i=f.length;e=d.length)return!1;const e=d[b];return c.PickOne(e),a.ApplySolToContainer(),!0},PickRandom(a){if(!a)return!1;const b=a.GetCurrentSol(),c=b.GetInstances(),d=Math.floor(this._runtime.Random()*c.length);if(d>=c.length)return!1;const e=c[d];return b.PickOne(e),a.ApplySolToContainer(),!0},PickAll(a){if(!a)return!1;if(!a.GetInstanceCount())return!1;const b=a.GetCurrentSol();return b._SetSelectAll(!0),a.ApplySolToContainer(),!0},PickOverlappingPoint(b,c,d){if(!b)return!1;const e=b.GetCurrentSol(),f=e.GetInstances(),g=this._runtime.GetCurrentEvent(),h=g.IsOrBlock(),j=this._runtime.GetCurrentCondition().IsInverted();e.IsSelectAll()?(C3.shallowAssignArray(a,f),e.ClearArrays(),e._SetSelectAll(!1)):h?(C3.shallowAssignArray(a,e._GetOwnElseInstances()),C3.clearArray(e._GetOwnElseInstances())):(C3.shallowAssignArray(a,e._GetOwnInstances()),C3.clearArray(e._GetOwnInstances()));for(let f=0,g=a.length;fb&&(b=0),!!a){const c=a.GetCurrentSol(),d=c.GetInstances();for(const a of d)a.SetTimeScale(b)}},RestoreObjectTimescale(a){if(a){const b=a.GetCurrentSol(),c=b.GetInstances();for(const a of c)a.RestoreTimeScale()}},Wait(a){if(!(0>a))return this._runtime.GetEventSheetManager().AddScheduledWait().InitTimer(a),!0},WaitForSignal(a){return this._runtime.GetEventSheetManager().AddScheduledWait().InitSignal(a),!0},Signal(a){const b=a.toLowerCase();for(const c of this._runtime.GetEventSheetManager().scheduledWaits())c.IsSignal()&&c.GetSignalTag()===b&&c.SetSignalled()},SnapshotCanvas(a,b){const c=this._runtime.GetCanvasManager();c&&(c.SnapshotCanvas(0===a?"image/png":"image/jpeg",b/100).then(()=>this._runtime.TriggerAsync(C3.Plugins.System.Cnds.OnCanvasSnapshot,null)),this.UpdateRender())},SetCanvasSize(a,b){if(!(0>=a||0>=b)){this._runtime.SetViewportSize(a,b);const c=this._runtime.GetCanvasManager();c&&("off"===c.GetCurrentFullscreenMode()?c.SetSize(c.GetLastWidth(),c.GetLastHeight(),!0):(this._runtime.SetOriginalViewportSize(a,b),c.SetSize(c.GetLastWidth(),c.GetLastHeight(),!0)),this._runtime.UpdateRender())}},SetFullscreenQuality(a){const b=this._runtime.GetCanvasManager();b&&"off"!==b.GetCurrentFullscreenMode()&&(b.SetFullscreenScalingQuality(0===a?"low":"high"),b.SetSize(b.GetLastWidth(),b.GetLastHeight(),!0))},SaveState(a){this._runtime.SaveToSlot(a)},LoadState(a){this._runtime.LoadFromSlot(a)},LoadStateJSON(a){this._runtime.LoadFromJsonString(a)},SetHalfFramerateMode(){},ResetPersisted(){for(const a of this._runtime.GetLayoutManager().GetAllLayouts())a.ResetPersistData()},SetPixelRounding(a){this._runtime.SetPixelRoundingEnabled(0!==a)},SetMinimumFramerate(a){this._runtime.SetMinimumFramerate(a)},SortZOrderByInstVar(e,f){if(e){const g=e.GetCurrentSol(),h=g.GetInstances(),j=c,k=d,l=this._runtime.GetCurrentLayout(),m=e.IsFamily(),n=e.GetFamilyIndex();for(let a=0,b=h.length;ac||c>=b.length)){const a=g.GetShaderProgram().GetParameterType(c);if("color"===a){e.setFromRgbValue(d);const a=b[c];if(e.equalsIgnoringAlpha(a))return;a.copyRgb(e)}else{if("percent"===a&&(d/=100),b[c]===d)return;b[c]=d}g.IsActive()&&this._runtime.UpdateRender()}}}},SetLayerForceOwnTexture(a,b){a&&(b=!!b,a.IsForceOwnTexture()===b||(a.SetForceOwnTexture(b),this.UpdateRender()))},SetLayoutScale(a){const b=this._runtime.GetCurrentLayout();b.GetScale()===a||(b.SetScale(a),this.UpdateRender())},SetLayoutAngle(b){b=C3.clampAngle(C3.toRadians(+b));const c=this._runtime.GetCurrentLayout();c.GetAngle()===b||(c.SetAngle(b),this.UpdateRender())},SetLayoutEffectEnabled(a,b){const c=this._runtime.GetCurrentLayout(),d=c.GetEffectList(),f=d.GetEffectTypeByName(b);if(f){const b=1===a;f.IsActive()===b||(f.SetActive(b),d.UpdateActiveEffects(),this._runtime.UpdateRender())}},SetLayoutEffectParam(a,b,c){const d=this._runtime.GetCurrentLayout(),f=d.GetEffectList(),g=f.GetEffectTypeByName(a);if(g){const a=g.GetIndex(),d=f.GetEffectParametersForIndex(a);if(b=Math.floor(b),!(0>b||b>=d.length)){const a=g.GetShaderProgram().GetParameterType(b);if("color"===a){e.setFromRgbValue(c);const a=d[b];if(e.equalsIgnoringAlpha(a))return;a.copyRgb(e)}else{if("percent"===a&&(c/=100),d[b]===c)return;d[b]=c}g.IsActive()&&this._runtime.UpdateRender()}}},ScrollX(a){const b=this._runtime.GetCurrentLayout();b.SetScrollX(a)},ScrollY(a){const b=this._runtime.GetCurrentLayout();b.SetScrollY(a)},Scroll(a,b){const c=this._runtime.GetCurrentLayout();c.SetScrollX(a),c.SetScrollY(b)},ScrollToObject(a){if(a){const b=a.GetFirstPicked();if(b){const a=b.GetWorldInfo();if(a){const b=this._runtime.GetCurrentLayout();b.SetScrollX(a.GetX()),b.SetScrollY(a.GetY())}}}},LoadObjectTextures(a){const b=this._runtime.GetMainRunningLayout();if(b&&a&&!this._runtime.IsLoading()){const c=a.IsFamily()?a.GetFamilyMembers():[a];this._LoadTexturesForObjectClasses(b,c)}},LoadObjectTexturesByName(a){C3.Plugins.System.Acts.LoadObjectTextures.call(this,this._runtime.GetObjectClassByName(a))},UnloadObjectTextures(a){const b=this._runtime.GetMainRunningLayout();if(b&&a){const c=a.IsFamily()?a.GetFamilyMembers():[a];this._UnloadTexturesForObjectClasses(b,c)}},UnloadObjectTexturesByName(a){C3.Plugins.System.Acts.UnloadObjectTexturesByName.call(this,this._runtime.GetObjectClassByName(a))},UnloadUnusedTextures(){const a=this._runtime.GetMainRunningLayout();if(a){const b=a._GetTextureLoadedObjectTypes();this._UnloadTexturesForObjectClasses(a,b)}},LoadLayoutTextures(a){const b=this._runtime.GetMainRunningLayout();a&&b&&!this._runtime.IsLoading()&&this._LoadTexturesForObjectClasses(b,a._GetInitialObjectClasses())},LoadLayoutTexturesByName(a){const b=this._runtime.GetMainRunningLayout(),c=this._runtime.GetLayoutManager().GetLayoutByName(a);c&&b&&!this._runtime.IsLoading()&&this._LoadTexturesForObjectClasses(b,c._GetInitialObjectClasses())}}} + +"use strict";C3.Plugins.System.Exps={int:function(a){return"string"==typeof a&&(a=parseInt(a,10),isNaN(a)&&(a=0)),Math.floor(a)},float:function(a){return"string"==typeof a&&(a=parseFloat(a),isNaN(a)&&(a=0)),a},str(a){return a.toString()},len(a){return"string"==typeof a?a.length:0},random(c,a){return"undefined"==typeof a?this._runtime.Random()*c:this._runtime.Random()*(a-c)+c},choose(...a){const b=Math.floor(this._runtime.Random()*a.length);return a[b]},pi(){return Math.PI},infinity(){return 1/0},sqrt(a){return Math.sqrt(a)},abs(a){return Math.abs(a)},round(a){return Math.round(a)},floor(a){return Math.floor(a)},ceil(a){return Math.ceil(a)},sign(a){return Math.sign(a)},sin(a){return Math.sin(C3.toRadians(a))},cos(a){return Math.cos(C3.toRadians(a))},tan(a){return Math.tan(C3.toRadians(a))},asin(a){return C3.toDegrees(Math.asin(a))},acos(a){return C3.toDegrees(Math.acos(a))},atan(a){return C3.toDegrees(Math.atan(a))},exp(a){return Math.exp(a)},ln(a){return Math.log(a)},log10(a){return Math.log(a)/Math.LN10},max(...a){let b=a[0];"number"!=typeof b&&(b=0);for(let c,d=1,e=a.length;dc&&(b=c);return b},clamp(a,b,c){return C3.clamp(a,b,c)},distance(a,b,c,d){return C3.distanceTo(a,b,c,d)},angle(a,b,c,d){return C3.toDegrees(C3.angleTo(a,b,c,d))},lerp(c,a,b){return C3.lerp(c,a,b)},unlerp(c,a,b){return C3.unlerp(c,a,b)},qarp(d,a,b,c){return C3.qarp(d,a,b,c)},cubic(e,a,b,c,d){return C3.cubic(e,a,b,c,d)},cosp(c,a,b){return C3.cosp(c,a,b)},anglediff(c,a){return C3.toDegrees(C3.angleDiff(C3.toRadians(c),C3.toRadians(a)))},anglelerp(c,a,b){return C3.toDegrees(C3.angleLerp(C3.toRadians(c),C3.toRadians(a),b))},anglerotate(d,a,b){return C3.toDegrees(C3.angleRotate(C3.toRadians(d),C3.toRadians(a),C3.toRadians(b)))},setbit(a,c,b){return a|=0,c|=0,b=0===b?0:1,a&~(1<b||b>=d.length?"":d[b]},tokencount(a,b){return"string"==typeof a&&"string"==typeof b&&a.length?a.split(b).length:0},find(a,b){return"string"==typeof a&&"string"==typeof b?a.search(new RegExp(C3.EscapeRegex(b),"i")):-1},findcase(a,b){return"string"==typeof a&&"string"==typeof b?a.search(new RegExp(C3.EscapeRegex(b),"")):-1},replace(a,b,c){return"string"==typeof a&&"string"==typeof b&&"string"==typeof c?a.replace(new RegExp(C3.EscapeRegex(b),"gi"),c):"string"==typeof a?a:""},regexsearch(a,b,c){const d=this.GetRegex(b,c);return a?a.search(d):-1},regexreplace(a,b,c,d){const e=this.GetRegex(b,c);return a?a.replace(e,d):""},regexmatchcount(a,b,c){const d=this.GetRegexMatches(a.toString(),b,c);return d?d.length:0},regexmatchat(a,b,c,d){d=Math.floor(d);const e=this.GetRegexMatches(a.toString(),b,c);return!e||0>d||d>=e.length?"":e[d]},zeropad(a,b){let c=0>a?"-":"";0>a&&(a=-a);const d=b-a.toString().length;return c+="0".repeat(Math.max(d,0)),c+a.toString()},urlencode(a){return encodeURIComponent(a)},urldecode(a){return decodeURIComponent(a)},dt(){return this._runtime._GetDtFast()},timescale(){return this._runtime.GetTimeScale()},wallclocktime(){return(Date.now()-this._runtime.GetStartTime())/1e3},unixtime(){return Date.now()},time(){return this._runtime.GetGameTime()},tickcount(){return this._runtime.GetTickCount()},objectcount(){return this._runtime.GetObjectCount()},fps(){return this._runtime.GetFPS()},cpuutilisation(){return this._runtime.GetMainThreadTime()},gpuutilisation(){return this._runtime.GetGPUUtilisation()},windowwidth(){return this._runtime.GetCanvasManager().GetDeviceWidth()},windowheight(){return this._runtime.GetCanvasManager().GetDeviceHeight()},originalwindowwidth(){return this._runtime.GetOriginalViewportWidth()},originalwindowheight(){return this._runtime.GetOriginalViewportHeight()},originalviewportwidth(){return this._runtime.GetOriginalViewportWidth()},originalviewportheight(){return this._runtime.GetOriginalViewportHeight()},scrollx(){return this._runtime.GetCurrentLayout().GetScrollX()},scrolly(){return this._runtime.GetCurrentLayout().GetScrollY()},layoutname(){return this._runtime.GetCurrentLayout().GetName()},layoutscale(){return this._runtime.GetCurrentLayout().GetScale()},layoutangle(){return C3.toDegrees(this._runtime.GetCurrentLayout().GetAngle())},layoutwidth(){return this._runtime.GetCurrentLayout().GetWidth()},layoutheight(){return this._runtime.GetCurrentLayout().GetHeight()},viewportleft(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getLeft():0},viewporttop(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getTop():0},viewportright(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getRight():0},viewportbottom(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getBottom():0},viewportwidth(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().width():0},viewportheight(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().height():0},canvastolayerx(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.CanvasCssToLayer(b,c)[0]:0},canvastolayery(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.CanvasCssToLayer(b,c)[1]:0},layertocanvasx(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.LayerToCanvasCss(b,c)[0]:0},layertocanvasy(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.LayerToCanvasCss(b,c)[1]:0},layerscale(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetOwnScale():0},layerangle(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?C3.toDegrees(b.GetOwnAngle()):0},layeropacity(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetOpacity():0},layerscalerate(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetScaleRate():0},layerparallaxx(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetParallaxX():0},layerparallaxy(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetParallaxY():0},layerindex(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetIndex():-1},canvassnapshot(){const a=this._runtime.GetCanvasManager();return a?a.GetCanvasSnapshotUrl():""},loopindex(a){const b=this._loopStack;if(!b.IsInLoop())return 0;if(a){const c=b.FindByName(a);return c?c.GetIndex():0}return b.GetCurrent().GetIndex()},savestatejson(){return this._runtime.GetLastSaveJsonString()},loadingprogress(){return this._runtime.GetAssetManager().GetLoadProgress()},imageloadingprogress(){return 0===this._imagesLoadingTotal?1:this._imagesLoadingComplete/this._imagesLoadingTotal},renderer(){return"webgl"},rendererdetail(){return this._runtime.GetWebGLRenderer().GetUnmaskedRenderer()},imagememoryusage(){let a=this._runtime.GetWebGLRenderer().GetEstimatedTextureMemoryUsage();return Math.round(100*a/1048576)/100},rgb(a,c,d){return C3.PackRGB(a,c,d)},rgbex(a,c,d){return C3.PackRGBEx(a/100,c/100,d/100)},rgba(c,d,e,b){return C3.PackRGBAEx(c/100,d/100,e/100,b/100)},rgbex255(a,c,d){return C3.PackRGBEx(a/255,c/255,d/255)},rgba255(c,d,e,b){return C3.PackRGBAEx(c/255,d/255,e/255,b/255)},projectname(){return this._runtime.GetProjectName()},projectversion(){return this._runtime.GetProjectVersion()}}; + +"use strict";C3.Plugins.TiledBg=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.TiledBg.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){this.GetImageInfo().LoadAsset(this._runtime)}LoadTextures(a){return this.GetImageInfo().LoadStaticTexture(a,{linearSampling:this._runtime.IsLinearSampling(),isTiled:!0})}ReleaseTextures(){this.GetImageInfo().ReleaseTexture()}}; + +"use strict";{const a=C3.New(C3.Quad),b=C3.New(C3.Rect),c=C3.New(C3.Quad);C3.Plugins.TiledBg.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a),this._imageOffsetX=0,this._imageOffsetY=0,this._imageScaleX=1,this._imageScaleY=1,this._imageAngle=0,this._ownImageInfo=null,b&&(this.GetWorldInfo().SetVisible(!!b[0]),this._imageOffsetX=b[2],this._imageOffsetY=b[3],this._imageScaleX=b[4],this._imageScaleY=b[5],this._imageAngle=C3.toRadians(b[6]))}Release(){this._ReleaseOwnImage(),super.Release()}_ReleaseOwnImage(){this._ownImageInfo&&(this._ownImageInfo.Release(),this._ownImageInfo=null)}Draw(d){var e=Math.round;const f=this.GetCurrentImageInfo(),g=f.GetTexture();if(!g)return;const h=this.GetWorldInfo();let i=h.GetBoundingQuad();d.SetTexture(g);const j=f.GetWidth(),k=f.GetHeight(),l=this._imageOffsetX/j,m=this._imageOffsetY/k;if(b.set(0,0,h.GetWidth()/(j*this._imageScaleX),h.GetHeight()/(k*this._imageScaleY)),b.offset(-l,-m),this._runtime.IsPixelRoundingEnabled()){const b=e(h.GetX())-h.GetX(),c=e(h.GetY())-h.GetY();a.copy(i),a.offset(b,c),i=a}0===this._imageAngle?d.Quad3(i,b):(c.setFromRotatedRect(b,-this._imageAngle),d.Quad4(i,c))}GetCurrentImageInfo(){return this._ownImageInfo||this._objectClass.GetImageInfo()}}} + +"use strict";C3.Plugins.TiledBg.Cnds={OnURLLoaded(){return!0}}; + +"use strict";C3.Plugins.TiledBg.Acts={SetImageOffsetX(a){this._imageOffsetX===a||(this._imageOffsetX=a,this._runtime.UpdateRender())},SetImageOffsetY(a){this._imageOffsetY===a||(this._imageOffsetY=a,this._runtime.UpdateRender())},SetImageScaleX(a){a/=100;this._imageScaleX===a||(this._imageScaleX=a,this._runtime.UpdateRender())},SetImageScaleY(a){a/=100;this._imageScaleY===a||(this._imageScaleY=a,this._runtime.UpdateRender())},SetImageAngle(b){b=C3.toRadians(b);this._imageAngle===b||(this._imageAngle=b,this._runtime.UpdateRender())},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()},LoadURL(a){this._ownImageInfo&&this._ownImageInfo.GetURL()===a||(async()=>{const b=this._runtime,c=C3.New(C3.ImageInfo);if(await c.LoadDynamicAsset(b,a),this.WasReleased())return c.Release(),null;const d=await c.LoadStaticTexture(b.GetWebGLRenderer(),{linearSampling:b.IsLinearSampling(),isTiled:!0});return d?this.WasReleased()?void c.Release():void(this._ReleaseOwnImage(),this._ownImageInfo=c,b.UpdateRender(),await this.TriggerAsync(C3.Plugins.TiledBg.Cnds.OnURLLoaded)):void 0})()}}; + +"use strict";C3.Plugins.TiledBg.Exps={ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()},ImageOffsetX(){return this._imageOffsetX},ImageOffsetY(){return this._imageOffsetY},ImageScaleX(){return 100*this._imageScaleX},ImageScaleY(){return 100*this._imageScaleY},ImageAngle(){return C3.toDegrees(this._imageAngle)}}; + +"use strict";C3.Plugins.Sprite=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Sprite.Type=class extends C3.SDKTypeBase{constructor(a){super(a),this._animations=a.GetAnimations()}Release(){C3.clearArray(this._animations),super.Release()}OnCreate(){for(const b of this._animations)b.LoadAllAssets(this._runtime)}LoadTextures(b){const c={linearSampling:this._runtime.IsLinearSampling()};return Promise.all(this._animations.map((d)=>d.LoadAllTextures(b,c)))}ReleaseTextures(){for(const b of this._animations)b.ReleaseAllTextures()}OnDynamicTextureLoadComplete(){this._UpdateAllCurrentTexture()}_UpdateAllCurrentTexture(){for(const a of this._objectClass.GetInstances())a.GetSdkInstance()._UpdateCurrentTexture()}FinishCondition(a){C3.Plugins.Sprite._FinishCondition(this,a)}}; + +"use strict";{const a=C3.New(C3.Quad),b=C3.New(C3.Vector2);C3.Plugins.Sprite.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a);let c=!0,d="",e=0,f=!0;b&&(c=!!b[0],d=b[1],e=b[2],f=b[3]),this._currentAnimation=this._objectClass.GetAnimationByName(d)||this._objectClass.GetAnimations()[0],this._currentFrameIndex=C3.clamp(e,0,this._currentAnimation.GetFrameCount()-1),this._currentAnimationFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex);const g=this._currentAnimationFrame.GetImageInfo();this._currentTexture=g.GetTexture(),this._currentRcTex=g.GetTexRect(),this.HandleWebGLContextLoss(),this._isPlayingForwards=0<=this._currentAnimation.GetSpeed(),this._currentAnimationSpeed=Math.abs(this._currentAnimation.GetSpeed()),this._currentAnimationRepeatTo=this._currentAnimation.GetRepeatTo(),this._animationTimer=C3.New(C3.KahanSum),this._frameStartTime=0,this._isAnimationPlaying=!0,this._animationRepeats=0,this._animTriggerName="",this._isInAnimTrigger=!1,this._changeAnimFrameIndex=-1,this._changeAnimationName="",this._changeAnimationFrom=0;const h=this.GetWorldInfo();this._bquadRef=h.GetBoundingQuad(),h.SetVisible(c),h.SetCollisionEnabled(f),h.SetOriginX(this._currentAnimationFrame.GetOriginX()),h.SetOriginY(this._currentAnimationFrame.GetOriginY()),h.SetSourceCollisionPoly(this._currentAnimationFrame.GetCollisionPoly()),(1!==this._objectClass.GetAnimationCount()||1!==this._objectClass.GetAnimations()[0].GetFrameCount())&&0!==this._currentAnimationSpeed&&this._StartTicking()}Release(){this._currentAnimation=null,this._currentAnimationFrame=null,this._currentTexture=null,this._animationTimer=null,super.Release()}GetCurrentImageInfo(){return this._currentAnimationFrame.GetImageInfo()}OnWebGLContextLost(){this._currentTexture=null}OnWebGLContextRestored(){this._UpdateCurrentTexture()}Draw(b){var c=Math.round;const d=this._currentTexture;if(null!==d){const e=this._bquadRef,f=this._currentRcTex;if(b.SetTexture(d),this._runtime.IsPixelRoundingEnabled()){const d=this.GetWorldInfo(),g=c(d.GetX())-d.GetX(),h=c(d.GetY())-d.GetY();a.copy(e),a.offset(g,h),b.Quad3(a,f)}else b.Quad3(e,f)}}_DrawCollisionPoly(a){const b=this.GetWorldInfo(),c=b.GetTransformedCollisionPoly();a.SetColorFillMode(),a.SetColorRgba(1,0,0,1);const d=c.pointsArr(),e=b.GetX(),f=b.GetY();for(let b=0,c=d.length;b=g&&(j?(this._isPlayingForwards=!1,this._currentFrameIndex=g-2):i?this._currentFrameIndex=f:(this._animationRepeats++,this._animationRepeats>=h?this._FinishAnimation(!1):this._currentFrameIndex=f)),0>this._currentFrameIndex&&(j?(this._currentFrameIndex=1,this._isPlayingForwards=!0,!i&&(this._animationRepeats++,this._animationRepeats>=h&&this._FinishAnimation(!0))):i?this._currentFrameIndex=f:(this._animationRepeats++,this._animationRepeats>=h?this._FinishAnimation(!0):this._currentFrameIndex=f)),this._currentFrameIndex=C3.clamp(this._currentFrameIndex,0,g-1);const k=b.GetFrameAt(this._currentFrameIndex);c>this._frameStartTime+k.GetDuration()/a&&(this._frameStartTime=c),this._OnFrameChanged(d,k)}}_FinishAnimation(a){this._currentFrameIndex=a?0:this._currentAnimation.GetFrameCount()-1,this._isAnimationPlaying=!1,this._animTriggerName=this._currentAnimation.GetName(),this._isInAnimTrigger=!0,this.Trigger(C3.Plugins.Sprite.Cnds.OnAnyAnimFinished),this.Trigger(C3.Plugins.Sprite.Cnds.OnAnimFinished),this._isInAnimTrigger=!1,this._animationRepeats=0}_OnFrameChanged(a,b){const c=this.GetWorldInfo(),d=a.GetImageInfo(),e=b.GetImageInfo(),f=d.GetWidth(),g=d.GetHeight(),h=e.GetWidth(),i=e.GetHeight();f!==h&&c.SetWidth(c.GetWidth()*(h/f)),g!==i&&c.SetHeight(c.GetHeight()*(i/g)),c.SetOriginX(b.GetOriginX()),c.SetOriginY(b.GetOriginY()),c.SetSourceCollisionPoly(b.GetCollisionPoly()),c.SetBboxChanged(),this._currentAnimationFrame=b,this._currentTexture=e.GetTexture(),this._currentRcTex=e.GetTexRect();const j=this.GetInstance().GetBehaviorInstances();for(let c=0,d=j.length;cthis.CallAction(a.SetAnim,b,0)},{name:"plugins.sprite.debugger.animation-properties.current-frame",value:this._currentFrameIndex,onedit:(b)=>this.CallAction(a.SetAnimFrame,b)},{name:"plugins.sprite.debugger.animation-properties.is-playing",value:this._isAnimationPlaying,onedit:(b)=>b?this.CallAction(a.StartAnim,0):this.CallAction(a.StopAnim)},{name:"plugins.sprite.debugger.animation-properties.speed",value:this._currentAnimationSpeed,onedit:(b)=>this.CallAction(a.SetAnimSpeed,b)},{name:"plugins.sprite.debugger.animation-properties.repeats",value:this._animationRepeats,onedit:(a)=>this._animationRepeats=a}]}]}SaveToJson(){const a={"a":this._currentAnimation.GetSID()};0!==this._frameStartTime&&(a["fs"]=this._frameStartTime);const b=this.GetAnimationTime();0!==b&&(a["at"]=b),0!==this._currentFrameIndex&&(a["f"]=this._currentFrameIndex),0!==this._currentAnimationSpeed&&(a["cas"]=this._currentAnimationSpeed),1!==this._animationRepeats&&(a["ar"]=this._animationRepeats),0!==this._currentAnimationRepeatTo&&(a["rt"]=this._currentAnimationRepeatTo),this._isAnimationPlaying||(a["ap"]=this._isAnimationPlaying),this._isPlayingForwards||(a["af"]=this._isPlayingForwards);const c=this.GetWorldInfo();return c.IsCollisionEnabled()&&(a["ce"]=c.IsCollisionEnabled()),a}LoadFromJson(a){const b=this.GetObjectClass().GetAnimationBySID(a["a"]);b&&(this._currentAnimation=b),this._frameStartTime=a.hasOwnProperty("fs")?a["fs"]:0,this._animationTimer.Set(a.hasOwnProperty("at")?a["at"]:0);const c=a.hasOwnProperty("f")?a["f"]:0;this._currentFrameIndex=C3.clamp(c,0,this._currentAnimation.GetFrameCount()-1),this._currentAnimationSpeed=a.hasOwnProperty("cas")?a["cas"]:0,this._animationRepeats=a.hasOwnProperty("ar")?a["ar"]:1;const d=a.hasOwnProperty("rt")?a["rt"]:0;this._currentAnimationRepeatTo=C3.clamp(d,0,this._currentAnimation.GetFrameCount()-1),this._isAnimationPlaying=!a.hasOwnProperty("ap")||!!a["ap"],this._isPlayingForwards=!a.hasOwnProperty("af")||!!a["af"];const e=this._currentAnimation.GetFrameAt(this._currentFrameIndex),f=e.GetImageInfo();this._currentAnimationFrame=e,this._currentTexture=f.GetTexture(),this._currentRcTex=f.GetTexRect();const g=this.GetWorldInfo();g.SetOriginX(e.GetOriginX()),g.SetOriginY(e.GetOriginY()),g.SetSourceCollisionPoly(e.GetCollisionPoly()),g.SetCollisionEnabled(!!a["ce"])}GetPropertyValueByIndex(a){const b=this.GetWorldInfo();return 3===a?b.IsCollisionEnabled():void 0}SetPropertyValueByIndex(a,b){const c=this.GetWorldInfo();3===a?c.SetCollisionEnabled(!!b):void 0}}} + +"use strict";{function a(c,d,a,b){const e=d.GetUID(),f=a.GetUID();ec(t,a.instance)));const u=q.GetCurrentSol(),v=e.GetCurrentSol(),w=u.GetInstances();let x=null;for(let c=0;cc(t,a.instance)));const u=q.GetCurrentSol(),v=e.GetCurrentSol(),w=u.GetInstances();let x=null;for(let c=0;cthis.GetWorldInfo().GetWidth()},IsFlipped(){return 0>this.GetWorldInfo().GetHeight()},OnURLLoaded(){return!0},IsCollisionEnabled(){return this.GetWorldInfo().IsCollisionEnabled()}}} + +"use strict";C3.Plugins.Sprite.Acts={Spawn(a,b,c){if(!a||!b)return;const[d,e]=this.GetImagePoint(c),f=this._runtime.CreateInstance(a,b,d,e);if(!f)return;if(a.GetPlugin().IsRotatable()){const a=f.GetWorldInfo();a.SetAngle(this.GetWorldInfo().GetAngle()),a.SetBboxChanged()}const g=this._runtime.GetEventSheetManager();if(g.BlockFlushingInstances(!0),f._TriggerOnCreated(),f.IsInContainer())for(const a of f.siblings())a._TriggerOnCreated();g.BlockFlushingInstances(!1);const h=this._runtime.GetCurrentAction(),i=h.GetSavedDataMap();let j=!1;if((!i.has("Spawn_LastExec")||i.get("Spawn_LastExec")d.GetWidth()?-1:1,f=0>d.GetHeight()?-1:1,g=c.GetWidth()*a*e,h=c.GetHeight()*a*f;(d.GetWidth()!==g||d.GetHeight()!==h)&&(d.SetSize(g,h),d.SetBboxChanged())},LoadURL(a,b){const c=this._currentAnimationFrame,d=c.GetImageInfo(),e=this.GetWorldInfo(),f=this._runtime;return d.GetURL()===a?(0===b&&(e.SetSize(d.GetWidth(),d.GetHeight()),e.SetBboxChanged()),void this.Trigger(C3.Plugins.Sprite.Cnds.OnURLLoaded)):void(async()=>{const c=C3.New(C3.ImageInfo);await c.LoadDynamicAsset(f,a),await c.LoadStaticTexture(f.GetWebGLRenderer(),{linearSampling:f.IsLinearSampling()}),d.ReplaceWith(c),this._sdkType._UpdateAllCurrentTexture(),this.WasReleased()||0!==b||(e.SetSize(d.GetWidth(),d.GetHeight()),e.SetBboxChanged()),f.UpdateRender(),this.WasReleased()||(await this.TriggerAsync(C3.Plugins.Sprite.Cnds.OnURLLoaded))})()},SetCollisions(a){this.GetWorldInfo().SetCollisionEnabled(a)},SetSolidCollisionFilter(a,b){this.GetWorldInfo().SetSolidCollisionFilter(0===a,b)},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()}}; + +"use strict";C3.Plugins.Sprite.Exps={AnimationFrame(){return this._currentFrameIndex},AnimationFrameCount(){return this._currentAnimation.GetFrameCount()},AnimationName(){return this._currentAnimation.GetName()},AnimationSpeed(){return this._isPlayingForwards?this._currentAnimationSpeed:-this._currentAnimationSpeed},ImagePointX(a){return this.GetImagePoint(a)[0]},ImagePointY(a){return this.GetImagePoint(a)[1]},ImagePointCount(){return this._currentAnimationFrame.GetImagePointCount()},ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()}}; + +"use strict";C3.Plugins.Keyboard=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Keyboard.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";C3.Plugins.Keyboard.Instance=class extends C3.SDKInstanceBase{constructor(a){super(a),this._keyMap=Array(256),this._typedKeyMap=Array(256),this._triggerKey=0;const b=this.GetRuntime().Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(b,"keydown",(a)=>this._OnKeyDown(a.data)),C3.Disposable.From(b,"keyup",(a)=>this._OnKeyUp(a.data)),C3.Disposable.From(b,"window-blur",()=>this._OnWindowBlur()))}Release(){super.Release()}async _OnKeyDown(a){const b=a["which"];this._keyMap[b]||(this._keyMap[b]=!0,this._typedKeyMap[b]=a["key"],this._triggerKey=b,await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnAnyKey),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKey),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyCode))}async _OnKeyUp(a){const b=a["which"];this._keyMap[b]=!1,this._typedKeyMap[b]=a["key"],this._triggerKey=b,await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnAnyKeyReleased),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyReleased),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyCodeReleased)}async _OnWindowBlur(){for(let a=0,b=this._keyMap.length;aa||a>=this._keyMap.length)&&!!this._keyMap[a]},OnKeyCode(a){return this._triggerKey===a},OnKeyCodeReleased(a){return this._triggerKey===a}}; + +"use strict";C3.Plugins.Keyboard.Acts={}; + +"use strict";{function a(a){return a=Math.floor(a),8===a?"backspace":9===a?"tab":13===a?"enter":16===a?"shift":17===a?"control":18===a?"alt":19===a?"pause":20===a?"capslock":27===a?"esc":33===a?"pageup":34===a?"pagedown":35===a?"end":36===a?"home":37===a?"\u2190":38===a?"\u2191":39===a?"\u2192":40===a?"\u2193":45===a?"insert":46===a?"del":91===a?"left window key":92===a?"right window key":93===a?"select":96===a?"numpad 0":97===a?"numpad 1":98===a?"numpad 2":99===a?"numpad 3":100===a?"numpad 4":101===a?"numpad 5":102===a?"numpad 6":103===a?"numpad 7":104===a?"numpad 8":105===a?"numpad 9":106===a?"numpad *":107===a?"numpad +":109===a?"numpad -":110===a?"numpad .":111===a?"numpad /":112===a?"F1":113===a?"F2":114===a?"F3":115===a?"F4":116===a?"F5":117===a?"F6":118===a?"F7":119===a?"F8":120===a?"F9":121===a?"F10":122===a?"F11":123===a?"F12":144===a?"numlock":145===a?"scroll lock":186===a?";":187===a?"=":188===a?",":189===a?"-":190===a?".":191===a?"/":192===a?"'":219===a?"[":220===a?"\\":221===a?"]":222===a?"#":223===a?"`":String.fromCharCode(a)}C3.Plugins.Keyboard.Exps={LastKeyCode(){return this._triggerKey},StringFromKeyCode(b){return a(b)},TypedKey(){return this._typedKeyMap[this._triggerKey]||""}}} + +"use strict";C3.Plugins.Text=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Text.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}LoadTextures(){}ReleaseTextures(){}}; + +"use strict";{const a=[0,0,0],b=["left","center","right"],c=["top","center","bottom"],d=new C3.Rect,e=new C3.Quad;C3.Plugins.Text.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){if(super(a),this._text="",this._enableBBcode=!0,this._faceName="Arial",this._ptSize=12,this._lineHeightOffset=0,this._isBold=!1,this._isItalic=!1,this._color=C3.New(C3.Color),this._horizontalAlign=0,this._verticalAlign=0,this._wrapByWord=!0,this._typewriterStartTime=-1,this._typewriterEndTime=-1,this._typewriterLength=0,this._webglText=C3.New(C3.Gfx.WebGLText,this._runtime.GetWebGLRenderer(),{timeout:5}),this._webglText.ontextureupdate=()=>this._runtime.UpdateRender(),this._webglText.SetIsAsync(!1),b){this._text=b[0],this._enableBBcode=!!b[1],this._faceName=b[2],this._ptSize=b[3],this._lineHeightOffset=b[4],this._isBold=!!b[5],this._isItalic=!!b[6],this._horizontalAlign=b[8],this._verticalAlign=b[9],this._wrapByWord=0===b[10];const a=b[7];this._color.setRgb(a[0],a[1],a[2]),this.GetWorldInfo().SetVisible(b[11])}this._UpdateTextSettings()}Release(){this._CancelTypewriter(),this._webglText.Release(),this._webglText=null,super.Release()}_UpdateTextSettings(){const a=this._webglText;a.SetText(this._text),a.SetBBCodeEnabled(this._enableBBcode),a.SetFontName(this._faceName),a.SetFontSize(this._ptSize),a.SetLineHeight(this._lineHeightOffset),a.SetBold(this._isBold),a.SetItalic(this._isItalic),a.SetColor(this._color),a.SetHorizontalAlignment(b[this._horizontalAlign]),a.SetVerticalAlignment(c[this._verticalAlign]),a.SetWordWrapMode(this._wrapByWord?"word":"character")}_UpdateTextSize(){const a=this.GetWorldInfo(),b=a.GetLayer().GetRenderScale();this._webglText.SetSize(a.GetWidth(),a.GetHeight(),b)}Draw(a){var b=Math.round;const c=this.GetWorldInfo();this._UpdateTextSize();const f=this._webglText.GetTexture();if(!f)return;const g=c.GetLayer();let h=c.GetBoundingQuad();if(0===c.GetAngle()&&0===c.GetLayer().GetAngle()){const[c,i]=g.LayerToDrawSurface(h.getTlx(),h.getTly()),[j,k]=g.LayerToDrawSurface(h.getBrx(),h.getBry()),l=c-b(c),m=i-b(i);d.set(c,i,j,k),d.offset(-l,-m),e.setFromRect(d);const[n,o]=a.GetRenderTargetSize(a.GetRenderTarget());this._runtime.GetCanvasManager().SetDeviceTransform(a,n,o),a.SetTexture(f),a.Quad3(e,this._webglText.GetTexRect()),g._SetTransform(a)}else{let c=0,d=0;this._runtime.IsPixelRoundingEnabled()&&(c=h.getTlx()-b(h.getTlx()),d=h.getTly()-b(h.getTly())),(0!=c||0!=d)&&(e.copy(h),e.offset(-c,-d),h=e),a.SetTexture(f),a.Quad3(h,this._webglText.GetTexRect())}}SaveToJson(){const a={"t":this._text,"c":this._color.toJSON(),"fn":this._faceName,"ps":this._ptSize};return this._enableBBcode&&(a["bbc"]=this._enableBBcode),0!==this._horizontalAlign&&(a["ha"]=this._horizontalAlign),0!==this._verticalAlign&&(a["va"]=this._verticalAlign),this._wrapByWord||(a["wr"]=this._wrapByWord),0!==this._lineHeightOffset&&(a["lho"]=this._lineHeightOffset),this._isBold&&(a["b"]=this._isBold),this._isItalic&&(a["i"]=this._isItalic),-1!==this._typewriterEndTime&&(a["tw"]={"st":this._typewriterStartTime,"en":this._typewriterEndTime,"l":this._typewriterLength}),a}LoadFromJson(a){if(this._CancelTypewriter(),this._text=a["t"],this._color.setFromJSON(a["c"]),this._faceName=a["fn"],this._ptSize=a["ps"],this._enableBBcode=!!a.hasOwnProperty("bbc")&&a["bbc"],this._horizontalAlign=a.hasOwnProperty("ha")?a["ha"]:0,this._verticalAlign=a.hasOwnProperty("va")?a["va"]:0,this._wrapByWord=!a.hasOwnProperty("wr")||a["wr"],this._lineHeightOffset=a.hasOwnProperty("lho")?a["lho"]:0,this._isBold=!!a.hasOwnProperty("b")&&a["b"],this._isItalic=!!a.hasOwnProperty("i")&&a["i"],a.hasOwnProperty("tw")){const b=a["tw"];this._typewriterStartTime=b["st"],this._typewriterEndTime=b["en"],this._typewriterLength=b["l"]}this._UpdateTextSettings(),-1!==this._typewriterEndTime&&this._StartTicking()}GetPropertyValueByIndex(b){return 0===b?this._text:1===b?this._enableBBcode:2===b?this._faceName:3===b?this._ptSize:4===b?this._lineHeightOffset:5===b?this._isBold:6===b?this._isItalic:7===b?(a[0]=this._color.getR(),a[1]=this._color.getG(),a[2]=this._color.getB(),a):8===b?this._horizontalAlign:9===b?this._verticalAlign:10===b?this._wrapByWord?1:0:void 0}SetPropertyValueByIndex(a,b){switch(a){case 0:if(this._text===b)return;this._text=b,this._UpdateTextSettings();break;case 1:if(this._enableBBcode===!!b)return;this._enableBBcode=!!b,this._UpdateTextSettings();break;case 2:if(this._faceName===b)return;this._faceName=b,this._UpdateTextSettings();break;case 3:if(this._ptSize===b)return;this._ptSize=b,this._UpdateTextSettings();break;case 4:if(this._lineHeightOffset===b)return;this._lineHeightOffset=b,this._UpdateTextSettings();break;case 5:if(this._isBold===!!b)return;this._isBold=!!b,this._UpdateTextSettings();break;case 6:if(this._isItalic===!!b)return;this._isItalic=!!b,this._UpdateTextSettings();break;case 7:const d=this._color,c=b;if(d.getR()===c[0]&&d.getG()===c[1]&&d.getB()===c[2])return;this._color.setRgb(c[0],c[1],c[2]),this._UpdateTextSettings();break;case 8:if(this._horizontalAlign===b)return;this._horizontalAlign=b,this._UpdateTextSettings();break;case 9:if(this._verticalAlign===b)return;this._verticalAlign=b,this._UpdateTextSettings();break;case 10:if(this._wrapByWord===(b===0))return;this._wrapByWord=b===0,this._UpdateTextSettings();}}_SetText(a){this._text===a||(this._text=a,this._webglText.SetText(a),this._runtime.UpdateRender())}_StartTypewriter(a,b){this._SetText(a),this._typewriterStartTime=this._runtime.GetGameTime(),this._typewriterEndTime=this._typewriterStartTime+b,this._typewriterLength=C3.BBString.StripAnyTags(a).length,this._webglText.SetDrawMaxCharacterCount(0),this._StartTicking()}_CancelTypewriter(){this._typewriterStartTime=-1,this._typewriterEndTime=-1,this._typewriterLength=0,this._webglText.SetDrawMaxCharacterCount(-1),this._StopTicking()}Tick(){const a=this._runtime.GetGameTime();if(a>=this._typewriterEndTime)this._CancelTypewriter(),this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished),this._runtime.UpdateRender();else{let b=C3.relerp(this._typewriterStartTime,this._typewriterEndTime,a,0,this._typewriterLength);b=Math.floor(b),b!==this._webglText.GetDrawMaxCharacterCount()&&(this._webglText.SetDrawMaxCharacterCount(b),this._runtime.UpdateRender())}}GetDebuggerProperties(){return[{title:"plugins.text.name",properties:[{name:"plugins.text.properties.text.name",value:this._text,onedit:(a)=>this._SetText(a)}]}]}}} + +"use strict";C3.Plugins.Text.Cnds={CompareText(a,b){return b?this._text===a:C3.equalsNoCase(this._text,a)},IsRunningTypewriterText(){return-1!==this._typewriterEndTime},OnTypewriterTextFinished(){return!0}}; + +"use strict";{const a=C3.New(C3.Color);C3.Plugins.Text.Acts={SetText(a){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),this._SetText(a.toString())},AppendText(a){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),a=a.toString();a&&this._SetText(this._text+a)},TypewriterText(a,b){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),this._StartTypewriter(a.toString(),b)},SetFontFace(a,b){let c=!1,d=!1;if(1===b?c=!0:2===b?d=!0:3===b?(c=!0,d=!0):void 0,a===this._faceName&&c===this._isBold&&d===this._isItalic)return!1;this._faceName=a,this._isBold=c,this._isItalic=d;const e=this._webglText;e.SetFontName(this._faceName),e.SetBold(this._isBold),e.SetItalic(this._isItalic),this._runtime.UpdateRender()},SetFontSize(a){this._ptSize===a||(this._ptSize=a,this._webglText.SetFontSize(this._ptSize),this._runtime.UpdateRender())},SetFontColor(b){a.setFromRgbValue(b),a.clamp();this._color.equalsIgnoringAlpha(a)||(this._color.copyRgb(a),this._webglText.SetColor(this._color),this._runtime.UpdateRender())},SetWebFont(){console.warn("[Text] 'Set web font' action is deprecated and no longer has any effect")},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()},TypewriterFinish(){-1===this._typewriterEndTime||(this._CancelTypewriter(),this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished),this._runtime.UpdateRender())}}} + +"use strict";C3.Plugins.Text.Exps={Text(){return this._text},PlainText(){return C3.BBString.StripAnyTags(this._text)},FaceName(){return this._faceName},FaceSize(){return this._ptSize},TextWidth(){return this._UpdateTextSize(),this._webglText.GetTextWidth()},TextHeight(){return this._UpdateTextSize(),this._webglText.GetTextHeight()}}; + +"use strict";C3.Behaviors.Platform=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.Platform.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{function a(a,b,c,d,e){return C3.clamp(a*e+.5*d*e*e,b*e,c*e)}const b=0;C3.Behaviors.Platform.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,c){super(a),this._keyboardDisposables=null,this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1,this._doubleJumped=!1,this._canDoubleJump=!1,this._ignoreInput=!1,this._simLeft=!1,this._simRight=!1,this._simJump=!1,this._lastFloorObject=null,this._loadFloorUid=-1,this._lastFloorX=0,this._lastFloorY=0,this._floorIsJumpthru=!1,this._wasOnFloor=!1,this._wasOverJumpthru=!!this._runtime.GetCollisionEngine().TestOverlapJumpthru(this._inst),this._loadJumpthruUid=-1,this._animMode="stopped",this._fallThrough=0,this._isFirstTick=!0,this._dx=0,this._dy=0,this._downX=0,this._downY=0,this._rightX=0,this._rightY=0,this._g=0,this._g1=0,this._ga=C3.toRadians(90),this._maxSpeed=330,this._acc=1500,this._dec=1500,this._jumpStrength=650,this._maxFall=1e3,this._enableDoubleJump=!1,this._jumpSustain=0,this._sustainTime=0,this._defaultControls=!0,this._ceilingCollisionMode=0,this._isEnabled=!0,c&&(this._maxSpeed=c[b],this._acc=c[1],this._dec=c[2],this._jumpStrength=c[3],this._g=c[4],this._maxFall=c[5],this._enableDoubleJump=!!c[6],this._jumpSustain=c[7]/1e3,this._defaultControls=!!c[8],this._isEnabled=!!c[9]);const d=this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(d,"instancedestroy",(a)=>this._OnInstanceDestroyed(a.instance)),C3.Disposable.From(d,"afterload",()=>this._OnAfterLoad())),this._defaultControls&&this._BindEvents(),this._isEnabled&&this._StartPostTicking(),this._UpdateGravity(),this._inst.GetUnsavedDataMap().set("isPlatformBehavior",!0)}Release(){this._keyboardDisposables&&(this._keyboardDisposables.Release(),this._keyboardDisposables=null),this._lastFloorObject=null,this._wasOverJumpthru=null,super.Release()}_BindEvents(){if(!this._keyboardDisposables){const a=this._runtime.Dispatcher();this._keyboardDisposables=new C3.CompositeDisposable(C3.Disposable.From(a,"keydown",(a)=>this._OnKeyDown(a.data)),C3.Disposable.From(a,"keyup",(a)=>this._OnKeyUp(a.data)),C3.Disposable.From(a,"window-blur",()=>this._OnWindowBlur()))}}_UnBindEvents(){this._keyboardDisposables&&(this._keyboardDisposables.Release(),this._keyboardDisposables=null)}_OnInstanceDestroyed(a){this._lastFloorObject===a&&(this._lastFloorObject=null),this._wasOverJumpthru===a&&(this._wasOverJumpthru=null)}_OnKeyDown(a){switch(a["key"]){case"ArrowLeft":this._leftKey=!0;break;case"ArrowRight":this._rightKey=!0;break;case"ArrowUp":this._jumpKey=!0;}}_OnKeyUp(a){switch(a["key"]){case"ArrowLeft":this._leftKey=!1;break;case"ArrowRight":this._rightKey=!1;break;case"ArrowUp":this._jumpKey=!1,this._jumped=!1;}}_OnWindowBlur(){this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1}SaveToJson(){return{"ii":this._ignoreInput,"lfx":this._lastFloorX,"lfy":this._lastFloorY,"lfo":this._lastFloorObject?this._lastFloorObject.GetUID():-1,"am":this._animMode,"en":this._isEnabled,"fall":this._fallThrough,"ft":this._isFirstTick,"dx":this._dx,"dy":this._dy,"ms":this._maxSpeed,"acc":this._acc,"dec":this._dec,"js":this._jumpStrength,"g":this._g,"g1":this._g1,"mf":this._maxFall,"wof":this._wasOnFloor,"woj":this._wasOverJumpthru?this._wasOverJumpthru.GetUID():-1,"ga":this._ga,"edj":this._enableDoubleJump,"cdj":this._canDoubleJump,"dj":this._doubleJumped,"sus":this._jumpSustain,"dc":this._defaultControls,"cc":this._ceilingCollisionMode}}LoadFromJson(a){this._ignoreInput=a["ii"],this._lastFloorX=a["lfx"],this._lastFloorY=a["lfy"],this._loadFloorUid=a["lfo"],this._animMode=a["am"];const b=a["en"];this._fallThrough=a["fall"],this._isFirstTick=a["ft"],this._dx=a["dx"],this._dy=a["dy"],this._maxSpeed=a["ms"],this._acc=a["acc"],this._dec=a["dec"],this._jumpStrength=a["js"],this._g=a["g"],this._g1=a["g1"],this._maxFall=a["mf"],this._wasOnFloor=a["wof"],this._loadJumpthruUid=a["woj"],this._ga=a["ga"],this._enableDoubleJump=a["edj"],this._canDoubleJump=a["cdj"],this._doubleJumped=a["dj"],this._jumpSustain=a["sus"],this._defaultControls=a["dc"],this._ceilingCollisionMode=a["cc"]||0,this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1,this._simLeft=!1,this._simRight=!1,this._simJump=!1,this._sustainTime=0,this._defaultControls?this._BindEvents():this._UnBindEvents(),this._SetEnabled(b),this._UpdateGravity()}_OnAfterLoad(){this._lastFloorObject=-1===this._loadFloorUid?null:this._runtime.GetInstanceByUID(this._loadFloorUid),this._wasOverJumpthru=-1===this._loadJumpthruUid?null:this._runtime.GetInstanceByUID(this._loadJumpthruUid)}_UpdateGravity(){var a=Math.PI,b=Math.sin,c=Math.cos;this._downX=c(this._ga),this._downY=b(this._ga),this._rightX=c(this._ga-a/2),this._rightY=b(this._ga-a/2),this._downX=C3.round6dp(this._downX),this._downY=C3.round6dp(this._downY),this._rightX=C3.round6dp(this._rightX),this._rightY=C3.round6dp(this._rightY),this._g1=this._g,0>this._g&&(this._downX*=-1,this._downY*=-1,this._g=Math.abs(this._g))}_GetGDir(){return 0>this._g?-1:1}_IsOnFloor(){const a=this._inst.GetWorldInfo(),b=this._runtime.GetCollisionEngine(),c=this._inst,d=this._lastFloorObject,e=a.GetX(),f=a.GetY();if(a.OffsetXY(this._downX,this._downY),a.SetBboxChanged(),d&&b.TestOverlap(c,d)&&(!d.GetObjectClass().HasSolidBehavior()||b.IsSolidCollisionAllowed(d,c)))return a.SetXY(e,f),a.SetBboxChanged(),d;else{let d=b.TestOverlapSolid(c),g=null;if(d||0!==this._fallThrough||(g=b.TestOverlapJumpthru(c,!0)),a.SetXY(e,f),a.SetBboxChanged(),d)return b.TestOverlap(c,d)?null:(this._floorIsJumpthru=!1,d);if(g&&g.length){let a=0;for(let d=0,e=g.length;dthis._maxFall&&(this._dy=this._maxFall)),a&&(this._jumped=!0)}_ApplyHorizontalAcceleration(a,b,c){const d=this._acc,e=this._dec;a===b&&(0>this._dx?(this._dx+=e*c,0this._dx&&(this._dx=0)));let f=0;return a&&!b&&(0this._dx?f=d+e:f=d),this._dx+=f*c,this._dx=C3.clamp(this._dx,-this._maxSpeed,this._maxSpeed),f}_HandleHorizontalMovement(b,c,d,e){var f=Math.abs;const g=this._inst,h=g.GetWorldInfo(),i=this._runtime.GetCollisionEngine(),j=this._downX,k=this._downY,l=this._rightX,m=this._rightY,n=this._maxSpeed;let o=!1,p=h.GetX(),q=h.GetY();const r=a(this._dx,-n,n,c,b)*l,s=a(this._dx,-n,n,c,b)*m;h.OffsetXY(l*(1this._dx?1:-1),m*(0>this._dx?1:-1),a,!1)?d&&!t&&!this._floorIsJumpthru&&(p=h.GetX(),q=h.GetY(),h.OffsetXY(j,k),i.TestOverlapSolid(g)?!i.PushOutSolid(g,-j,-k,3,!1)&&(h.SetXY(p,q),h.SetBboxChanged()):(h.SetXY(p,q),h.SetBboxChanged())):(h.SetXY(p,q),h.SetBboxChanged()),!t&&(this._dx=0)):!u&&!e&&f(this._dy)this._dy?1:-1),i*(0>this._dy?1:-1),a,p,o))f.SetXY(k,l),f.SetBboxChanged(),this._wasOnFloor=!0,p||(this._dy=0);else{this._lastFloorObject=o;const a=o.GetWorldInfo();this._lastFloorX=a.GetX(),this._lastFloorY=a.GetY(),this._floorIsJumpthru=p,p&&(j=!0),(0this._dy&&1===this._ceilingCollisionMode&&g.PushInFractional(e,h,i,o,32)}}return j}_HandleAnimationTriggers(a,b,c){"falling"!==this._animMode&&0this._dx=a},{name:"behaviors.platform.debugger.vector-y",value:this._dy,onedit:(a)=>this._dy=a},{name:"behaviors.platform.properties.max-speed.name",value:this._maxSpeed,onedit:(a)=>this._maxSpeed=a},{name:"behaviors.platform.properties.acceleration.name",value:this._acc,onedit:(a)=>this._acc=a},{name:"behaviors.platform.properties.deceleration.name",value:this._dec,onedit:(a)=>this._dec=a},{name:"behaviors.platform.properties.jump-strength.name",value:this._jumpStrength,onedit:(a)=>this._jumpStrength=a},{name:"behaviors.platform.properties.gravity.name",value:this._g,onedit:(a)=>this._g=a},{name:"behaviors.platform.debugger.gravity-angle",value:C3.toDegrees(this._ga),onedit:(a)=>this._ga=C3.toRadians(a)},{name:"behaviors.platform.properties.max-fall-speed.name",value:this._maxFall,onedit:(a)=>this._maxFall=a},{name:"behaviors.platform.debugger.animation-mode",value:["behaviors.platform.debugger.anim-"+this._animMode]},{name:"behaviors.platform.properties.enabled.name",value:this._isEnabled,onedit:(a)=>this._SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.Platform.Cnds={IsMoving(){return 0!==this._dx||0!==this._dy},CompareSpeed(a,b){return C3.compare(Math.hypot(this._dx,this._dy),a,b)},IsOnFloor(){if(0!==this._dy)return!1;const a=this._inst,b=this.GetWorldInfo(),c=this._runtime.GetCollisionEngine(),d=b.GetX(),e=b.GetY();b.OffsetXY(this._downX,this._downY),b.SetBboxChanged();const f=c.TestOverlapSolid(a);let g=null;if(f||0!==this._fallThrough||(g=c.TestOverlapJumpthru(a,!0)),b.SetXY(d,e),b.SetBboxChanged(),f)return!c.TestOverlap(a,f);if(g&&g.length){let b=0;for(let d=0,e=g.length;dthis._dy},IsFalling(){return 0=b.GetShakeStart()&&hthis.SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.solid.Cnds={IsEnabled(){return this.IsEnabled()}}; + +"use strict";C3.Behaviors.solid.Acts={SetEnabled(a){this.SetEnabled(a)}}; + +"use strict";C3.Behaviors.solid.Exps={}; + +"use strict";C3.Behaviors.Sin=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.Sin.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{const a=2*Math.PI,b=Math.PI/2,c=3*Math.PI/2,d=[0,1,8,3,4,2,5,6,7];C3.Behaviors.Sin.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(b,c){super(b),this._i=0,this._movement=0,this._wave=0,this._period=0,this._mag=0,this._isEnabled=!0,this._initialValue=0,this._initialValue2=0,this._lastKnownValue=0,this._lastKnownValue2=0,this._ratio=0,c&&(this._movement=d[c[0]],this._wave=c[1],this._period=c[2],this._period+=this._runtime.Random()*c[3],0!==this._period&&(this._i=c[4]/this._period*a,this._i+=this._runtime.Random()*c[5]/this._period*a),this._mag=c[6],this._mag+=this._runtime.Random()*c[7],this._isEnabled=!!c[8]),5===this._movement&&(this._mag=C3.toRadians(this._mag)),this.Init(),this._isEnabled&&this._StartTicking()}Release(){super.Release()}SaveToJson(){return{"i":this._i,"e":this._isEnabled,"mv":this._movement,"w":this._wave,"p":this._period,"mag":this._mag,"iv":this._initialValue,"iv2":this._initialValue2,"r":this._ratio,"lkv":this._lastKnownValue,"lkv2":this._lastKnownValue2}}LoadFromJson(a){this._i=a["i"],this._SetEnabled(a["e"]),this._movement=a["mv"],this._wave=a["w"],this._period=a["p"],this._mag=a["mag"],this._initialValue=a["iv"],this._initialValue2=a["iv2"],this._ratio=a["r"],this._lastKnownValue=a["lkv"],this._lastKnownValue2=a["lkv2"]}Init(){const a=this._inst.GetWorldInfo();switch(this._movement){case 0:this._initialValue=a.GetX();break;case 1:this._initialValue=a.GetY();break;case 2:this._initialValue=a.GetWidth(),this._ratio=a.GetHeight()/a.GetWidth();break;case 3:this._initialValue=a.GetWidth();break;case 4:this._initialValue=a.GetHeight();break;case 5:this._initialValue=a.GetAngle();break;case 6:this._initialValue=a.GetOpacity();break;case 7:this._initialValue=0;break;case 8:this._initialValue=a.GetX(),this._initialValue2=a.GetY();break;default:;}this._lastKnownValue=this._initialValue,this._lastKnownValue2=this._initialValue2}WaveFunc(d){var e=Math.PI;switch(d%=a,this._wave){case 0:return Math.sin(d);case 1:return d<=b?d/b:d<=c?1-2*(d-b)/e:(d-c)/b-1;case 2:return 2*d/a-1;case 3:return-2*d/a+1;case 4:return dthis._SetEnabled(a)},{name:"behaviors.sin.properties.period.name",value:this._period,onedit:(a)=>this._period=a},{name:"behaviors.sin.properties.magnitude.name",value:this._mag,onedit:(a)=>this._mag=a},{name:"behaviors.sin.debugger.value",value:this.WaveFunc(this._i)*this._mag}]}]}}} + +"use strict";C3.Behaviors.Sin.Cnds={IsEnabled(){return this._isEnabled},CompareMovement(a){return this._movement===a},ComparePeriod(a,b){return C3.compare(this._period,a,b)},CompareMagnitude(a,b){return 5===this._movement?C3.compare(this._mag,a,C3.toRadians(b)):C3.compare(this._mag,a,b)},CompareWave(a){return this._wave===a}}; + +"use strict";C3.Behaviors.Sin.Acts={SetEnabled(a){this._SetEnabled(0!==a)},SetPeriod(a){this._period=a},SetMagnitude(a){this._mag=a,5===this._movement&&(this._mag=C3.toRadians(this._mag))},SetMovement(a){5===this._movement&&5!==a&&(this._mag=C3.toDegrees(this._mag)),this._movement=a,this.Init()},SetWave(a){this._wave=a},SetPhase(a){const b=2*Math.PI;this._i=a*b%b,this._UpdateFromPhase()},UpdateInitialState(){this.Init()}}; + +"use strict";C3.Behaviors.Sin.Exps={CyclePosition(){return this._i/(2*Math.PI)},Period(){return this._period},Magnitude(){return 5===this._movement?C3.toDegrees(this._mag):this._mag},Value(){return this.WaveFunc(this._i)*this._mag}}; + +"use strict";C3.Behaviors.jumpthru=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.jumpthru.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{C3.Behaviors.jumpthru.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,b){super(a),this.SetEnabled(!0),b&&this.SetEnabled(b[0])}Release(){super.Release()}SetEnabled(a){this._inst.GetSavedDataMap().set("jumpthruEnabled",!!a)}IsEnabled(){return this._inst.GetSavedDataMap().get("jumpthruEnabled")}SaveToJson(){return{"e":this.IsEnabled()}}LoadFromJson(a){this.SetEnabled(a["e"])}GetPropertyValueByIndex(a){return a===0?this.IsEnabled():void 0}SetPropertyValueByIndex(a,b){a===0?this.SetEnabled(b):void 0}GetDebuggerProperties(){return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:"behaviors.jumpthru.properties.enabled.name",value:this.IsEnabled(),onedit:(a)=>this.SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.jumpthru.Cnds={IsEnabled(){return this.IsEnabled()}}; + +"use strict";C3.Behaviors.jumpthru.Acts={SetEnabled(a){this.SetEnabled(a)}}; + +"use strict";C3.Behaviors.jumpthru.Exps={}; + +"use strict" +self.C3_GetObjectRefTable = function () { + return [ + C3.Plugins.TiledBg, + C3.Plugins.Sprite, + C3.Behaviors.Platform, + C3.Behaviors.scrollto, + C3.Behaviors.solid, + C3.Behaviors.Sin, + C3.Behaviors.jumpthru, + C3.Plugins.Keyboard, + C3.Plugins.Text, + C3.Plugins.Keyboard.Cnds.OnKey, + C3.Behaviors.Platform.Acts.FallThrough, + C3.Plugins.Keyboard.Cnds.IsKeyDown, + C3.Behaviors.Platform.Acts.SimulateControl, + C3.Plugins.Sprite.Acts.SetMirrored, + C3.Plugins.Sprite.Cnds.CompareY, + C3.Plugins.System.Exps.layoutheight, + C3.Plugins.System.Acts.RestartLayout + ]; +}; + +"use strict"; + +{ + function unaryminus(n) + { + return (typeof n === "number" ? -n : n); + } + + function bothNumbers(a, b) + { + return typeof a === "number" && typeof b === "number"; + } + + function add(l, r) + { + if (bothNumbers(l, r)) + return l + r; + else + return l; + } + + function subtract(l, r) + { + if (bothNumbers(l, r)) + return l - r; + else + return l; + } + + function multiply(l, r) + { + if (bothNumbers(l, r)) + return l * r; + else + return l; + } + + function divide(l, r) + { + if (bothNumbers(l, r)) + return l / r; + else + return l; + } + + function mod(l, r) + { + if (bothNumbers(l, r)) + return l % r; + else + return l; + } + + function pow(l, r) + { + if (bothNumbers(l, r)) + return Math.pow(l, r); + else + return l; + } + + function and(l, r) + { + if (typeof l === "string" || typeof r === "string") + { + // & with either side string does string concatenation + let lstr, rstr; + + if (typeof l === "number") + lstr = (Math.round(l * 1e10) / 1e10).toString(); + else + lstr = l; + + if (typeof r === "number") + rstr = (Math.round(r * 1e10) / 1e10).toString(); + else + rstr = r; + + return lstr + rstr; + } + else + { + // & with neither side a string does logical AND + return (l && r ? 1 : 0); + } + } + + function or(l, r) + { + if (bothNumbers(l, r)) + return (l || r ? 1 : 0); + else + return l; + } + + self.C3_ExpressionFuncs = [ + p => { +const f0 = p._GetNode(0).GetBoundMethod(); +return () => f0(); +} + ]; +} + + diff --git a/Platformer template/scripts/dispatchWorker.js b/Platformer template/scripts/dispatchWorker.js new file mode 100755 index 0000000..8f92f7b --- /dev/null +++ b/Platformer template/scripts/dispatchWorker.js @@ -0,0 +1 @@ +"use strict";self.inputPort=null,self.jobQueue=[],self.jobWorkers=[],self.sentBlobs=[],self.sentBuffers=[],self.importedScripts=[],self.lastBroadcasts=new Map;class JobWorker{constructor(a,b){this._port=a,this._number=b,this._isReady=!1,this._isBusy=!1,this._port.onmessage=(a)=>this._OnMessage(a.data)}ImportScripts(a){this._port.postMessage({"type":"_import_scripts","scripts":a})}SendBlob(a,b){this._port.postMessage({"type":"_send_blob","blob":a,"id":b})}SendBuffer(a,b){this._port.postMessage({"type":"_send_buffer","buffer":a,"id":b})}SendJob(a){if(this._isBusy||!this._isReady)throw new Error("cannot take job");this._isBusy=!0,this._port.postMessage(a,a["transferables"])}_InitBroadcast(a){this._port.postMessage(a,a["transferables"])}SendReady(){this._port.postMessage({"type":"_ready"})}IsReady(){return this._isReady}_OnReady(){this._isReady=!0,this.MaybeStartNextJob()}IsBusy(){return this._isBusy}GetNumber(){return this._number}_OnMessage(a){const b=a["type"];return"ready"===b?void this._OnReady():"done"===b?void this._OnJobDone():void console.error("unknown message from worker '"+b+"'")}_OnJobDone(){this._isBusy=!1,this.MaybeStartNextJob()}MaybeStartNextJob(){if(!this._isBusy&&this._isReady){const a=this._FindAvailableJob();if(-1!==a){const b=self.jobQueue[a],c=b["isBroadcast"];c?(b["doneFlags"][this._number]=!0,b["doneFlags"].every((a)=>a)&&self.jobQueue.splice(a,1)):self.jobQueue.splice(a,1),this.SendJob(b)}}}_FindAvailableJob(){for(let a=0,b=self.jobQueue.length;a{const b=a.data,c=b["type"];"_init"===c?(self.inputPort=b["in-port"],self.inputPort.onmessage=OnInputPortMessage):"_addJobWorker"===c&&AddJobWorker(b["port"])});function OnInputPortMessage(a){const b=a.data,c=b["type"];if("_cancel"===c)return void CancelJob(b.jobId);if("_import_scripts"===c){const a=b["scripts"];for(const b of self.jobWorkers)b.ImportScripts(a);return void self.importedScripts.push(a)}if("_send_blob"===c){const a=b["blob"],c=b["id"];for(const b of self.jobWorkers)b.SendBlob(a,c);return void self.sentBlobs.push([a,c])}if("_send_buffer"===c){const a=b["buffer"],c=b["id"];for(const b of self.jobWorkers)b.SendBuffer(a,c);return void self.sentBuffers.push([a,c])}if("_no_more_workers"===c)return self.sentBlobs.length=0,self.sentBuffers.length=0,self.importedScripts.length=0,void self.lastBroadcasts.clear();if("_testMessageChannel"===c)return void self.jobWorkers[0].TestMessageChannel();self.jobQueue.push(b),b["isBroadcast"]&&(b["doneFlags"]=Array(self.jobWorkers.length).fill(!1),b["transferables"]=[],self.lastBroadcasts.set(b["type"],b));for(const b of self.jobWorkers)b.MaybeStartNextJob()} \ No newline at end of file diff --git a/Platformer template/scripts/jobWorker.js b/Platformer template/scripts/jobWorker.js new file mode 100755 index 0000000..936a7ef --- /dev/null +++ b/Platformer template/scripts/jobWorker.js @@ -0,0 +1 @@ +"use strict";self.dispatchPort=null,self.outputPort=null,self.workerNumber=-1,self.activeJobId=null,self.sentBlobs=new Map,self.sentBuffers=new Map,self.JobHandlers={};function FlipImageData(a,b,c){const d=4*b,e=new Uint8Array(d),f=a.buffer;for(let g=0,h=Math.floor(c/2);g{const b=a.data,c=b["type"];return"init"===c?(self.workerNumber=b["number"],self.dispatchPort=b["dispatch-port"],self.dispatchPort.onmessage=OnDispatchWorkerMessage,void(self.outputPort=b["output-port"])):"terminate"===c?void self.close():void console.error("unknown message '"+c+"'")});function SendReady(){self.dispatchPort.postMessage({"type":"ready"}),self.outputPort.postMessage({"type":"ready"})}function SendError(a,b){a||self.outputPort.postMessage({"type":"error","jobId":self.activeJobId,"error":b.toString()}),SendDone()}function SendResult(a,b){if(!a){const a=b.transferables||[];self.outputPort.postMessage({"type":"result","jobId":self.activeJobId,"result":b.result},a)}SendDone()}function SendDone(){self.activeJobId=null,self.dispatchPort.postMessage({"type":"done"})}function SendProgress(a){self.outputPort.postMessage({"type":"progress","jobId":self.activeJobId,"progress":a})}function OnDispatchWorkerMessage(a){const b=a.data,c=b["type"];if("_import_scripts"===c)return void importScripts(...b["scripts"]);if("_send_blob"===c)return void self.sentBlobs.set(b["id"],b["blob"]);if("_send_buffer"===c)return void self.sentBuffers.set(b["id"],b["buffer"]);if("_testMessageChannel"===c)return void self.outputPort.postMessage({"type":"_testMessageChannelOk"});if("_ready"===c)return void SendReady();const d=b["jobId"],f=b["isBroadcast"],e=b["params"];let g;if(self.activeJobId=d,!self.JobHandlers.hasOwnProperty(c))return void console.error(`no handler for message type '${c}'`);try{g=self.JobHandlers[c](e)}catch(a){return void SendError(f,"Exception in job handler: "+a)}g&&g.then?g.then((a)=>SendResult(f,a)).catch((a)=>SendError(f,"Rejection in job handler: "+a)):SendResult(f,g)} \ No newline at end of file diff --git a/Platformer template/scripts/main.js b/Platformer template/scripts/main.js new file mode 100755 index 0000000..91e476a --- /dev/null +++ b/Platformer template/scripts/main.js @@ -0,0 +1,11 @@ +"use strict";window.DOMHandler=class{constructor(a,b){this._iRuntime=a,this._componentId=b,this._hasTickCallback=!1,this._tickCallback=()=>this.Tick()}Attach(){}PostToRuntime(a,b,c,d){this._iRuntime.PostToRuntimeComponent(this._componentId,a,b,!!c,d)}PostToRuntimeAsync(a,b,c,d){return this._iRuntime.PostToRuntimeComponentAsync(this._componentId,a,b,!!c,d)}_PostToRuntimeMaybeSync(a,b,c){this._iRuntime.UsesWorker()?this.PostToRuntime(a,b,c):this._iRuntime._GetLocalRuntime()["_OnMessageFromDOM"]({"type":"event","component":this._componentId,"handler":a,"dispatchRuntimeEvent":c,"data":b,"responseId":null})}AddRuntimeMessageHandler(a,b){this._iRuntime.AddRuntimeComponentMessageHandler(this._componentId,a,b)}AddRuntimeMessageHandlers(a){for(const[b,c]of a)this.AddRuntimeMessageHandler(b,c)}GetRuntimeInterface(){return this._iRuntime}GetComponentID(){return this._componentId}_StartTicking(){this._hasTickCallback||(this._iRuntime._AddRAFCallback(this._tickCallback),this._hasTickCallback=!0)}_StopTicking(){this._hasTickCallback&&(this._iRuntime._RemoveRAFCallback(this._tickCallback),this._hasTickCallback=!1)}Tick(){}}; + +"use strict";window.DOMElementHandler=class extends DOMHandler{constructor(a,b){super(a,b),this._elementMap=new Map,this._autoAttach=!0,this.AddRuntimeMessageHandler("create",(a)=>this._OnCreate(a)),this.AddRuntimeMessageHandler("destroy",(a)=>this._OnDestroy(a)),this.AddRuntimeMessageHandler("set-visible",(a)=>this._OnSetVisible(a)),this.AddRuntimeMessageHandler("update-position",(a)=>this._OnUpdatePosition(a)),this.AddRuntimeMessageHandler("update-state",(a)=>this._OnUpdateState(a)),this.AddRuntimeMessageHandler("focus",(a)=>this._OnSetFocus(a)),this.AddRuntimeMessageHandler("set-css-style",(a)=>this._OnSetCssStyle(a))}SetAutoAttach(a){this._autoAttach=!!a}AddDOMElementMessageHandler(a,b){this.AddRuntimeMessageHandler(a,(a)=>{const c=a["elementId"],d=this._elementMap.get(c);return b(d,a)})}_OnCreate(a){const b=a["elementId"],c=this.CreateElement(b,a);this._elementMap.set(b,c),this._autoAttach&&document.body.appendChild(c)}CreateElement(){throw new Error("required override")}DestroyElement(){}_OnDestroy(a){const b=a["elementId"],c=this._elementMap.get(b);this.DestroyElement(c),this._autoAttach&&c.parentElement.removeChild(c),this._elementMap.delete(b)}PostToRuntimeElement(a,b,c){c||(c={}),c["elementId"]=b,this.PostToRuntime(a,c)}_PostToRuntimeElementMaybeSync(a,b,c){c||(c={}),c["elementId"]=b,this._PostToRuntimeMaybeSync(a,c)}_OnSetVisible(a){if(this._autoAttach){const b=this._elementMap.get(a["elementId"]);b.style.display=a["isVisible"]?"":"none"}}_OnUpdatePosition(a){if(this._autoAttach){const b=this._elementMap.get(a["elementId"]);b.style.left=a["left"]+"px",b.style.top=a["top"]+"px",b.style.width=a["width"]+"px",b.style.height=a["height"]+"px";const c=a["fontSize"];null!==c&&(b.style.fontSize=c+"em")}}_OnUpdateState(a){const b=this._elementMap.get(a["elementId"]);this.UpdateState(b,a)}UpdateState(){throw new Error("required override")}_OnSetFocus(a){const b=this._elementMap.get(a["elementId"]);a["focus"]?b.focus():b.blur()}_OnSetCssStyle(a){const b=this._elementMap.get(a["elementId"]);b.style[a["prop"]]=a["val"]}GetElementById(a){return this._elementMap.get(a)}}; + +"use strict";{function a(a){return new Promise((b,c)=>{const d=document.createElement("script");d.onload=b,d.onerror=c,d.async=!1,d.src=a,document.head.appendChild(d)})}function b(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=(a)=>b(a.target.result),d.onerror=(a)=>c(a),d.readAsText(a)})}function c(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=(a)=>b(a.target.result),d.onerror=(a)=>c(a),d.readAsArrayBuffer(a)})}function d(a){if(!a)return"";const b=a.split(".");if(2>b.length)return"";const c=b[b.length-1].toLowerCase();return k.get(c)||""}const e=/(iphone|ipod|ipad)/i.test(navigator.userAgent);let f=new Audio;const g={"audio/webm; codecs=opus":!!f.canPlayType("audio/webm; codecs=opus"),"audio/ogg; codecs=opus":!!f.canPlayType("audio/ogg; codecs=opus"),"audio/webm; codecs=vorbis":!!f.canPlayType("audio/webm; codecs=vorbis"),"audio/ogg; codecs=vorbis":!!f.canPlayType("audio/ogg; codecs=vorbis"),"audio/mp4":!!f.canPlayType("audio/mp4"),"audio/mpeg":!!f.canPlayType("audio/mpeg")};f=null;const h=[];let i=0;const j=Math.max(navigator.hardwareConcurrency||0,8),k=new Map([["mp4","video/mp4"],["webm","video/webm"],["m4a","audio/mp4"],["mp3","audio/mpeg"],["js","application/javascript"],["wasm","application/wasm"]]),l=[],m=new Map,n=new Map;let o=0;window.RuntimeInterface=class f{constructor(a){this._useWorker=a.useWorker,this._messageChannelPort=null,this._baseUrl="",this._workerScriptBlobURLs={},this._worker=null,this._localRuntime=null,this._domHandlers=[],this._runtimeDomHandler=null,this._canvas=null,this._jobScheduler=null,this._rafId=-1,this._rafFunc=()=>this._OnRAFCallback(),this._rafCallbacks=[],this._exportType=a.exportType,this._transferablesBroken=!1,"html5"===this._exportType&&"file"===location.protocol.substr(0,4)&&alert("Exported games won't work until you upload them. (When running on the file: protocol, browsers block many features from working for security reasons.)"),this.AddRuntimeComponentMessageHandler("runtime","cordova-fetch-local-file",(a)=>this._OnCordovaFetchLocalFile(a)),this.AddRuntimeComponentMessageHandler("runtime","create-job-worker",(a)=>this._OnCreateJobWorker(a)),"cordova"===this._exportType?document.addEventListener("deviceready",()=>this._Init(a)):this._Init(a)}Release(){this._CancelAnimationFrame(),this._messageChannelPort&&(this._messageChannelPort.onmessage=null,this._messageChannelPort=null),this._worker&&(this._worker.terminate(),this._worker=null),this._localRuntime&&(this._localRuntime.Release(),this._localRuntime=null),this._canvas&&(this._canvas.parentElement.removeChild(this._canvas),this._canvas=null)}GetCanvas(){return this._canvas}GetBaseURL(){return this._baseUrl}UsesWorker(){return this._useWorker}GetExportType(){return this._exportType}IsWKWebView(){return"cordova"===this._exportType&&e}IsiPhoneX(){if(!this.IsWKWebView())return!1;const a=window["devicePixelRatio"],b=window["screen"]["width"]*a,c=window["screen"]["height"]*a;return 1125==b&&2436==c}async _Init(a){if(a.baseUrl)this._baseUrl=a.baseUrl;else{this._baseUrl=location.origin+location.pathname;const a=this._baseUrl.lastIndexOf("/");-1!==a&&(this._baseUrl=this._baseUrl.substr(0,a+1))}if(a.workerScripts)for(const[b,c]of Object.entries(a.workerScripts))this._workerScriptBlobURLs[b]=URL.createObjectURL(c);const b=new MessageChannel;this._messageChannelPort=b.port1,this._messageChannelPort.onmessage=(a)=>this["_OnMessageFromRuntime"](a.data),window["c3_addPortMessageHandler"]&&window["c3_addPortMessageHandler"]((a)=>this._OnMessageFromDebugger(a)),this._jobScheduler=new self.JobSchedulerDOM(this),await this._jobScheduler.Init(),this.MaybeForceBodySize(),"object"==typeof window["StatusBar"]&&window["StatusBar"]["hide"](),await this._TestTransferablesWork(),this._useWorker?await this._InitWorker(a,b.port2):await this._InitDOM(a,b.port2)}_GetWorkerURL(a){return this._workerScriptBlobURLs.hasOwnProperty(a)?this._workerScriptBlobURLs[a]:a}async CreateWorker(a,b,c){if(a.startsWith("blob:"))return new Worker(a,c);if(this.IsWKWebView()){const b=await this.CordovaFetchLocalFileAsBlob("scripts/"+a);return new Worker(URL.createObjectURL(b),c)}const d=new URL(a,b),e=location.origin!==d.origin;if(e){const a=await fetch(d);if(!a.ok)throw new Error("failed to fetch worker script");const b=await a.blob();return new Worker(URL.createObjectURL(b),c)}return new Worker(d,c)}MaybeForceBodySize(){if(this.IsiPhoneX()){const a=window.innerWidth>window.innerHeight,b=document["documentElement"].style,c=document["body"].style;a?(c["height"]=b["height"]="375px",c["width"]=b["width"]="812px"):(c["width"]=b["width"]="375px",c["height"]=b["height"]="812px")}}_GetCommonRuntimeOptions(a){return{"baseUrl":this._baseUrl,"windowInnerWidth":window.innerWidth,"windowInnerHeight":window.innerHeight,"devicePixelRatio":window.devicePixelRatio,"isFullscreen":f.IsDocumentFullscreen(),"projectData":a.projectData,"previewImageBlobs":window["cr_previewImageBlobs"],"previewProjectFileBlobs":window["cr_previewProjectFileBlobs"],"shaders":self["C3_Shaders"],"exportType":a.exportType,"isDebug":-1new a(this)),this._FindRuntimeDOMHandler()}async _InitDOM(b,c){this._canvas=document.createElement("canvas"),this._canvas.style.display="none",document.body.appendChild(this._canvas),this._domHandlers=l.map((a)=>new a(this)),this._FindRuntimeDOMHandler();const d=b.engineScripts.map((a)=>new URL(a,this._baseUrl).toString());await Promise.all(d.map((b)=>a(b)));const e=Object.assign(this._GetCommonRuntimeOptions(b),{"isInWorker":!1,"messagePort":c,"canvas":this._canvas});this._localRuntime=self["C3_CreateRuntime"](e),await self["C3_InitRuntime"](this._localRuntime,e)}async _OnCreateJobWorker(){const a=await this._jobScheduler._CreateJobWorker();return{"outputPort":a,"transferables":[a]}}_GetLocalRuntime(){if(this._useWorker)throw new Error("not available in worker mode");return this._localRuntime}PostToRuntimeComponent(a,b,c,d,e){this._messageChannelPort.postMessage({"type":"event","component":a,"handler":b,"dispatchRuntimeEvent":d,"data":c,"responseId":null},this._transferablesBroken?void 0:e)}PostToRuntimeComponentAsync(a,b,c,d,e){const f=o++,g=new Promise((a,b)=>{n.set(f,{resolve:a,reject:b})});return this._messageChannelPort.postMessage({"type":"event","component":a,"handler":b,"dispatchRuntimeEvent":d,"data":c,"responseId":f},this._transferablesBroken?void 0:e),g}["_OnMessageFromRuntime"](a){const b=a["type"];if("event"===b)this._OnEventFromRuntime(a);else if("result"===b)this._OnResultFromRuntime(a);else if("runtime-ready"===b)this._OnRuntimeReady();else throw new Error(`unknown message '${b}'`)}_OnEventFromRuntime(a){const b=a["component"],c=a["handler"],d=a["data"],e=a["responseId"],f=m.get(b);if(!f)return void console.warn(`[DOM] No event handlers for component '${b}'`);const g=f.get(c);if(!g)return void console.warn(`[DOM] No handler '${c}' for component '${b}'`);let h=null;try{h=g(d)}catch(a){return console.error(`Exception in '${b}' handler '${c}':`,a),void(null!==e&&this._PostResultToRuntime(e,!1,a.toString()))}null!==e&&(h&&h.then?h.then((a)=>this._PostResultToRuntime(e,!0,a)).catch((a)=>{console.error(`Rejection from '${b}' handler '${c}':`,a),this._PostResultToRuntime(e,!1,a.toString())}):this._PostResultToRuntime(e,!0,h))}_PostResultToRuntime(a,b,c){let d;c&&c["transferables"]&&(d=c["transferables"]),this._messageChannelPort.postMessage({"type":"result","responseId":a,"isOk":b,"result":c},d)}_OnResultFromRuntime(a){const b=a["responseId"],c=a["isOk"],d=a["result"],e=n.get(b);c?e.resolve(d):e.reject(d),n.delete(b)}AddRuntimeComponentMessageHandler(a,b,c){let d=m.get(a);if(d||(d=new Map,m.set(a,d)),d.has(b))throw new Error(`[DOM] Component '${a}' already has handler '${b}'`);d.set(b,c)}static AddDOMHandlerClass(a){if(l.includes(a))throw new Error("DOM handler already added");l.push(a)}_FindRuntimeDOMHandler(){for(const a of this._domHandlers)if("runtime"===a.GetComponentID())return void(this._runtimeDomHandler=a);throw new Error("cannot find runtime DOM handler")}_OnMessageFromDebugger(a){this.PostToRuntimeComponent("debugger","message",a)}_OnRuntimeReady(){for(const a of this._domHandlers)a.Attach()}static IsDocumentFullscreen(){return!!(document["fullscreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"])}_AddRAFCallback(a){this._rafCallbacks.push(a),this._RequestAnimationFrame()}_RemoveRAFCallback(a){const b=this._rafCallbacks.indexOf(a);if(-1===b)throw new Error("invalid callback");this._rafCallbacks.splice(b,1),this._rafCallbacks.length||this._CancelAnimationFrame()}_RequestAnimationFrame(){-1===this._rafId&&this._rafCallbacks.length&&(this._rafId=requestAnimationFrame(this._rafFunc))}_CancelAnimationFrame(){-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1)}_OnRAFCallback(){this._rafId=-1;for(const a of this._rafCallbacks)a();this._RequestAnimationFrame()}TryPlayMedia(a){this._runtimeDomHandler.TryPlayMedia(a)}RemovePendingPlay(a){this._runtimeDomHandler.RemovePendingPlay(a)}_PlayPendingMedia(){this._runtimeDomHandler._PlayPendingMedia()}SetSilent(a){this._runtimeDomHandler.SetSilent(a)}IsAudioFormatSupported(a){return!!g[a]}async _WasmDecodeWebMOpus(a){const b=await this.PostToRuntimeComponentAsync("runtime","opus-decode",{"arrayBuffer":a},!1,[a]);return new Float32Array(b)}IsAbsoluteURL(a){return /^(?:[a-z]+:)?\/\//.test(a)||"data:"===a.substr(0,5)||"blob:"===a.substr(0,5)}IsRelativeURL(a){return!this.IsAbsoluteURL(a)}async _OnCordovaFetchLocalFile(a){const b=a["filename"];switch(a["as"]){case"text":return await this.CordovaFetchLocalFileAsText(b);case"blob":return await this.CordovaFetchLocalFileAsBlob(b);case"blob-url":return await this.CordovaFetchLocalFileAsURL(b);case"buffer":return await this.CordovaFetchLocalFileAsArrayBuffer(b);default:throw new Error("unsupported type");}}CordovaFetchLocalFile(a){const b=window["cordova"]["file"]["applicationDirectory"]+"www/"+a;return new Promise((a,c)=>{window["resolveLocalFileSystemURL"](b,(b)=>{b["file"](a,c)},c)})}async CordovaFetchLocalFileAsText(a){const c=await this.CordovaFetchLocalFile(a);return await b(c)}_CordovaMaybeStartNextArrayBufferRead(){if(h.length&&!(i>=j)){i++;const a=h.shift();this._CordovaDoFetchLocalFileAsAsArrayBuffer(a.filename,a.successCallback,a.errorCallback)}}CordovaFetchLocalFileAsArrayBuffer(a){return new Promise((b,c)=>{h.push({filename:a,successCallback:(a)=>{i--,this._CordovaMaybeStartNextArrayBufferRead(),b(a)},errorCallback:(a)=>{i--,this._CordovaMaybeStartNextArrayBufferRead(),c(a)}}),this._CordovaMaybeStartNextArrayBufferRead()})}async _CordovaDoFetchLocalFileAsAsArrayBuffer(a,b,d){try{const d=await this.CordovaFetchLocalFile(a),e=await c(d);b(e)}catch(a){d(a)}}async CordovaFetchLocalFileAsBlob(a,b){b||(b=d(a));const c=await this.CordovaFetchLocalFileAsArrayBuffer(a);return new Blob([c],{type:b})}async CordovaFetchLocalFileAsURL(a){const b=await this.CordovaFetchLocalFileAsBlob(a);return URL.createObjectURL(b)}_TestTransferablesWork(){let a=null;const b=new Promise((b)=>a=b),c=new ArrayBuffer(1),d=new MessageChannel;return d.port2.onmessage=(b)=>{b.data&&b.data["arrayBuffer"]||(this._transferablesBroken=!0,console.warn("MessageChannel transfers determined to be broken. Disabling transferables.")),a()},d.port1.postMessage({"arrayBuffer":c},[c]),b}}} + +"use strict";{function a(a){return a["sourceCapabilities"]&&a["sourceCapabilities"]["firesTouchEvents"]||a["originalEvent"]&&a["originalEvent"]["sourceCapabilities"]&&a["originalEvent"]["sourceCapabilities"]["firesTouchEvents"]}function b(a){return new Promise((b,c)=>{const d=new Image;d.onload=()=>b(d),d.onerror=(a)=>c(a),d.src=a})}async function c(a){const c=URL.createObjectURL(a);try{return await b(c)}finally{URL.revokeObjectURL(c)}}function d(){return window.parent&&window.parent.document.hasFocus()}self["C3_RasterSvgImage"]=async function(a,b,c){const d=document.createElement("canvas");d.width=b,d.height=c;const e=d.getContext("2d");return e.drawImage(a,0,0,b,c),d};let e=!1;document.addEventListener("pause",()=>e=!0),document.addEventListener("resume",()=>e=!1);const f=class extends DOMHandler{constructor(a){super(a,"runtime"),this._isFirstSizeUpdate=!0,this._targetOrientation="any",this._debugHighlightElem=null,a.AddRuntimeComponentMessageHandler("canvas","update-size",(a)=>this._OnUpdateCanvasSize(a)),a.AddRuntimeComponentMessageHandler("runtime","invoke-download",(a)=>this._OnInvokeDownload(a)),a.AddRuntimeComponentMessageHandler("runtime","raster-svg-image",(a)=>this._OnRasterSvgImage(a)),a.AddRuntimeComponentMessageHandler("runtime","set-target-orientation",(a)=>this._OnSetTargetOrientation(a)),a.AddRuntimeComponentMessageHandler("runtime","register-sw",()=>this._OnRegisterSW()),a.AddRuntimeComponentMessageHandler("runtime","post-to-debugger",(a)=>this._OnPostToDebugger(a)),a.AddRuntimeComponentMessageHandler("runtime","before-start-ticking",()=>this._OnBeforeStartTicking()),a.AddRuntimeComponentMessageHandler("runtime","debug-highlight",(a)=>this._OnDebugHighlight(a));const b=a.GetCanvas();b.addEventListener("contextmenu",(a)=>a.preventDefault()),b.addEventListener("selectstart",(a)=>a.preventDefault()),b.addEventListener("gesturehold",(a)=>a.preventDefault()),b.addEventListener("touchstart",(a)=>a.preventDefault()),window.addEventListener("mousedown",(a)=>{1===a.button&&a.preventDefault()}),window.addEventListener("resize",()=>this._OnWindowResize()),this._mediaPendingPlay=new Set,this._mediaRemovedPendingPlay=new WeakSet,this._isSilent=!1}_OnBeforeStartTicking(){return window.addEventListener("visibilitychange",()=>this._OnVisibilityChange(document.hidden)),document.addEventListener("pause",()=>this._OnVisibilityChange(!0)),document.addEventListener("resume",()=>this._OnVisibilityChange(!1)),{"isSuspended":!!(document.hidden||e)}}Attach(){window.addEventListener("focus",()=>this._PostRuntimeEvent("window-focus")),window.addEventListener("blur",()=>this._PostRuntimeEvent("window-blur",{"parentHasFocus":d()})),window.addEventListener("fullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("webkitfullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("mozfullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("fullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("webkitfullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("mozfullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("keydown",(a)=>this._OnKeyEvent("keydown",a)),window.addEventListener("keyup",(a)=>this._OnKeyEvent("keyup",a)),window.addEventListener("mousemove",(a)=>this._OnMouseEvent("mousemove",a)),window.addEventListener("mousedown",(a)=>this._OnMouseEvent("mousedown",a)),window.addEventListener("mouseup",(a)=>this._OnMouseEvent("mouseup",a)),window.addEventListener("dblclick",(a)=>this._OnMouseEvent("dblclick",a)),window.addEventListener("wheel",(a)=>this._OnMouseWheelEvent("wheel",a)),"undefined"==typeof PointerEvent?(window.addEventListener("touchstart",(a)=>this._OnTouchEvent("pointerdown",a)),window.addEventListener("touchmove",(a)=>this._OnTouchEvent("pointermove",a)),window.addEventListener("touchend",(a)=>this._OnTouchEvent("pointerup",a)),window.addEventListener("touchcancel",(a)=>this._OnTouchEvent("pointercancel",a))):(window.addEventListener("pointerdown",(a)=>this._OnPointerEvent("pointerdown",a)),window.addEventListener("pointermove",(a)=>this._OnPointerEvent("pointermove",a)),window.addEventListener("pointerup",(a)=>this._OnPointerEvent("pointerup",a)),window.addEventListener("pointercancel",(a)=>this._OnPointerEvent("pointercancel",a))),window.addEventListener("deviceorientation",(a)=>this._OnDeviceOrientation(a)),window.addEventListener("devicemotion",(a)=>this._OnDeviceMotion(a));const a=()=>this._PlayPendingMedia();window.addEventListener("pointerup",a,!0),window.addEventListener("touchend",a,!0),window.addEventListener("click",a,!0),window.addEventListener("keydown",a,!0),window.addEventListener("gamepadconnected",a,!0)}_PostRuntimeEvent(a,b){this.PostToRuntime(a,b||null,!0)}_OnWindowResize(){this.PostToRuntime("window-resize",{"innerWidth":window.innerWidth,"innerHeight":window.innerHeight,"devicePixelRatio":window.devicePixelRatio},!0)}_OnSetTargetOrientation(a){this._targetOrientation=a["targetOrientation"]}_TrySetTargetOrientation(){const a=this._targetOrientation;if(screen["orientation"]&&screen["orientation"]["lock"])screen["orientation"]["lock"](a).catch((a)=>console.warn("[Construct 3] Failed to lock orientation: ",a));else try{let b=!1;screen["lockOrientation"]?b=screen["lockOrientation"](a):screen["webkitLockOrientation"]?b=screen["webkitLockOrientation"](a):screen["mozLockOrientation"]?b=screen["mozLockOrientation"](a):screen["msLockOrientation"]&&(b=screen["msLockOrientation"](a)),b||console.warn("[Construct 3] Failed to lock orientation")}catch(a){console.warn("[Construct 3] Failed to lock orientation: ",a)}}_OnFullscreenChange(){const a=RuntimeInterface.IsDocumentFullscreen();a&&"any"!==this._targetOrientation&&this._TrySetTargetOrientation(),this.PostToRuntime("fullscreenchange",{"isFullscreen":a,"innerWidth":window.innerWidth,"innerHeight":window.innerHeight})}_OnFullscreenError(a){console.warn("[Construct 3] Fullscreen request failed: ",a),this.PostToRuntime("fullscreenerror",{"isFullscreen":RuntimeInterface.IsDocumentFullscreen(),"innerWidth":window.innerWidth,"innerHeight":window.innerHeight})}_OnVisibilityChange(a){a?this._iRuntime._CancelAnimationFrame():this._iRuntime._RequestAnimationFrame(),this.PostToRuntime("visibilitychange",{"hidden":a})}_OnKeyEvent(a,b){this._PostToRuntimeMaybeSync(a,{"code":b.code,"key":b.key,"which":b.which,"repeat":b.repeat,"altKey":b.altKey,"ctrlKey":b.ctrlKey,"metaKey":b.metaKey,"shiftKey":b.shiftKey,"timeStamp":b.timeStamp},!0)}_OnMouseEvent(b,c){a(c)||("mousedown"===b&&window!==window.top&&window.focus(),this._PostToRuntimeMaybeSync(b,{"button":c.button,"clientX":c.clientX,"clientY":c.clientY,"timeStamp":c.timeStamp},!0))}_OnMouseWheelEvent(a,b){this.PostToRuntime(a,{"clientX":b.clientX,"clientY":b.clientY,"deltaX":b.deltaX,"deltaY":b.deltaY,"deltaZ":b.deltaZ,"deltaMode":b.deltaMode,"timeStamp":b.timeStamp},!0)}_OnPointerEvent(a,b){"pointerdown"===a&&window!==window.top&&window.focus(),this._PostToRuntimeMaybeSync(a,{"pointerId":b.pointerId,"pointerType":b.pointerType,"clientX":b.clientX,"clientY":b.clientY,"width":b.width||0,"height":b.height||0,"pressure":b.pressure||0,"tangentialPressure":b["tangentialPressure"]||0,"tiltX":b.tiltX||0,"tiltY":b.tiltY||0,"twist":b["twist"]||0,"timeStamp":b.timeStamp},!0)}_OnTouchEvent(a,b){"pointerdown"===a&&window!==window.top&&window.focus();for(let c=0,d=b.changedTouches.length;c{this._mediaRemovedPendingPlay.has(b)||this._mediaPendingPlay.add(b)})}}TryPlayMedia(a){if("function"!=typeof a.play)throw new Error("missing play function");this._mediaRemovedPendingPlay.delete(a);let b;try{b=a.play()}catch(b){return void this._mediaPendingPlay.add(a)}b&&b.catch(()=>{this._mediaRemovedPendingPlay.has(a)||this._mediaPendingPlay.add(a)})}RemovePendingPlay(a){this._mediaPendingPlay.delete(a),this._mediaRemovedPendingPlay.add(a)}SetSilent(a){this._isSilent=!!a}_OnDebugHighlight(a){const b=a["show"];if(!b)return void(this._debugHighlightElem&&(this._debugHighlightElem.style.display="none"));this._debugHighlightElem||(this._debugHighlightElem=document.createElement("div"),this._debugHighlightElem.id="inspectOutline",document.body.appendChild(this._debugHighlightElem));const c=this._debugHighlightElem;c.style.display="",c.style.left=a["left"]-1+"px",c.style.top=a["top"]-1+"px",c.style.width=a["width"]+2+"px",c.style.height=a["height"]+2+"px",c.textContent=a["name"]}_OnRegisterSW(){window["C3_RegisterSW"]&&window["C3_RegisterSW"]()}_OnPostToDebugger(a){window["c3_postToMessagePort"]&&(a["from"]="runtime",window["c3_postToMessagePort"](a))}};RuntimeInterface.AddDOMHandlerClass(f)} + +"use strict";{const a=document.currentScript.src;self.JobSchedulerDOM=class{constructor(b){this._runtimeInterface=b,this._baseUrl=a.substr(0,a.lastIndexOf("/")+1),this._maxNumWorkers=Math.min(navigator.hardwareConcurrency||2,16),this._dispatchWorker=null,this._jobWorkers=[],this._inputPort=null,this._outputPort=null}async Init(){if(this._hasInitialised)throw new Error("already initialised");this._hasInitialised=!0;const a=this._runtimeInterface._GetWorkerURL("dispatchWorker.js");this._dispatchWorker=await this._runtimeInterface.CreateWorker(a,this._baseUrl,{name:"DispatchWorker"});const b=new MessageChannel;this._inputPort=b.port1,this._dispatchWorker.postMessage({"type":"_init","in-port":b.port2},[b.port2]),this._outputPort=await this._CreateJobWorker()}async _CreateJobWorker(){const a=this._jobWorkers.length,b=this._runtimeInterface._GetWorkerURL("jobWorker.js"),c=await this._runtimeInterface.CreateWorker(b,this._baseUrl,{name:"JobWorker"+a}),d=new MessageChannel,e=new MessageChannel;return this._dispatchWorker.postMessage({"type":"_addJobWorker","port":d.port1},[d.port1]),c.postMessage({"type":"init","number":a,"dispatch-port":d.port2,"output-port":e.port2},[d.port2,e.port2]),this._jobWorkers.push(c),e.port1}GetPortData(){return{"inputPort":this._inputPort,"outputPort":this._outputPort,"maxNumWorkers":this._maxNumWorkers}}GetPortTransferables(){return[this._inputPort,this._outputPort]}}} + +"use strict";if(window["C3_IsSupported"]){const a=false,b="undefined"!=typeof OffscreenCanvas;window["c3_runtimeInterface"]=new RuntimeInterface({useWorker:a&&b,workerMainUrl:"workerMain.js",engineScripts:["scripts/c3runtime.js"],exportType:"html5"})} \ No newline at end of file diff --git a/Platformer template/scripts/offlineClient.js b/Platformer template/scripts/offlineClient.js new file mode 100755 index 0000000..d8c3274 --- /dev/null +++ b/Platformer template/scripts/offlineClient.js @@ -0,0 +1 @@ +"use strict";{window.OfflineClientInfo=new class{constructor(){if(this._broadcastChannel="undefined"==typeof BroadcastChannel?null:new BroadcastChannel("offline"),this._queuedMessages=[],this._onMessageCallback=null,this._broadcastChannel){var a=this;this._broadcastChannel.onmessage=function(b){a._OnBroadcastChannelMessage(b)}}}_OnBroadcastChannelMessage(a){return this._onMessageCallback?void this._onMessageCallback(a):void this._queuedMessages.push(a)}SetMessageCallback(a){this._onMessageCallback=a;for(let b of this._queuedMessages)this._onMessageCallback(b);this._queuedMessages.length=0}}} \ No newline at end of file diff --git a/Platformer template/scripts/register-sw.js b/Platformer template/scripts/register-sw.js new file mode 100755 index 0000000..aeb70f5 --- /dev/null +++ b/Platformer template/scripts/register-sw.js @@ -0,0 +1 @@ +"use strict";window.C3_RegisterSW=async function(){if(navigator.serviceWorker)try{const a=await navigator.serviceWorker.register("sw.js",{scope:"./"});console.info("Registered service worker on "+a.scope)}catch(a){console.warn("Failed to register service worker: ",a)}}; \ No newline at end of file diff --git a/Platformer template/scripts/supportCheck.js b/Platformer template/scripts/supportCheck.js new file mode 100755 index 0000000..0a3ae9d --- /dev/null +++ b/Platformer template/scripts/supportCheck.js @@ -0,0 +1 @@ +"use strict";(function(){var a=document.createElement("canvas"),b=!!(a.getContext("webgl")||a.getContext("experimental-webgl")),c=[];if(b||c.push("WebGL"),"undefined"==typeof WebAssembly&&c.push("WebAssembly"),0===c.length)window["C3_IsSupported"]=!0;else{var d=document.createElement("div");d.id="notSupportedWrap",document.body.appendChild(d);var e=document.createElement("h2");e.id="notSupportedTitle",e.textContent="Software update needed",d.appendChild(e);var f=document.createElement("p");f.id="notSupportedMessage";var g="This content is not supported because your device's software is out-of-date. Try installing any available software updates. Alternatively try on a different device.",h=navigator.userAgent;/android/i.test(h)?g+="

On Android, make sure the Android System Webview and Chrome apps have updates enabled and are up-to-date.":/iphone|ipad|ipod/i.test(h)&&(g+="

Note: the iOS simulator is not currently supported due to an
Apple bug. If you are using the simulator, try testing on a real device instead."),g+="

Missing features: "+c.join(", ")+"",f.innerHTML=g,d.appendChild(f)}})(); \ No newline at end of file diff --git a/Platformer template/style.css b/Platformer template/style.css new file mode 100755 index 0000000..4fd3df5 --- /dev/null +++ b/Platformer template/style.css @@ -0,0 +1,34 @@ +html, body { + padding: 0; + margin: 0; + overflow: hidden; + + background: #000000; + color: white; +} + +html, body, canvas { + touch-action: none; + touch-action-delay: none; +} + +#notSupportedWrap { + margin: 2em auto 1em auto; + width: 75%; + max-width: 45em; + border: 2px solid #aaa; + border-radius: 1em; + padding: 2em; + background-color: #f0f0f0; + font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; + color: black; +} + +#notSupportedTitle { + font-size: 1.8em; +} + +#notSupportedMessage { + font-size: 1.2em; +} + diff --git a/Platformer template/sw.js b/Platformer template/sw.js new file mode 100755 index 0000000..4366997 --- /dev/null +++ b/Platformer template/sw.js @@ -0,0 +1 @@ +"use strict";const OFFLINE_DATA_FILE="offline.json",CACHE_NAME_PREFIX="c3offline",BROADCASTCHANNEL_NAME="offline",CONSOLE_PREFIX="[SW] ",LAZYLOAD_KEYNAME="",broadcastChannel="undefined"==typeof BroadcastChannel?null:new BroadcastChannel("offline");function PostBroadcastMessage(a){broadcastChannel&&setTimeout(()=>broadcastChannel.postMessage(a),3e3)}function Broadcast(a){PostBroadcastMessage({"type":a})}function BroadcastDownloadingUpdate(a){PostBroadcastMessage({"type":"downloading-update","version":a})}function BroadcastUpdateReady(a){PostBroadcastMessage({"type":"update-ready","version":a})}function IsUrlInLazyLoadList(a,b){if(!b)return!1;try{for(const c of b)if(new RegExp(c).test(a))return!0}catch(a){console.error("[SW] Error matching in lazy-load list: ",a)}return!1}function WriteLazyLoadListToStorage(a){return"undefined"==typeof localforage?Promise.resolve():localforage.setItem(LAZYLOAD_KEYNAME,a)}function ReadLazyLoadListFromStorage(){return"undefined"==typeof localforage?Promise.resolve([]):localforage.getItem(LAZYLOAD_KEYNAME)}function GetCacheBaseName(){return"c3offline-"+self.registration.scope}function GetCacheVersionName(a){return GetCacheBaseName()+"-v"+a}async function GetAvailableCacheNames(){const a=await caches.keys(),b=GetCacheBaseName();return a.filter((a)=>a.startsWith(b))}async function IsUpdatePending(){const a=await GetAvailableCacheNames();return 2<=a.length}async function GetMainPageUrl(){const a=await clients.matchAll({includeUncontrolled:!0,type:"window"});for(const b of a){let a=b.url;if(a.startsWith(self.registration.scope)&&(a=a.substring(self.registration.scope.length)),a&&"/"!==a)return a.startsWith("?")&&(a="/"+a),a}return""}function fetchWithBypass(a,b){return"string"==typeof a&&(a=new Request(a)),b?fetch(a.url,{headers:a.headers,mode:a.mode,credentials:a.credentials,redirect:a.redirect,cache:"no-store"}):fetch(a)}async function CreateCacheFromFileList(a,b,c){const d=await Promise.all(b.map((a)=>fetchWithBypass(a,c)));let e=!0;for(const f of d)f.ok||(e=!1,console.error("[SW] Error fetching '"+f.url+"' ("+f.status+" "+f.statusText+")"));if(!e)throw new Error("not all resources were fetched successfully");const f=await caches.open(a);try{return await Promise.all(d.map((a,c)=>f.put(b[c],a)))}catch(b){throw console.error("[SW] Error writing cache entries: ",b),caches.delete(a),b}}async function UpdateCheck(a){try{const b=await fetchWithBypass(OFFLINE_DATA_FILE,!0);if(!b.ok)throw new Error("offline.json responded with "+b.status+" "+b.statusText);const c=await b.json(),d=c.version,e=c.fileList,f=c.lazyLoad,g=GetCacheVersionName(d),h=await caches.has(g);if(h){const a=await IsUpdatePending();return void(a?(console.log("[SW] Update pending"),Broadcast("update-pending")):(console.log("[SW] Up to date"),Broadcast("up-to-date")))}const i=await GetMainPageUrl();e.unshift("./"),i&&-1===e.indexOf(i)&&e.unshift(i),console.log("[SW] Caching "+e.length+" files for offline use"),a?Broadcast("downloading"):BroadcastDownloadingUpdate(d),f&&(await WriteLazyLoadListToStorage(f)),await CreateCacheFromFileList(g,e,!a);const j=await IsUpdatePending();j?(console.log("[SW] All resources saved, update ready"),BroadcastUpdateReady(d)):(console.log("[SW] All resources saved, offline support ready"),Broadcast("offline-ready"))}catch(a){console.warn("[SW] Update check failed: ",a)}}self.addEventListener("install",(a)=>{a.waitUntil(UpdateCheck(!0).catch(()=>null))});async function GetCacheNameToUse(a,b){if(1===a.length||!b)return a[0];const c=await clients.matchAll();if(1caches.delete(a))),d}async function HandleFetch(a,b){const c=await GetAvailableCacheNames();if(!c.length)return fetch(a.request);const d=await GetCacheNameToUse(c,b),e=await caches.open(d),f=await e.match(a.request);if(f)return f;const g=await Promise.all([fetch(a.request),ReadLazyLoadListFromStorage()]),h=g[0],i=g[1];if(IsUrlInLazyLoadList(a.request.url,i))try{await e.put(a.request,h.clone())}catch(b){console.warn("[SW] Error caching '"+a.request.url+"': ",b)}return h}self.addEventListener("fetch",(a)=>{if(new URL(a.request.url).origin===location.origin){const b="navigate"===a.request.mode,c=HandleFetch(a,b);b&&a.waitUntil(c.then(()=>UpdateCheck(!1))),a.respondWith(c)}}); \ No newline at end of file