From 674f7c7079676432564e3bbcdf08921ba24d8100 Mon Sep 17 00:00:00 2001 From: Andrew R Sides Date: Tue, 9 Apr 2019 14:57:16 -0400 Subject: [PATCH] Add files via upload --- Fodder.zip | Bin 0 -> 376044 bytes appmanifest.json | 41 +++ data.json | 1 + icons/icon-128.png | Bin 0 -> 22267 bytes icons/icon-16.png | Bin 0 -> 16505 bytes icons/icon-256.png | Bin 0 -> 28930 bytes icons/icon-32.png | Bin 0 -> 17541 bytes icons/icon-512.png | Bin 0 -> 30345 bytes icons/icon-64.png | Bin 0 -> 19120 bytes icons/loading-logo.png | Bin 0 -> 19120 bytes images/past-sheet0.png | Bin 0 -> 1164 bytes images/shared-0-sheet0.png | Bin 0 -> 1682 bytes images/shared-0-sheet1.png | Bin 0 -> 2856 bytes images/shared-0-sheet2.png | Bin 0 -> 3744 bytes images/shared-0-sheet3.png | Bin 0 -> 1551 bytes images/shared-0-sheet4.png | Bin 0 -> 416 bytes index.html | 32 ++ offline.json | 1 + scripts/c3runtime.js | 664 +++++++++++++++++++++++++++++++++++++ scripts/dispatchWorker.js | 1 + scripts/jobWorker.js | 1 + scripts/main.js | 11 + scripts/offlineClient.js | 1 + scripts/register-sw.js | 1 + scripts/supportCheck.js | 1 + scripts/workerMain.js | 1 + style.css | 39 +++ sw.js | 1 + 28 files changed, 796 insertions(+) create mode 100644 Fodder.zip create mode 100644 appmanifest.json create mode 100644 data.json create mode 100644 icons/icon-128.png create mode 100644 icons/icon-16.png create mode 100644 icons/icon-256.png create mode 100644 icons/icon-32.png create mode 100644 icons/icon-512.png create mode 100644 icons/icon-64.png create mode 100644 icons/loading-logo.png create mode 100644 images/past-sheet0.png create mode 100644 images/shared-0-sheet0.png create mode 100644 images/shared-0-sheet1.png create mode 100644 images/shared-0-sheet2.png create mode 100644 images/shared-0-sheet3.png create mode 100644 images/shared-0-sheet4.png create mode 100644 index.html create mode 100644 offline.json create mode 100644 scripts/c3runtime.js create mode 100644 scripts/dispatchWorker.js create mode 100644 scripts/jobWorker.js create mode 100644 scripts/main.js create mode 100644 scripts/offlineClient.js create mode 100644 scripts/register-sw.js create mode 100644 scripts/supportCheck.js create mode 100644 scripts/workerMain.js create mode 100644 style.css create mode 100644 sw.js diff --git a/Fodder.zip b/Fodder.zip new file mode 100644 index 0000000000000000000000000000000000000000..f6718b8e8ae4d4326e10c11823ddb346007ad5f8 GIT binary patch literal 376044 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

a!^--g)&l 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 literal 0 HcmV?d00001 diff --git a/icons/icon-16.png b/icons/icon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e6a43963a81c39523f4d154e1f03693ef945eb GIT binary patch literal 16505 zcmeI3dsGuw9>;?Z6wua3*IH|r7^tm}WHP}7GKBC*P^iSEfQsFvGA2V9O)@bvAql>! zXF)5~zFcWtS8?54k7?EVs#eif*Q#BgtrgT`mBr_&t+=3TtDL%b@*v@Y*WDv~dV0>} zK$746-rw)ee17--Zsw2sdhUdAeWQm&i$tQn*;)EL@Y#?5?;Q!=V_P1O;3LYOHH8(4 zVg~a65uz0<2ZP35T(%*z*TtCb5fR;wM7>3WrqNtxAvcz`P~r)sl@jR^SdVoYW096P zEfynVVH{EmZ7$_9#!2(WWytI{^QgL3i%6vT8(mPy6&i8~BV(13CT1EXb6f2oAkb3X zcG5V5;>6P^Gi^(eH0}OWBBo6#lF3Sg++f#HrF2%ggUT)Z_)|&oF@#b@C=$himqZ&4zG)n$5+YAOHZUBpQY57uXD2Ys<#Nef2{OiE z#&ES-&4*Daq@ahC_1HMlEw!<6{vg3PdWtnVXgfzUHZdQUoW?l06p4f%sO=TFFRQ(6 zAR8NC2Pk50(vIOWIo1{#IBEbBLg%1Jj&T$)j796e^W0K~W7ty0F4pC%#4k>!Z6?OW zj?iFm_t5yENR*!BC@tWll;XHlt|(9_2xTInP=oJ;Tpkw0-xG>qU`%w0r$dYcLXH#i zgzy+)J>eK2pC*zc|EnnBeFJec7!NrNx-X+VFR1-d$uJq)a$$EmEWVVRj2LC1tdxyo zK|b*I`7jxY62@UAIW27^%@hV!ga!*WcJ=kygNbgt%yv_zP3|~x+9X29FJq7kN}Hg; zI&1Fgiw2X>VCejUgLB+!#X4IXESFgZmQ7$8w!77!CtKjLQ&=9wGERq)$}9tE3a!P! ziZK|7Y#YmwHY1g-*MiHD(X@$>Cnl(LI;C8vO2RXhIG&+bE7Rr5q;!3f4p-^bzKP%7 zwf(dOnw~K_`I!+2YXV`@^-8^5o}tz$(P6_}JB0m>g9eq7w1oBHulj!p-${rL!(`Dc zs3V@>V(}Ly-;&9vX0~q)t|bfYTS9iy!BRZ=6iE<$c$xA?;(dG>BuFD)3AIMPa8V`= z)~+>lS+E=3F=>yc>yI7g`tbO!Qp$!ZeEv|rUJnn#G9{dgbWrJLFb^J8kNpwbyTGCS z#mqwg9}>WlWsiqH1Ao-yeoXvHU~3NU89xvH(5y9}paLJnRS&c6p-!)4fY3feVXhFwFR6Kyo7RRl(Zngd>429$Es4*|+69f9(# z{@+CT;4y{Ls+7tEr3QnW!*0$e<Db z@T7#bJt}qBGTL_3uKW_Zqppk!#S#XAfS^qQ7n%>G3b-I3Xj8z2<^!n$E(i$P6mX&W zK&pTX0)jRLTxdR!D&T^EpiKc6nh&H3xF8^CQ^1Ah1E~To2ngB~aH07?s(=duf;I(Q zXg-iC;DUglO#v6052OmXARuT{z=h@msRAwt2-*~Iq4_|nfC~bGHU(U0K9DNlf`Fh+ z0T-GNqzbqoAZSy-h2{gP0xk#$+7xi1`9P|G3j%^R1zc!8kSgGUfS^qQ7n%>G3b-I3 zXj8z2<^!n$E(i$P6mX&WK&pTX0)jS?xS~Uck0~2CaqI#|i!C!{#o$=-VE&|Ye&Fzy z2s%eQ=Ezbr=<_7sXR?FlD2FKDX{Q|Er1j?qHhm)!b!*Djrxzq0DSCIjWtsD-&*!%Q$YF+)~szk4MbioI$o|fU{o~4UK zHQpWvZ|UcyE_`BWaacsH4(~HO+HD?lpfq^3uS8qW7ltuXk1#-0{@Rp10tI zIr+6;eY||o*5Ag&T`X&Qc2?pJ@z!I`8=@1Db?^LTM7NzAtGs*TC09N?8-G0S+^O?R zmKLsFMKiCbes|}mA4mOBow?QXOl$1WhL60Bms^tW|0I)CUrLIccy96X^~;w{tvY)Y zn-lqA;uj_77AHMDf6}$LS1;~&2w(Ez{ua$DV(!YnfB#%k-n#3F?^oT-?OWgTP?~pf z+7myx7S{f%GHEH>c%Y$S{VAPpDB*rswwr=NWM9!e>`s)t}*B ziz=?^pLu(zdjF+8d!CA^Xu1^dk)6M=YEW^{$WcRz)YI>-z$PcZdgFoh-#3_hue2n5 z)AQZ#d%GRp(x=`z;`{CK*CpyO$fA6%S6U&P*No<$xZIpV+Fed5U^otS(=>?~ddBikB+3oxWMs zvVZfE+l|NjkITILp7LtWUthUm+fa65*Fn)o6E|($x$VHD!2=4b7PT&06E~`2=#zVE zyyp2a>HTV-c_C^?i8*%jmZtmLdPI23(YYnlmfuL)eW`V;cW#fI c)SMq;7jDWirzztvfK?&N&YYm%m{GjoKZZ<+q5uE@ literal 0 HcmV?d00001 diff --git a/icons/icon-256.png b/icons/icon-256.png new file mode 100644 index 0000000000000000000000000000000000000000..a20135367d26b190fd30fbe45da771746df94ad1 GIT binary patch literal 28930 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 GwtoX9fPWAG literal 0 HcmV?d00001 diff --git a/icons/icon-512.png b/icons/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2ad776f0ea49bcdc1f7cbececebd126276f4e3 GIT binary patch literal 30345 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 eUx*S<8~*^MDhz!CP&_mM0000GDK zrvG2)Sfb!oFnd3|LRijOzxZs(F!j|_l?{>%;SLHq2@HpxcKaP**ult@ z$jB_97hl4}c7RuagIl7Z;O8P?1BSc?hlm3VEvLojHZT@2vm9b#Q;6C3f`z9+T0ua} zfZ^dMSM>yjI}D8*8W=gI>sv80KVai%VdZhyQFD<~g28;$iqU`?O;MxyVzdAm#3gMV zb3+S5a$lBI&6K#CHeA}}t+3gWXQ6$FxKbwCzLmCS8D#)#Wf2I07Pne)E2xc5Ct#U8bWQZNK>Gow?`DyXXAx z|NhRCiv+XnX)ZJXfPHuvZyo@U3?aa5$wz$Jk);68bm6>N^VcrwyVdm7_@Z`I~2mEYw3T`LaBxNjc%__*bckz6FUXyJ6+-`G!h16`;1zI>F zuKr9>hf*$dc z>|uij9JdXv0n?p1#K<)X34l!o@~NYnDVNRxm|oM{gX}r0Iu4X(^MOhF#13=nwd$!I zaU*_Y?z}5A4`)_YpV{U|T&%)4T>>DavT&EO_G@hX{9b@@ei9uo1oH+_94z0w#en8E zdjTYD^87L{;=K^a!1t9bo&ihsR03SF8`VqYY!U)Acj=KBA@Es`aEK|PEfOS5%LcI2 z`GdA1x~5uiMVRP46uVE?x5U4GRJ7@4+u`JtkVE}k&5EawyFURwYml{>aICU93M>aF zB*@vphFVZ)lMYLpBvIs6`3b=9PoHJuw4&FoG>0O}pW7?MRr`qoPxc!V8NkT0CWap& zu-#4(Ju}=InfJKdNxI;UaSg|9$490hx14cAXr+^M8<J^;dyLvSNU%69LEr@MY z#%=uk+VCBJ$_!IfgCTIT(6W8Rl4Qi~U|+uj6W^i$g^3{3by`$gL=TnI68R4Y_saXe zdUR)yNl;gzobbp;GIOLP!$Y^u4H`F2fJs^7h;1Fmj*`l*KIa0}*@k`@ z3&41{qn40du)0Yy6iTN297d6;f!)@Wn&s=Hni%6R^@a>pS4rAyB)V%s$c-_{hoO08 za#$f(KfphF=5al3{hTK^TbZg>KSH-G@o5BTg)G%c%Qv?TQ^>m!_bne(iyMq3lL4n9u7aOBb8!dIXId9`-kO>LX?a_4Z{L zI*VsKalao4+)E4(PP}ENoR+!{4z%p7h_<-O5^1sO)Psim`}gK(>uK=|ua1GGYN}?4 zqG`{%n$%EAPK^t1WNN%PaB~c3aXx8Atu9_T=`FaJ0MpeO8Go3uiPKkQ@Ie*@K`SdM zlQ|*}9C+$)dQ{>BaI6yBqH|EJ7+n;HI${h}v*QHLPs(2XY{3bF^>RqG$;AuEC791HrZhca@%huAc6 r56ogg#5=3q@m&$`l=z=LVH|NWl^QwVd+QMS2Mogb0$%yY;_Tl5JlY6i literal 0 HcmV?d00001 diff --git a/images/shared-0-sheet2.png b/images/shared-0-sheet2.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5def0b054eaabd5f2f3d0215a9a68d7d017e98 GIT binary patch literal 3744 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 literal 0 HcmV?d00001 diff --git a/images/shared-0-sheet3.png b/images/shared-0-sheet3.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8325ce970c9d5c51e76adff197abc90e5733eb GIT binary patch literal 1551 zcmV+q2JrcbP)Rw6Y>bf=_8_RR2Vce*Tk4BA#agCNoMTK^$Cki|_~I0y z77=vCm(iBu+$k&(tx%cMx zeZTKJ=YHq+eI20x$z`2`F2GxCh`Sh;IRW4PqT& zVE_vutOT(XR#u1LSpW}1cpAjxu(b|BJpcs}6hu%EQC5hcAcBGj3L+?opdf;RNIe6n z2%#c`ijcBG3>6_%gisMeMFw;Mve9 zG7K|75z(H7!3^+hXcQT?VFrBt+2_WNXjFT6@1Dkf2fN;Q>rLsIqYB^Fk*kwG8Z-cu z0QjB#Stbc8@f!#LaO&vri4zTpm`bJ0zd=^WAVD>L9RYUWZbzV`F2cbJY1IO>ZFKyDL{}*&!km+`_LTz|Q&c(4zK1X{YHdC4$Wa z`1|O&kK5i9Y4ok+%f_!GfUfydWQXZ6fPZ^5q>ap$Y9!FGQxYH(L}h>*_zeVr^EA?S z1X!1YXaZE@*9d_3E~Fp3>Cr5pOThX{fGiM2fLr*s8DLk0v5{w&fhYoC4}c{=m!H)J zS@=zt0K4(A2Cn5lIzo8DW8eta=Ye6LHEdUOy z#<#5mH&Y17s0KHx1?&njQTPo6(6qCQ#1BT+yv$aC^xPma3pUCG8Tj0XA#fg?K9l%I zE0-q-Tfd7Uq1jX>!x7?yL;~3c`Yx41WKAU!={7J8Sho@{udYl_)Q70g3pAX?>F@7 zzsJ|+$&20Hy$=e-N2|e+7c{M!7M%s)pq=x84c8(hV2U>F;%_Pg=-R%q>(x;9{@voS z@@*d>!~i26S1abvot-BQStL+=i2kmG*3xe6trUHp~=uydnEe(~%x zm7c-D!OG9mv+GYqN4qkaV!m9S=-^%NJog)kgl{S}Ss7ZJ_eV&edg%Dkj;X0By}$pX zuv2_)0<>h3%%mpuQ=vz_!>3O#eU-eV=Ztmpb7W-!B?$sB)496}%K)-(-zzV7+`6^D zC!fFk*eO0g0YgK+nV;s?KY7*{N~hCn$z+lM33~TvFExZGsyz2n0_HHr)e^EhGDvmd5{3Lcs5_SV!#eVg1?{zicg((%JK!neBhCtYl#gE-YLw@;bzO zKj3E zuouuh$jRq%6TpJR<8eRi!cKriJkzf8jxs=m;a>WTwlcs=jySai32@5X|K&N%fQ=%l zsz2{GKF$YNBcQrJ?>0Wp2ha$()t`48ALj$u2)NOocN-t)184-?>d(84kMjZ6HOP*r zz%|+ZdAIR#KEV1OR^6X>8z1Kb*jk(&QpWj!XtXx2!jdGqKhJv@5{-}Z0j;Dh+5LGQ zd>QizT=N0Yo)+DoZ$^NM`Gl65AQ&ODKfjp_kU5{wk^t5~8U6WI1k~Y6m`~s%Ktg|> zmjKc8362O5*`MboK=6D57XdQ*^IQZ-m`~s$Kt_L_hX5J#30wq#v7-C)JOtR`w>zJ} zO#o}Ki2gh;0qp%E<`dc?pdI7A@+=bIl}NZ{#}n#R6#1vx)L#Gq002ovPDHLkV1j$N B;AsE= literal 0 HcmV?d00001 diff --git a/images/shared-0-sheet4.png b/images/shared-0-sheet4.png new file mode 100644 index 0000000000000000000000000000000000000000..b26c6b98a75d6c84309fc793ccaab1cbffb04017 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2d_FfgWjx;TbpI47q_Bpk3f@Xff# zD#3)s%^5*3$T1}zy!U@&=-JiR@>o|Zs^}m4{!m;q^!I9irW}Q@&W9N{Zrpgse*fOz zP5Lb-_!`%2iCE+4?^V!rWnHA+2;fwT*m>~OZO8iNPNk2Mvx)U4Djz*)ak0PF}JHhCG9(tDnm{r-UW| DIVPv2 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..94bb39f --- /dev/null +++ b/index.html @@ -0,0 +1,32 @@ + + + + +Fodder + + + + + + + + + + + + + +

+ + + + + + + + \ No newline at end of file diff --git a/offline.json b/offline.json new file mode 100644 index 0000000..aa40966 --- /dev/null +++ b/offline.json @@ -0,0 +1 @@ +{"version":1554835957910,"fileList":["scripts/c3runtime.js","data.json","style.css","scripts/offlineClient.js","images/shared-0-sheet0.png","images/shared-0-sheet1.png","images/past-sheet0.png","images/shared-0-sheet3.png","images/shared-0-sheet4.png","images/shared-0-sheet2.png","scripts/main.js","scripts/dispatchWorker.js","scripts/jobWorker.js","scripts/workerMain.js","scripts/supportCheck.js","icons/loading-logo.png","icons/icon-16.png","icons/icon-32.png","icons/icon-64.png","icons/icon-128.png","icons/icon-256.png","icons/icon-512.png","scripts/register-sw.js"]} \ No newline at end of file diff --git a/scripts/c3runtime.js b/scripts/c3runtime.js new file mode 100644 index 0000000..6a4ddfb --- /dev/null +++ b/scripts/c3runtime.js @@ -0,0 +1,664 @@ +// 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(Q)}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 P(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=S[e._dbInfo.name];if(b&&b.dbReady)return b.dbReady});return D(a,d,d),a}function u(f){j(f);for(var a,g=S[f.name],b=g.forages,c=0;c>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+=X[(3&b[a])<<4|b[a+1]>>4],c+=X[(15&b[a+1])<<2|b[a+2]>>6],c+=X[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(e,a,b,c){e.executeSql("CREATE TABLE IF NOT EXISTS "+a.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],b,c)}function A(g,i,b,c,d,e){g.executeSql(b,c,d,function(f,j){j.code===j.SYNTAX_ERR?f.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[i.storeName],function(f,a){a.rows.length?e(f,j):z(f,i,function(){f.executeSql(b,c,d,e)},e)},e):e(f,j)},e)}function B(j,a,i,c){var d=this;j=g(j);var b=new P(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){A(b,h,"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(0 '__WebKitDatabaseInfoTable__'",[],function(b,c){for(var d=[],i=0;ie?void a(null):void j.ready().then(function(){v(j._dbInfo,U,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 C(b,a),b},keys:function(d){var i=this,a=new P(function(d,b){i.ready().then(function(){v(i._dbInfo,U,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 C(a,d),a},dropInstance:function(i,m){m=h.apply(this,arguments);var b=this.config();i="function"!=typeof i&&i||{},i.name||(i.name=i.name||b.name,i.storeName=i.storeName||b.storeName);var c,d=this;if(i.name){var e=i.name===b.name&&d._dbInfo.db,f=e?P.resolve(d._dbInfo.db):n(i).then(function(a){var b=S[i.name],c=b.forages;b.db=a;for(var d=0;d{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},C3.range=function*(c,a){if(!isFinite(Math.abs(c-a)))throw new Error("Invalid parameters");if(c>a)for(let b=c-1;b>=a;b--)yield b;else for(let b=c;b1/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){if(C3.Supports.ArraySortProbablyStable)return void a.sort(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;const a=this._callbackArguments;this._callbackArguments=null,a?this._callback(...a):this._callback(),this._ignoreReset=!1}Reset(){this._ignoreReset||(this._CancelTimer(),this._callbackArguments=null,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 C3.SpreadStringSafe(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 C3.SpreadStringSafe(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"string"==typeof a)}} + +// ../lib/str/bbstring.js +"use strict";{function a(a,c,d){const f=b.get(d);if(!f)return a;else if("string"!=typeof f){if(Array.isArray(f)){let a=f[0],b=f[1];return c?"":`<${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=C3.SpreadStringSafe(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(h.isSvg){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.drawImage(f,0,0,this._width,this._height),f=a}const i=C3.isPOT(this._width)&&C3.isPOT(this._height),j=this._renderer.GetMaxTextureSize();if(this._width>j||this._height>j)throw new Error("texture data exceeds maximum texture size");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"],h.premultiplyAlpha);const m=a(this._pixelFormat,k);if(!this._renderer.SupportsNPOTTextures()&&!i&&this._isTiled){if(null===f)throw new Error("cannot pass null data when creating a NPOT tiled texture without NPOT support");if(f instanceof ArrayBuffer&&(f=new ImageData(new Uint8ClampedArray(f),this._width,this._height)),f instanceof ImageData){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.putImageData(f,0,0),f=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="nearest"!==this._sampling,b.drawImage(f,0,0,this._width,this._height,0,0,a.width,a.height),k.texImage2D(k.TEXTURE_2D,0,m.internalformat,m.format,m.type,a)}else if(2<=l){let a;a=this._isMipMapped?Math.floor(Math.log2(Math.max(this._width,this._height))+1):1,k.texStorage2D(k.TEXTURE_2D,a,m.sizedinternalformat,this._width,this._height),f instanceof ArrayBuffer?k.texSubImage2D(k.TEXTURE_2D,0,0,0,this._width,this._height,m.format,m.type,new Uint8Array(f)):null!==f&&k.texSubImage2D(k.TEXTURE_2D,0,0,0,m.format,m.type,f)}else f instanceof ArrayBuffer?k.texImage2D(k.TEXTURE_2D,0,m.internalformat,this._width,this._height,0,m.format,m.type,new Uint8Array(f)):null===f?k.texImage2D(k.TEXTURE_2D,0,m.internalformat,this._width,this._height,0,m.format,m.type,null):k.texImage2D(k.TEXTURE_2D,0,m.internalformat,m.format,m.type,f);null!==f&&this._SetTextureParameters(k),k.bindTexture(k.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,g.add(this)}_CreateDynamic(f,h,i){var j=Math.floor;if(i=Object.assign({},e,i),this._texture)throw new Error("already created texture");if(this._isTiled=!!i.isTiled,this._tileType=i.tileType,this._sampling=i.sampling,this._pixelFormat=i.pixelFormat,this._isMipMapped=!!i.mipMap,this._mipMapQuality=i.mipMapQuality,!c.has(this._sampling))throw new Error("invalid sampling");if(!b.has(this._pixelFormat))throw new Error("invalid pixel format");if(!d.has(this._mipMapQuality))throw new Error("invalid mipmap quality");this._isStatic=!1,this._width=j(f),this._height=j(h);const k=C3.isPOT(this._width)&&C3.isPOT(this._height),l=this._renderer.GetMaxTextureSize();if(0>=this._width||0>=this._height)throw new Error("invalid texture size");if(this._width>l||this._height>l)throw new Error("texture exceeds maximum texture size");if(!this._renderer.SupportsNPOTTextures()&&this._isTiled&&!k)throw new Error("non-power-of-two tiled textures not supported");const m=this._renderer.GetContext(),n=this._renderer.GetWebGLVersionNumber();this._texture=m.createTexture(),m.bindTexture(m.TEXTURE_2D,this._texture),m.pixelStorei(m["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],i.premultiplyAlpha);const o=a(this._pixelFormat,m),p=2<=n?o.sizedinternalformat:o.internalformat;m.texImage2D(m.TEXTURE_2D,0,p,this._width,this._height,0,o.format,o.type,null),this._SetTextureParameters(m),m.bindTexture(m.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,g.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");if("nearest"===this._sampling)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;else if(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);const b="trilinear"===this._sampling&&!this._renderer.HasMajorPerformanceCaveat();a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,b?a.LINEAR_MIPMAP_LINEAR:a.LINEAR_MIPMAP_NEAREST)}else a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),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({},f,c);const d=b.width||b.videoWidth,e=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===e){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=e;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(){g.clear()}static allTextures(){return g.values()}}} + +// ../lib/gfx/renderTarget.js +"use strict";{const a=new Set(["nearest","bilinear","trilinear"]),b={sampling:"trilinear",alpha:!0,readback:!0,isDefaultSize:!0,multisampling:0},c=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._sampling="trilinear",this._alpha=!0,this._readback=!0,this._multisampling=0}_Create(d,e,f){f=Object.assign({},b,f);const g=this._renderer.GetWebGLVersionNumber();if(this._texture||this._renderBuffer)throw new Error("already created render target");if(this._sampling=f.sampling,this._alpha=!!f.alpha,this._readback=!!f.readback,this._isDefaultSize=!!f.isDefaultSize,this._multisampling=f.multisampling,!a.has(this._sampling))throw new Error("invalid sampling");if(0g||this._readback))throw new Error("invalid use of multisampling");if(2>g&&(this._readback=!0),this._width=d,this._height=e,0>=this._width||0>=this._height)throw new Error("invalid render target size");const h=this._renderer.GetContext();if(this._frameBuffer=h.createFramebuffer(),h.bindFramebuffer(h.FRAMEBUFFER,this._frameBuffer),this._readback){this._texture=this._renderer.CreateDynamicTexture(this._width,this._height,{sampling:this._sampling,pixelFormat:this._alpha?"rgba8":"rgb8",mipMap:!1});const a=this._texture._GetTexture();h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,a,0)}else{this._renderBuffer=h.createRenderbuffer(),h.bindRenderbuffer(h.RENDERBUFFER,this._renderBuffer);const a=this._alpha?h.RGBA8:h.RGB8;if(0a&&(this._multisampling=a)}else this._multisampling=0}0===this._multisampling?h.renderbufferStorage(h.RENDERBUFFER,a,this._width,this._height):h.renderbufferStorageMultisample(h.RENDERBUFFER,this._multisampling,a,this._width,this._height),h.framebufferRenderbuffer(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.RENDERBUFFER,this._renderBuffer),h.bindRenderbuffer(h.RENDERBUFFER,null)}h.bindFramebuffer(h.FRAMEBUFFER,null),c.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");c.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"nearest"!==this._sampling}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={sampling:this._sampling,alpha:this._alpha,readback:this._readback};return this._isDefaultSize||(a.width=this._width,a.height=this._height),a}IsCompatibleWithOptions(a){return a=Object.assign({},b,a),"nearest"!==a.sampling===this.IsLinearSampling()&&!!a.alpha===this.HasAlpha()&&!(2<=this._renderer.GetWebGLVersionNumber()&&!!a.readback!==this.IsReadback())&&("number"==typeof a.width||"number"==typeof a.height?!this.IsDefaultSize()&&this.GetWidth()===a.width&&this.GetHeight()===a.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(){c.clear()}static allRenderTargets(){return c.values()}static ResizeAll(a,b){for(const d of c)d.IsDefaultSize()&&d._Resize(a,b)}}} + +// ../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._uZElevation=new C3.Gfx.WebGLShaderUniform(this,"zElevation","float"),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._uZElevation.Init1f(0),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._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}Is3D(){return this._is3d}GetNumVertexComponents(){return this._is3d?3:2}SetBaseZ(e){this._baseZ=e}GetBaseZ(){return this._baseZ}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._baseZ+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._baseZ+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;const n=this._baseZ+this._currentZ;if(2===this._topOfBatch&&this._lastPointZ===n)this._batch[this._batchPtr-1]._indexCount++;else{const e=this.PushBatch();e.InitPoints(i,n),this._topOfBatch=2,this._lastPointZ=n}const _=this._pointData;_[i++]=e,_[i++]=t,_[i++]=r,_[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}}Start(){2<=this.GetWebGLVersionNumber()&&this._gl["bindVertexArray"](this._dummyVao)}Finish(){this.EndBatch(),2<=this.GetWebGLVersionNumber()&&this._gl["bindVertexArray"](null),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._stateGroups.values())e.OnContextLost();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;for(const e of this._stateGroups.values())e.OnContextRestored(this);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";{function a(a){if(!a)return"";const b=a.split(".");if(2>b.length)return"";const d=b[b.length-1].toLowerCase();return c.get(d)||""}const b=new Set(["local","remote"]),c=new Map([["mp4","video/mp4"],["webm","video/webm"],["m4a","audio/mp4"],["mp3","audio/mpeg"],["js","application/javascript"],["wasm","application/wasm"]]);C3.AssetManager=class extends C3.DefendedBase{constructor(a,c){if(super(),!b.has(c.defaultLoadPolicy))throw new Error("invalid load policy");if(this._runtime=a,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")}async CordovaFetchLocalFileAsBlob(b){const c=await this._CordovaFetchLocalFileAs(b,"buffer"),d=a(b);return new Blob([c],{"type":d})}async CordovaFetchLocalFileAsBlobURL(a){const b=await this.CordovaFetchLocalFileAsBlob(a);return URL.createObjectURL(b)}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()||"playable-ad"===this._runtime.GetExportType()?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(a){if(a.loadPolicy&&!b.has(a.loadPolicy))throw new Error("invalid load policy");let c=this._assetsByUrl.get(a.url);return c?c:(c=C3.New(C3.ImageAsset,this,{url:a.url,size:a.size||0,loadPolicy:a.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(){if("undefined"==typeof FontFace)return Promise.resolve();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);try{await d.load()}catch(b){console.warn(`[C3 runtime] Failed to load web font '${a}': `,b)}}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()}function b(c,a){return c.GetWorldInfo().GetZElevation()-a.GetWorldInfo().GetZElevation()}const c=new C3.Rect,d=new C3.Quad,e=[],f=new C3.Rect,g=new C3.Rect,h=vec3.fromValues(0,1,0);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=c[16],this._angle=0,this._isAngleEnabled=!0,this._viewport=C3.New(C3.Rect),this._viewportZ0=C3.New(C3.Rect),this._startupInitialInstances=[],this._initialInstances=[],this._createdGlobalUids=[],this._instances=[],this._zIndicesUpToDate=!1,this._anyInstanceZElevated=!1,this._effectList=C3.New(C3.EffectList,this,c[15]),this._renderGrid=null,this._lastRenderList=[],this._isRenderListUpToDate=!1,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(),this._instances.splice(c,1),this.SetZIndicesChanged(),this._MaybeResetAnyInstanceZElevatedFlag())}_SetAnyInstanceZElevated(){this._anyInstanceZElevated=!0}_MaybeResetAnyInstanceZElevatedFlag(){0===this._instances.length&&(this._anyInstanceZElevated=!1)}_SortInstancesByLastCachedZIndex(b){if(b){const a=new Set;for(const b of this._instances){const c=b.GetWorldInfo()._GetLastCachedZIndex();0<=c&&a.add(c)}let b=-1;for(const c of this._instances){const d=c.GetWorldInfo();if(!(0<=d._GetLastCachedZIndex())){for(++b;a.has(b);)++b;d._SetZIndex(b)}}}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._anyInstanceZElevated=!1,this.SetZIndicesChanged()}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._isRenderListUpToDate=!1}IsVisible(){return this._isVisible}SetVisible(a){a=!!a;this._isVisible===a||(this._isVisible=a,this._runtime.UpdateRender())}GetViewport(){return this._viewport}GetViewportForZ(a,b){const c=this._viewportZ0;if(0===a)b.copy(c);else{const d=this.Get2DScaleFactorToZ(a),e=c.midX(),f=c.midY(),g=.5*c.width()/d,h=.5*c.height()/d;b.set(e-g,f-h,e+g,f+h)}}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 0Number.EPSILON){this._UpdateZIndices();const b=this._useRenderCells&&0===this.GetZElevation()&&!this._anyInstanceZElevated;b?this._DrawInstances_RenderCells(a):this._DrawInstances(a,this._instances)}a.SetBaseZ(0),a.SetCurrentZ(0),a.SetCameraXYZ(0,0,100),a.SetLookXYZ(0,0,0),e&&this._DrawLayerOwnTextureToRenderTarget(a,f,b,c),g&&a.EndQuery(g),this._curRenderTarget=null}_DrawInstances(a,b){const c=this._viewport,d=this._curRenderTarget;let e=null;for(let f=0,g=b.length;fthis._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||b.IsContextLost()||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}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.Get()}SetTime(a){if(this._playheadTime.Set(a),0>this._playheadTime.Get()&&this._playheadTime.Set(0),this._playheadTime.Get()>=this._totalTime&&this._playheadTime.Set(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.Get());!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.Get())return;this.Play(!0)}}Play(a=!1){this.IsReleased()||this.IsScheduled()||this.IsPlaying()||!this.IsComplete()&&!a||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.Set(0);let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime.Get());!a&&c&&(a=!0)}a&&this.GetRuntime().UpdateRender()}SetInitialState(){if(this.SetPlaying(!0),this.SetScheduled(!1),this.OnStarted(),this.IsComplete()){this._completedTick=-1,this._initialStateSet=!0,this.IsForwardPlayBack()?this._playheadTime.Set(0):this._playheadTime.Set(this._totalTime);for(const a of this._tracks)a.SetInitialState()}else for(const a of this._tracks)a.SetResumeState()}Tick(a,b){this._playheadTime.Add(a*b*this._playbackRate);let c;if(c=this.IsForwardPlayBack()?this._playheadTime.Get()>=this._totalTime:0>=this._playheadTime.Get(),c){this.IsForwardPlayBack()?this._playheadTime.Set(this._totalTime):this._playheadTime.Set(0);for(const a of this._tracks)a.SetEndState();return this.Stop(!0),this.OnCompleted(),!0}else{let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime.Get());!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}CleanCaches(){for(const a of this._propertyTracks)a.CleanCaches();this._instance=null,this._worldInfo=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,b){const c=C3.PropertyTrack.CreateEmpty(this,a,b);return this._propertyTracks.push(c),c}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,d){const e=[];if(e[a]=[],e[a][0]=c,d)for(let b=0;bc.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._tickFunc=()=>this._OnTick(),this._tick2Func=()=>this._OnTick2(),this._beforeLayoutChange=()=>this._OnBeforeChangeLayout(),this._layoutChange=()=>this._OnAfterChangeLayout()}Release(){const a=this._runtime.Dispatcher();a.removeEventListener("tick",this._tickFunc),this._tickFunc=null,a.removeEventListener("tick2",this._tick2Func),this._tick2Func=null,a.removeEventListener("beforelayoutchange",this._beforeLayoutChange),this._beforeLayoutChange=null,a.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}AddRuntimeListeners(){const a=this._runtime.Dispatcher();a.addEventListener("beforelayoutchange",this._beforeLayoutChange),a.addEventListener("layoutchange",this._layoutChange)}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)}_OnTick(){if(this._changingLayout)return;let a=!1;for(this._isTickingTimelines=!0;this._scheduledTimelines.length;){const a=this._scheduledTimelines.pop();a.SetInitialState(),this._playingTimelines.push(a)}const b=this._runtime.GetDt(),c=this._runtime.GetTimeScale();for(const d of this._playingTimelines){if(d.IsMarkedForRemoval())continue;const e=d.Tick(b,c);!a&&e&&(a=!0)}this._isTickingTimelines=!1,a&&this.GetRuntime().UpdateRender()}_OnTick2(){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("tick",this._tickFunc),a.addEventListener("tick2",this._tick2Func),this._hasRuntimeListeners=!0}}_MaybeRemoveRuntimeListeners(){if(!this._playingTimelines.length&&!this._scheduledTimelines.length&&!this._isTickingTimelines){const a=this._runtime.Dispatcher();a.removeEventListener("tick",this._tickFunc),a.removeEventListener("tick2",this._tick2Func),this._hasRuntimeListeners=!1}}_OnBeforeChangeLayout(){for(this._changingLayout=!0;this._scheduledTimelines.length;)this.DeScheduleTimeline(this._scheduledTimelines.pop());for(;this._playingTimelines.length;)this.CompleteTimeline(this._playingTimelines.pop());this._MaybeRemoveRuntimeListeners();for(const a of this._timelines)a.CleanCaches()}_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";{class a{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._sid=b[1],this._index=b[2],this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}CleanCaches(){this._propertyAdapter&&this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const b=this._GetSdkBehaviourInstance(),c=this._index,d=this._propertyTrack;let e=this._propertyTrack.GetPropertyKeyframeType();return"numeric"===e&&"combo"===d.GetPropertyType()&&(e="combo"),"combo"===e||"boolean"===e||"text"===e?this._propertyAdapter=C3.New(a.NoInterpolationPropertyAdapter,d,b,c):"numeric"===e?this._propertyAdapter=C3.New(a.NumericPropertyAdapter,d,b,c):"color"===e?this._propertyAdapter=C3.New(a.ColorPropertyAdapter,d,b,c):void 0,this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){const d=C3.PropertyTrack.PropertySourceAdapter.GetInterpolateFunc(this._propertyTrack),e=d(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(e)}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)}_GetSdkBehaviourInstance(){const a=this._track.GetInstance(),b=a.GetBehaviorIndexBySID(this._sid),c=a.GetBehaviorInstances()[b];return c.GetSdkInstance()}}C3.PropertyTrack.BehaviorSourceAdapter=a} + +// c3/timelines/propertySourceAdapters/effectSourceAdapter.js +"use strict";{class a{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._name=b[1],this._index=b[2],this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}CleanCaches(){this._propertyAdapter&&this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const b=this._GetEffectParameters(),c=this._index,d=this._propertyTrack;let e=this._propertyTrack.GetPropertyKeyframeType();return"numeric"===e&&"combo"===d.GetPropertyType()&&(e="combo"),"combo"===e||"boolean"===e||"text"===e?this._propertyAdapter=C3.New(a.NoInterpolationPropertyAdapter,d,b,c):"numeric"===e?this._propertyAdapter=C3.New(a.NumericPropertyAdapter,d,b,c):"color"===e?this._propertyAdapter=C3.New(a.ColorPropertyAdapter,d,b,c):void 0,this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){if(this._GetEffectParameters()){const d=C3.PropertyTrack.PropertySourceAdapter.GetInterpolateFunc(this._propertyTrack),e=d(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(e)}}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.PropertyTrack.EffectSourceAdapter=a} + +// c3/timelines/propertySourceAdapters/instanceVariableSourceAdapter.js +"use strict";{class a{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._index=b[1],this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}CleanCaches(){this._propertyAdapter&&this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const b=this._track.GetInstance(),c=this._index,d=this._propertyTrack;switch(d.GetPropertyType()){case"boolean":this._propertyAdapter=C3.New(a.NoInterpolationPropertyAdapter,d,b,c);break;case"string":this._propertyAdapter=C3.New(a.NoInterpolationPropertyAdapter,d,b,c);break;case"number":this._propertyAdapter=C3.New(a.NumericPropertyAdapter,d,b,c);}return this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){const d=C3.PropertyTrack.PropertySourceAdapter.GetInterpolateFunc(this._propertyTrack),e=d(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(e)}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.PropertyTrack.InstanceVariableSourceAdapter=a} + +// c3/timelines/propertySourceAdapters/pluginSourceAdapter.js +"use strict";{class a{constructor(a,b){this._propertyTrack=a,this._track=this._propertyTrack.GetTrack(),this._index=b[1],this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}CleanCaches(){this._propertyAdapter&&this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const b=this._GetSdkPluginInstance(),c=this._index,d=this._propertyTrack;let e=d.GetPropertyKeyframeType();return"numeric"===e&&"combo"===d.GetPropertyType()&&(e="combo"),"combo"===e||"boolean"===e||"text"===e?this._propertyAdapter=C3.New(a.NoInterpolationPropertyAdapter,d,b,c):"numeric"===e?this._propertyAdapter=C3.New(a.NumericPropertyAdapter,d,b,c):"color"===e?this._propertyAdapter=C3.New(a.ColorPropertyAdapter,d,b,c):void 0,this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){const d=C3.PropertyTrack.PropertySourceAdapter.GetInterpolateFunc(this._propertyTrack),e=d(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(e)}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)}_GetSdkPluginInstance(){return this._track.GetInstance().GetSdkInstance()}}C3.PropertyTrack.PluginSourceAdapter=a} + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapter.js +"use strict";{class a{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}CleanCaches(){this._propertyAdapter&&this._propertyAdapter.CleanCaches()}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const b=this._propertyTrack.GetPropertyName();return this._propertyAdapter="offsetColor"===b?C3.New(a.ColorPropertyAdapter,this._propertyTrack):C3.New(a.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.PropertyTrack.WorldInstanceSourceAdapter=a} + +// 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}CleanCaches(){this._worldInfo=null,this._saveState=null}GetWorldInfo(){return this._worldInfo?this._worldInfo:(this._worldInfo=this._propertyTrack.GetTrack().GetWorldInfo(),this._worldInfo)}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/behaviorSourceAdapterProperties/colorPropertyAdapter.js +"use strict";{const a=0;class b extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkBehaviourInstance=b,this._propertyIndex=c,this._lastValueR=0,this._lastValueG=0,this._lastValueB=0}Release(){this._sdkBehaviourInstance=null,super.Release()}SetInitialState(){this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._FirstKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){if(!this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())){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.GetCurrentState()}GetCurrentState(){return this._sdkBehaviourInstance.GetPropertyValueByIndex(this._propertyIndex)}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=this._sdkBehaviourInstance,e=this._propertyIndex,f=c[a],h=c[1],g=c[2],b=this._lastValueR,i=this._lastValueG,j=this._lastValueB;this._PickFirstAbsoluteUpdate(()=>d.SetPropertyColorOffsetValueByIndex(e,-b,-i,-j),()=>d.SetPropertyColorOffsetValueByIndex(e,-b+f,-i+h,-j+g)),this._lastValueR=f,this._lastValueG=h,this._lastValueB=g}_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())}_Getter(){const a=this._sdkBehaviourInstance,b=this._propertyIndex,c=a.GetPropertyValueByIndex(b);return this._GetColorFromArray(c)}_GetColorFromArray(b){return C3.IsInstanceOf(b,C3.Color)?b:new C3.Color(b[a],b[1],b[2])}}C3.PropertyTrack.BehaviorSourceAdapter.ColorPropertyAdapter=b} + +// c3/timelines/propertySourceAdapters/behaviorSourceAdapterProperties/noInterpolationPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkBehaviourInstance=b,this._propertyIndex=c}Release(){this._sdkBehaviourInstance=null,super.Release()}SetInitialState(){}SetResumeState(){}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._sdkBehaviourInstance.GetPropertyValueByIndex(this._propertyIndex)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=C3.PropertyTrack.PropertySourceAdapter.GetWillChangeFunc(this._propertyTrack);b(this._propertyIndex,this._sdkBehaviourInstance,a,"behavior")&&this._sdkBehaviourInstance.SetPropertyValueByIndex(this._propertyIndex,a)}}C3.PropertyTrack.BehaviorSourceAdapter.NoInterpolationPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/behaviorSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkBehaviourInstance=b,this._propertyIndex=c,this._lastValue=0}Release(){this._sdkBehaviourInstance=null,super.Release()}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._sdkBehaviourInstance.GetPropertyValueByIndex(this._propertyIndex)}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,c=this._sdkBehaviourInstance,d=this._propertyIndex;this._PickResultMode(()=>c.SetPropertyOffsetValueByIndex(d,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>c.SetPropertyOffsetValueByIndex(d,b),()=>c.SetPropertyOffsetValueByIndex(d,a-b))}),this._lastValue=a}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.BehaviorSourceAdapter.NumericPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/effectSourceAdapterProperties/colorPropertyAdapter.js +"use strict";{const a=0;class b extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._effectParameters=b,this._parameterIndex=c,this._lastValueR=0,this._lastValueG=0,this._lastValueB=0}Release(){this._effectParameters=null,super.Release()}SetInitialState(){this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._FirstKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){if(!this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())){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._effectParameters[this._parameterIndex].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._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}_Setter(a,c,d){this._effectParameters[this._parameterIndex].addRgb(a,c,d)}_Getter(){return this._effectParameters[this._parameterIndex].clone()}_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.EffectSourceAdapter.ColorPropertyAdapter=b} + +// c3/timelines/propertySourceAdapters/effectSourceAdapterProperties/noInterpolationPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._effectParameters=b,this._parameterIndex=c}Release(){this._effectParameters=null,super.Release()}SetInitialState(){}SetResumeState(){}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._effectParameters[this._parameterIndex]}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=C3.PropertyTrack.PropertySourceAdapter.GetWillChangeFunc(this._propertyTrack);b(this._parameterIndex,this._effectParameters,a,"effect")&&(this._effectParameters[this._parameterIndex]=a)}}C3.PropertyTrack.EffectSourceAdapter.NoInterpolationPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/effectSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._effectParameters=b,this._parameterIndex=c,this._lastValue=0}Release(){this._effectParameters=null,super.Release()}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._effectParameters[this._parameterIndex]}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._effectParameters[this._parameterIndex]+=a-b},()=>{this._PickFirstAbsoluteUpdate(()=>{this._effectParameters[this._parameterIndex]+=b},()=>{this._effectParameters[this._parameterIndex]+=a-b})}),this._lastValue=a,C3.Timeline.LAYOUT_RENDER_CHANGE}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.EffectSourceAdapter.NumericPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/instanceVariableSourceAdapterProperties/noInterpolationPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._instance=b,this._instanceVariableIndex=c}Release(){this._instance=null,super.Release()}SetInitialState(){}SetResumeState(){}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._instance.GetInstanceVariableValue(this._instanceVariableIndex)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=C3.PropertyTrack.PropertySourceAdapter.GetWillChangeFunc(this._propertyTrack);b(this._instanceVariableIndex,this._instance,a,"instance-variable")&&this._instance.SetInstanceVariableValue(this._instanceVariableIndex,a)}}C3.PropertyTrack.InstanceVariableSourceAdapter.NoInterpolationPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/instanceVariableSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._instance=b,this._instanceVariableIndex=c,this._lastValue=0}Release(){this._instance=null,super.Release()}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._instance.GetInstanceVariableValue(this._instanceVariableIndex)}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,c=this._instance,d=this._instanceVariableIndex;this._PickResultMode(()=>c.SetInstanceVariableOffset(d,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>c.SetInstanceVariableOffset(d,b),()=>c.SetInstanceVariableOffset(d,a-b))}),this._lastValue=a}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.InstanceVariableSourceAdapter.NumericPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/pluginSourceAdapterProperties/colorPropertyAdapter.js +"use strict";{const a=0;class b extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkInstance=b,this._propertyIndex=c,this._lastValueR=0,this._lastValueG=0,this._lastValueB=0}Release(){this._sdkInstance=null,super.Release()}SetInitialState(){this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._FirstKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){if(!this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())){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.GetCurrentState()}GetCurrentState(){return this._sdkInstance.GetPropertyValueByIndex(this._propertyIndex)}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=this._sdkInstance,e=this._propertyIndex,f=c[a],h=c[1],g=c[2],b=this._lastValueR,i=this._lastValueG,j=this._lastValueB;return this._PickFirstAbsoluteUpdate(()=>d.SetPropertyColorOffsetValueByIndex(e,-b,-i,-j),()=>d.SetPropertyColorOffsetValueByIndex(e,-b+f,-i+h,-j+g)),this._lastValueR=f,this._lastValueG=h,this._lastValueB=g,C3.Timeline.LAYOUT_RENDER_CHANGE}_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())}_Getter(){const a=this._sdkInstance,b=this._propertyIndex,c=a.GetPropertyValueByIndex(b);return this._GetColorFromArray(c)}_GetColorFromArray(b){return C3.IsInstanceOf(b,C3.Color)?b:new C3.Color(b[a],b[1],b[2])}}C3.PropertyTrack.PluginSourceAdapter.ColorPropertyAdapter=b} + +// c3/timelines/propertySourceAdapters/pluginSourceAdapterProperties/noInterpolationPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkInstance=b,this._propertyIndex=c}Release(){this._sdkInstance=null,super.Release()}SetInitialState(){}SetResumeState(){}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._sdkInstance.GetPropertyValueByIndex(this._propertyIndex)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=C3.PropertyTrack.PropertySourceAdapter.GetWillChangeFunc(this._propertyTrack);if(b(this._propertyIndex,this._sdkInstance,a,"plugin"))return this._sdkInstance.SetPropertyValueByIndex(this._propertyIndex,a),C3.Timeline.LAYOUT_RENDER_CHANGE}}C3.PropertyTrack.PluginSourceAdapter.NoInterpolationPropertyAdapter=a} + +// c3/timelines/propertySourceAdapters/pluginSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{class a extends C3.PropertyTrack.PropertyAdapter{constructor(a,b,c){super(a),this._sdkInstance=b,this._propertyIndex=c,this._lastValue=0}Release(){this._sdkInstance=null,super.Release()}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._sdkInstance.GetPropertyValueByIndex(this._propertyIndex)}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,c=this._sdkInstance,d=this._propertyIndex;return this._PickResultMode(()=>c.SetPropertyOffsetValueByIndex(d,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>c.SetPropertyOffsetValueByIndex(d,b),()=>c.SetPropertyOffsetValueByIndex(d,a-b))}),this._lastValue=a,C3.Timeline.LAYOUT_RENDER_CHANGE}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.PluginSourceAdapter.NumericPropertyAdapter=a} + +// 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(){this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._FirstKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){if(!this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())){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._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.GetWorldInfo().GetUnpremultipliedColor().clone()}_Setter(a,c,d){this.GetWorldInfo().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/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}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.GetWorldInfo())}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,c=this.GetWorldInfo();return this._PickResultMode(()=>this._setter(c,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>this._setter(c,b),()=>this._setter(c,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/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,d){let e;return"behavior"===d?e=b.GetPropertyValueByIndex(a):"effect"===d?e=b[a]:"instance-variable"===d?e=b.GetInstanceVariableValue(a):"plugin"===d?e=b.GetPropertyValueByIndex(a):void 0,e!==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,d){let e;return"behavior"===d?e=b.GetPropertyValueByIndex(a):"effect"===d?e=b[a]:"instance-variable"===d?e=b.GetInstanceVariableValue(a):"plugin"===d?e=b.GetPropertyValueByIndex(a):void 0,e!==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,d){let e;return"behavior"===d?e=b.GetPropertyValueByIndex(a):"effect"===d?e=b[a]:"instance-variable"===d?e=b.GetInstanceVariableValue(a):"plugin"===d?e=b.GetPropertyValueByIndex(a):void 0,!!e!=!!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,f){var g=Math.floor;let h;return"behavior"===f?h=d.GetPropertyValueByIndex(c):"effect"===f?h=d[c]:"instance-variable"===f?h=d.GetInstanceVariableValue(c):"plugin"===f?h=d.GetPropertyValueByIndex(c):void 0,Array.isArray(e)?(a[0]=e[0],a[1]=e[1],a[2]=e[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(e),a[0]=g(255*TEMP_COLOR_ARRAY_3.getR()),a[1]=g(255*TEMP_COLOR_ARRAY_3.getG()),a[2]=g(255*TEMP_COLOR_ARRAY_3.getB())),Array.isArray(h)?(b[0]=h[0],b[1]=h[1],b[2]=h[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(h),b[0]=g(255*TEMP_COLOR_ARRAY_3.getR()),b[1]=g(255*TEMP_COLOR_ARRAY_3.getG()),b[2]=g(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,d){let e;return"behavior"===d?e=b.GetPropertyValueByIndex(a):"effect"===d?e=b[a]:"instance-variable"===d?e=b.GetInstanceVariableValue(a):"plugin"===d?e=b.GetPropertyValueByIndex(a):void 0,e!==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._id="",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()}GetInstance(){const a=this.GetTracks();if(a&&a.length){const b=a[0];if(b){const a=b.GetInstance();return b.IsInstanceValid()?a:null}}}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)}SetId(a){this._id=a}GetId(){return this._id}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)}}Tick(){const a=this.GetInstance(),b=this.GetRuntime().GetDt(a);super.Tick(b,1)}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.SetId(a.id),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,b.sourceArgs);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}RemoveInstances(a){const b=this._stack;for(let c=0,d=b.length;cc=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}GetDisplayNumber(){return this._displayNumber}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){const b=this.GetWorldInfo();a=2===a?!b.IsVisible():0!=a;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){xa.setFromRgbValue(a);const b=this.GetWorldInfo();b.GetUnpremultipliedColor().equalsIgnoringAlpha(xa)||(b.SetUnpremultipliedColor(xa),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){xa.setFromRgbValue(c);const a=f[b];if(xa.equalsIgnoringAlpha(a))return;a.copyRgb(xa)}else{if("percent"===g&&(c/=100),f[b]===c)return;f[b]=c}e.IsEffectIndexActive(a)&&this._runtime.UpdateRender()}}}function ca(a,b,c){return C3.compare(this.GetInstance().GetInstanceVariableValue(a),b,c)}function da(a){return!!this.GetInstance().GetInstanceVariableValue(a)}function ea(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 fa(a){return this._runtime.GetCurrentCondition().IsInverted()?ha(this,a):ga(this,a)}function ga(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 ha(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)}ScheduleTriggers(a){return this._runtime.ScheduleTriggers(a)}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(){}SetPropertyOffsetValueByIndex(){}SetPropertyColorOffsetValueByIndex(){}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(){}SetPropertyOffsetValueByIndex(){}SetPropertyColorOffsetValueByIndex(){}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._instVarNames=null,a.IsPreview()&&(this._instVarNames=c[3].map((a)=>a[2])),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)}_GetAllInstanceVariableNames(){return this._instVarNames}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._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){C3.shallowAssignArray(this._instVarValues,a)}_LoadDefaultInstanceVariables(){const a=[0,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("boolean"==typeof d)c[a]="boolean"==typeof b?b:!!b;else if("string"==typeof d)c[a]="string"==typeof b?b:b.toString();else throw new Error("unknown instance variable type")}SetInstanceVariableOffset(a,b){if(0!==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("boolean"==typeof d)throw new Error("can not set offset of boolean variable");else if("string"==typeof d)throw new Error("can not set offset of string variable");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.SetZIndicesChanged(),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.Rect),c=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.SetZElevation(a[2]),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){if(a=+a,this._zElevation!==a){this._zElevation=a,this._UpdateWebGLStateGroup();const b=this.GetLayer();0!==this._zElevation&&b._SetAnyInstanceZElevated(),b.SetZIndicesChanged()}}GetZElevation(){return this._zElevation}GetTotalZElevation(){return this.GetLayer().GetZElevation()+this.GetZElevation()}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(){const a=this._runtime.GetWebGLRenderer();this._stateGroup&&a.ReleaseStateGroup(this._stateGroup),this._stateGroup=a.AcquireStateGroup(a.GetTextureFillShaderProgram()||"",this._srcBlend,this._destBlend,this._colorPremultiplied,this._zElevation)}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,0!==this.GetZElevation()&&this._layer._SetAnyInstanceZElevated()}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(c)}_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}IsInViewport(a){return 0===this._zElevation?a.intersectsRect(this.GetBoundingBox()):this._IsInViewport_ZElevated()}_IsInViewport_ZElevated(){const a=this.GetLayer(),c=this.GetTotalZElevation();return!(c>=a.GetCameraZ())&&(a.GetViewportForZ(c,b),b.intersectsRect(this.GetBoundingBox()))}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,{maxWebGLVersion:a["maxWebGLVersion"],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)){const d=C3.Gfx.WebGLShaderProgram.GetDefaultVertexShaderSource(this._webglRenderer.Is3D());a.push(this._webglRenderer.CreateShaderProgram(c,d,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,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").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._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._webglRenderer.Start(),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;a.Start(),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._instancesToReleaseAffectedObjectClasses=new Set,this._objectReferenceTable=[],this._canvasManager=null,this._sampling="trilinear",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._scheduleTriggersThrottle=new C3.PromiseThrottle(1),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._didRequestDeviceOrientationEvent=!1,this._didRequestDeviceMotionEvent=!1,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.AddDOMComponentMessageHandler("runtime","get-remote-preview-status-info",()=>this._GetRemotePreviewStatusInfo()),this._dispatcher.addEventListener("window-blur",(a)=>this._OnWindowBlur(a)),this._dispatcher.addEventListener("window-focus",()=>this._OnWindowFocus()),this._timelineManager.AddRuntimeListeners()}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()&&(await 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._sampling=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._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"nearest"!==this.GetSampling()}GetSampling(){return this._sampling}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(),this._instancesToReleaseAffectedObjectClasses.add(e),0===e.GetInstances().length&&e._SetAnyInstanceParallaxed(!1);for(const n of e.GetFamilies())C3.arrayRemoveAllInSet(n.GetInstances(),a),n._SetIIDsStale(),this._instancesToReleaseAffectedObjectClasses.add(n);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);const n=this.IsSuspended();if(!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()||-1!==this._rafId||(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.Start(),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)}ScheduleTriggers(e){return this._scheduleTriggersThrottle.Add(e)}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)}}RequestDeviceOrientationEvent(){this._didRequestDeviceOrientationEvent||(this._didRequestDeviceOrientationEvent=!0,this.PostComponentMessageToDOM("runtime","enable-device-orientation"))}RequestDeviceMotionEvent(){this._didRequestDeviceMotionEvent||(this._didRequestDeviceMotionEvent=!0,this.PostComponentMessageToDOM("runtime","enable-device-motion"))}Random(){return this._randomNumberCallback()}SetRandomNumberGeneratorCallback(e){this._randomNumberCallback=e}_GetRemotePreviewStatusInfo(){return{"fps":this.GetFPS(),"cpu":this.GetMainThreadTime(),"gpu":this.GetGPUUtilisation(),"layout":this.GetMainRunningLayout()?this.GetMainRunningLayout().GetName():"","renderer":this.GetWebGLRenderer().GetUnmaskedRenderer()}}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},layerzelevation(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetZElevation():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()},currenteventsheetname(){return this._runtime.GetCurrentEvent().GetEventSheet().GetName()},currenteventnumber(){return this._runtime.GetCurrentEvent().GetDisplayNumber()}}; + +"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={sampling:this._runtime.GetSampling()};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()),h.SetBboxChanged(),(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(s,a.instance)));const t=l.GetCurrentSol(),u=e.GetCurrentSol(),v=t.GetInstances();let w=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(),{sampling:this._runtime.GetSampling()}),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.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(),c=b.GetRenderScale()*b.Get2DScaleFactorToZ(a.GetTotalZElevation());this._webglText.SetSize(a.GetWidth(),a.GetHeight(),c)}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()&&0===c.GetTotalZElevation()){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();}}SetPropertyOffsetValueByIndex(a,b){0!==b&&(3===a?(this._ptSize+=b,this._UpdateTextSettings()):4===a?(this._lineHeightOffset+=b,this._UpdateTextSettings()):void 0)}SetPropertyColorOffsetValueByIndex(a,c,d,e){(0!==c||0!==d||0!==e)&&(7===a?(this._color.addRgb(c,d,e),this._UpdateTextSettings()):void 0)}_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.Plugins.Tilemap=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}},C3.Plugins.Tilemap.TILE_FLIPPED_HORIZONTAL=-2147483648,C3.Plugins.Tilemap.TILE_FLIPPED_VERTICAL=1073741824,C3.Plugins.Tilemap.TILE_FLIPPED_DIAGONAL=536870912,C3.Plugins.Tilemap.TILE_FLAGS_MASK=3758096384,C3.Plugins.Tilemap.TILE_ID_MASK=536870911; + +"use strict";{const a=C3.Plugins.Tilemap.TILE_FLIPPED_HORIZONTAL,b=C3.Plugins.Tilemap.TILE_FLIPPED_VERTICAL,c=C3.Plugins.Tilemap.TILE_FLIPPED_DIAGONAL,d=C3.Plugins.Tilemap.TILE_ID_MASK;C3.Plugins.Tilemap.Type=class extends C3.SDKTypeBase{constructor(a){super(a),this._tilePolys=[],this._areTilePolysCached=!1}Release(){super.Release()}OnCreate(){this.GetImageInfo().LoadAsset(this._runtime)}LoadTextures(a){return this.GetImageInfo().LoadStaticTexture(a,{sampling:this._runtime.GetSampling()})}ReleaseTextures(){this.GetImageInfo().ReleaseTexture()}LoadTilePolyData(a){for(const b of a)b?this._tilePolys.push({poly:b,flipmap:[[[null,null],[null,null]],[[null,null],[null,null]]]}):this._tilePolys.push(null)}_ForceCacheOfTileCollisionPolys(a,b){this._areTilePolysCached=!1,this._MaybeCacheTileCollisionPolys(a,b)}_MaybeCacheTileCollisionPolys(a,b){if(!this._areTilePolysCached){this._areTilePolysCached=!0;for(let c=0,d=this._tilePolys.length;ca||a>=this._tilePolys.length)){const g=this._tilePolys[a];if(g){const a=C3.New(C3.CollisionPoly,g.poly);a.transform(b,c,0),f&&a.diag(),d&&a.mirror(b/2),e&&a.flip(c/2),g.flipmap[d?1:0][e?1:0][f?1:0]=null,g.flipmap[d?1:0][e?1:0][f?1:0]=a}}}GetTilePoly(e){if(-1===e)return null;const f=e&d;if(0>f||f>=this._tilePolys.length)return null;const g=this._tilePolys[f];if(!g)return null;const h=e&a?1:0,i=e&b?1:0,j=e&c?1:0;return g.flipmap[h][i][j]}}} + +"use strict";{function a(a){const e=[],f=a.split(",");for(let g=0,h=f.length;gthis._mapHeight&&(this._mapHeight=f,g=c(this._mapHeight/this._cellHeight)),e>this._mapWidth&&(this._mapWidth=e,h=c(this._mapWidth/this._cellWidth)),this._SetAllQuadMapChanged(),this._SetPhysicsChanged(),this._runtime.UpdateRender());const j=this._tileCells;if(j.length=this._mapWidth||0>=this._mapHeight)return f;let g=1,h=this.GetTileAt(0,0);const i=this.GetWorldInfo(),j=a(i.GetWidth()/this._tileWidth),k=a(i.GetHeight()/this._tileHeight);let l=-1,m=!1,n=!1,o=!1;for(let a=0;aa||0>b)return null;const d=c(b/this._cellHeight);if(d>=this._tileCells.length)return null;const e=this._tileCells[d],f=c(a/this._cellWidth);return f>=e.length?null:e[f]}GetCellAtIndex(a,b){if(0>a||0>b||b>=this._tileCells.length)return null;const c=this._tileCells[b];return a>=c.length?null:c[a]}GetTileAt(a,b){var c=Math.floor;if(a=c(a),b=c(b),0>a||0>b||a>=this._mapWidth||b>=this._mapHeight)return-1;const d=this.GetCellAt(a,b);return d?d.GetTilesArr()[b%this._cellHeight][a%this._cellWidth]:-1}SetTileAt(a,b,c){var d=Math.floor;if(a=d(a),b=d(b),!(0>a||0>b||a>=this._mapWidth||b>=this._mapHeight)){const d=this.GetCellAt(a,b);d&&d.SetTileAt(a%this._cellWidth,b%this._cellHeight,c)}}WorldToCellX(a){return Math.floor((a-this.GetWorldInfo().GetX())/(this._cellWidth*this._tileWidth))}WorldToCellY(a){return Math.floor((a-this.GetWorldInfo().GetY())/(this._cellHeight*this._tileHeight))}WorldToTileX(a){return Math.floor((a-this.GetWorldInfo().GetX())/this._tileWidth)}WorldToTileY(a){return Math.floor((a-this.GetWorldInfo().GetY())/this._tileHeight)}GetMapWidth(){return this._mapWidth}GetMapHeight(){return this._mapHeight}GetTileWidth(){return this._tileWidth}GetTileHeight(){return this._tileHeight}GetCellWidth(){return this._cellWidth}GetCellHeight(){return this._cellHeight}GetCollisionRectCandidates(a,b){const c=this.WorldToCellX(a.getLeft()),d=this.WorldToCellY(a.getTop()),e=this.WorldToCellX(a.getRight()),f=this.WorldToCellY(a.getBottom());for(let g=c;g<=e;++g)for(let a=d;a<=f;++a){const c=this.GetCellAtIndex(g,a);c&&(c.MaybeBuildQuadMap(),C3.appendArray(b,c.GetCollisionRects()))}}TestPointOverlapTile(a,b){var c=Math.floor;const d=this.WorldToTileX(a),e=this.WorldToTileY(b),f=this.GetTileAt(d,e);if(-1===f)return!1;const g=this._sdkType.GetTilePoly(f);if(!g)return!0;const h=this.GetWorldInfo(),i=c((a-h.GetX())/this._tileWidth)*this._tileWidth+h.GetX(),j=c((b-h.GetY())/this._tileHeight)*this._tileHeight+h.GetY();return a-=i,b-=j,g.containsPoint(a,b)}GetAllCollisionRects(a){const b=this._tileCells;for(let c=0,d=b.length;c{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(),{sampling:this._runtime.GetSampling()});return d?this.WasReleased()?void c.Release():void(this._ReleaseOwnImage(),this._ownImageInfo=c,b.UpdateRender(),this._tileTexQuads.clear(),this._SetAllQuadMapChanged(),await this.TriggerAsync(C3.Plugins.Tilemap.Cnds.OnURLLoaded)):void 0})()}}} + +"use strict";{const a=C3.Plugins.Tilemap.TILE_ID_MASK;C3.Plugins.Tilemap.Exps={TileAt(b,c){const d=this.GetTileAt(b,c);return-1===d?-1:d&a},PositionToTileX(a){return this.WorldToTileX(a)},PositionToTileY(a){return this.WorldToTileY(a)},TileToPositionX(a){return a*this._tileWidth+this.GetWorldInfo().GetX()+this._tileWidth/2},TileToPositionY(a){return a*this._tileHeight+this.GetWorldInfo().GetY()+this._tileHeight/2},SnapX(a){const b=this.GetWorldInfo().GetX();return Math.floor((a-b)/this._tileWidth)*this._tileWidth+b+this._tileWidth/2},SnapY(a){const b=this.GetWorldInfo().GetY();return Math.floor((a-b)/this._tileHeight)*this._tileHeight+b+this._tileHeight/2},TilesJSON(){return this.GetAsJsonString()}}} + +"use strict";{const a=C3.Plugins.Tilemap.TILE_FLIPPED_HORIZONTAL,b=C3.Plugins.Tilemap.TILE_FLIPPED_VERTICAL,c=C3.Plugins.Tilemap.TILE_FLIPPED_DIAGONAL,d=C3.Plugins.Tilemap.TILE_ID_MASK,e=C3.New(C3.Rect),f=C3.New(C3.Quad);C3.Plugins.Tilemap.TileQuad=class extends C3.DefendedBase{constructor(){super(),this._id=-1,this._tileId=-1,this._isHorizFlip=!1,this._isVertFlip=!1,this._isDiagFlip=!1,this._rc=C3.New(C3.Rect),this._uv=null}Update(e,f,g,h,i,j,k,l){this._id=e,this._tileId=e&d,this._isHorizFlip=0!=(e&a),this._isVertFlip=0!=(e&b),this._isDiagFlip=0!=(e&c),this._rc.setWH(h*f+j,i*g+k,f,g),this._uv=l.GetTileUvQuad(this._id)}Draw(a,b,c,d){e.copy(this._rc),e.offset(c,d);e.intersectsRect(b)&&(f.setFromRect(e),a.Quad4(f,this._uv))}}} + +"use strict";C3.Plugins.Tilemap.TileCollisionRect=class extends C3.DefendedBase{constructor(){super(),this._id=-1,this._poly=null,this._rc=C3.New(C3.Rect)}Update(a,b,c,d,e,f,g,h){this._id=a,this._poly=b,this._rc.setWH(e*c+g,f*d+h,c,d)}ExtendRight(a){this._rc.setRight(this._rc.getRight()+a)}GetTileId(){return this._id}HasPoly(){return!!this._poly}GetPoly(){return this._poly}GetRect(){return this._rc}}; + +"use strict";{const a=C3.Plugins.Tilemap.TILE_ID_MASK;C3.Plugins.Tilemap.TileCell=class extends C3.DefendedBase{constructor(a,b,c){super();const d=a.GetCellWidth(),e=a.GetCellHeight();this._sdkInst=a,this._x=b,this._y=c,this._left=this._x*d*a.GetTileWidth(),this._top=this._y*e*a.GetTileHeight(),this._tiles=[],this._quads=[],this._collisionRects=[],this._isQuadMapValid=!1;for(let f=0;fb&&C3.truncateArray(c,b);for(let b,d=0,e=c.length;d=f||0>=g)return;let l=a(c.GetMapWidth(),b(e.GetWidth()/f)),m=a(c.GetMapHeight(),b(e.GetHeight()/g));l-=j/f,m-=k/g,l>h&&(l=h),m>i&&(m=i);const n=this._tiles,o=this._quads;let p=0;for(let a=0;ac.getBottom()||d.getRight()>c.getRight()||d.getLeft()>c.getLeft()||a.HasPoly()||d.getLeft()!==c.getLeft()||d.getRight()!==c.getRight()||(s.splice(b,1),--t,c.setBottom(c.getBottom()+g),--b)}}this._isQuadMapValid=!0}SetTileAt(a,b,c){this._tiles[b][a]===c||(this._tiles[b][a]=c,this._isQuadMapValid=!1,this._sdkInst.SetTileChanged())}GetTilesArr(){return this._tiles}GetCollisionRects(){return this._collisionRects}Draw(a,b,c,d){const e=this._sdkInst,f=this._quads;for(let g=0,h=f.length;gthis._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.Behaviors.solid=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.solid.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{const a=new Set;C3.Behaviors.solid.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,b){super(a),this.SetEnabled(!0),b&&(this.SetEnabled(b[0]),this.SetTags(b[1]))}Release(){super.Release()}SetEnabled(a){this._inst.GetSavedDataMap().set("solidEnabled",!!a)}IsEnabled(){return this._inst.GetSavedDataMap().get("solidEnabled")}SetTags(a){const b=this._inst.GetSavedDataMap();if(!a.trim())return void b.delete("solidTags");let c=b.get("solidTags");c||(c=new Set,b.set("solidTags",c)),c.clear();for(const b of a.split(" "))b&&c.add(b.toLowerCase())}GetTags(){return this._inst.GetSavedDataMap().get("solidTags")||a}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.solid.properties.enabled.name",value:this.IsEnabled(),onedit:(a)=>this.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.scrollto=class extends C3.SDKBehaviorBase{constructor(a){super(a),this._shakeMag=0,this._shakeStart=0,this._shakeEnd=0,this._shakeMode=0}Release(){super.Release()}SetShakeMagnitude(a){this._shakeMag=a}GetShakeMagnitude(){return this._shakeMag}SetShakeStart(a){this._shakeStart=a}GetShakeStart(){return this._shakeStart}SetShakeEnd(a){this._shakeEnd=a}GetShakeEnd(){return this._shakeEnd}SetShakeMode(a){this._shakeMode=a}GetShakeMode(){return this._shakeMode}}; + +"use strict";C3.Behaviors.scrollto.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{C3.Behaviors.scrollto.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,b){super(a),this._isEnabled=!0,b&&(this._isEnabled=b[0]),this._isEnabled&&this._StartTicking2()}Release(){super.Release()}SaveToJson(){const a=this.GetBehavior();return{"e":this._isEnabled,"smg":a.GetShakeMagnitude(),"ss":a.GetShakeStart(),"se":a.GetShakeEnd(),"smd":a.GetShakeMode()}}LoadFromJson(a){const b=this.GetBehavior();b.SetShakeMagnitude(a["smg"]),b.SetShakeStart(a["ss"]),b.SetShakeEnd(a["se"]),b.SetShakeMode(a["smd"]),this._isEnabled=a["e"],this._isEnabled?this._StartTicking2():this._StopTicking2()}IsEnabled(){return this._isEnabled}Tick2(){if(!this.IsEnabled())return;const a=this._runtime.GetDt(this._inst),b=this.GetBehavior(),c=b.GetInstances();let d=0,e=0,f=0;for(const a of c){const b=a.GetBehaviorInstanceFromCtor(C3.Behaviors.scrollto);if(!b||!b.GetSdkInstance().IsEnabled())continue;const c=a.GetWorldInfo();d+=c.GetX(),e+=c.GetY(),++f}const g=this._inst.GetWorldInfo().GetLayout(),h=this._runtime.GetGameTime();let i=0,j=0;if(h>=b.GetShakeStart()&&hthis._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 1, +() => 0, +() => 2, +() => "Open", +() => 3, +() => 10, +() => "right", +() => "left", +() => "swing", +() => "Walk" + ]; +} + + diff --git a/scripts/dispatchWorker.js b/scripts/dispatchWorker.js new file mode 100644 index 0000000..8f92f7b --- /dev/null +++ b/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/scripts/jobWorker.js b/scripts/jobWorker.js new file mode 100644 index 0000000..936a7ef --- /dev/null +++ b/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/scripts/main.js b/scripts/main.js new file mode 100644 index 0000000..0299089 --- /dev/null +++ b/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)})}async function b(a){const b=await c(a),d=new TextDecoder("utf-8");return d.decode(b)}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(){if(!f)return o;const a=document.createElement("canvas"),b=a.getContext("webgl2",{"alpha":!0,"depth":!1,"antialias":!1,"failIfMajorPerformanceCaveat":!0});if(!b)return o;const c=b.getExtension("WEBGL_debug_renderer_info");if(!c)return o;const d=b.getParameter(c["UNMASKED_RENDERER_WEBGL"]);for(const a of p)if(d.toLowerCase().includes(a.toLowerCase()))return console.warn(`[Construct 3] This device appears to support WebGL 2, but it is disabled due to GPU driver bugs that make it unusable. (Renderer '${d}' matches blacklist entry '${a}'.) See crbug.com/934823`),1;return o}const e=/(iphone|ipod|ipad)/i.test(navigator.userAgent),f=/android/i.test(navigator.userAgent);let g=new Audio;const h={"audio/webm; codecs=opus":!!g.canPlayType("audio/webm; codecs=opus"),"audio/ogg; codecs=opus":!!g.canPlayType("audio/ogg; codecs=opus"),"audio/webm; codecs=vorbis":!!g.canPlayType("audio/webm; codecs=vorbis"),"audio/ogg; codecs=vorbis":!!g.canPlayType("audio/ogg; codecs=vorbis"),"audio/mp4":!!g.canPlayType("audio/mp4"),"audio/mpeg":!!g.canPlayType("audio/mpeg")};g=null;const i=[];let j=0;const k=[],l=new Map,m=new Map;let n=0;const o=2,p=["Mali"];window.RuntimeInterface=class f{constructor(a){this._useWorker=a.useWorker,this._messageChannelPort=null,this._baseUrl="",this._scriptFolder=a.scriptFolder,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,"cordova"===this._exportType&&this._useWorker&&(console.warn("[C3 runtime] Worker mode is enabled and supported, but is disabled in Cordova due to crbug.com/939775. Reverting to DOM mode."),this._useWorker=!1),this._transferablesBroken=!1,this._localFileBlobs=null,("html5"===this._exportType||"playable-ad"===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("playable-ad"===this._exportType){this._localFileBlobs=self["c3_base64files"],await this._ConvertDataUrisToBlobs();for(let b=0,c=a.engineScripts.length;bthis["_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.endsWith("/workerMain.js")&&this._workerScriptBlobURLs.hasOwnProperty("workerMain.js")?this._workerScriptBlobURLs["workerMain.js"]:"playable-ad"===this._exportType&&this._localFileBlobs.hasOwnProperty(a.toLowerCase())?URL.createObjectURL(this._localFileBlobs[a.toLowerCase()]):a}async CreateWorker(a,b,c){if(a.startsWith("blob:"))return new Worker(a,c);if(this.IsWKWebView()){const b=await this.CordovaFetchLocalFileAsArrayBuffer(this._scriptFolder+a),d=new Blob([b],{type:"application/javascript"});return new Worker(URL.createObjectURL(d),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(),"maxWebGLVersion":d(),"projectData":a.projectData,"previewImageBlobs":window["cr_previewImageBlobs"]||this._localFileBlobs,"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),window["c3canvas"]=this._canvas,this._domHandlers=k.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=n++,g=new Promise((a,b)=>{m.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=l.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=m.get(b);c?e.resolve(d):e.reject(d),m.delete(b)}AddRuntimeComponentMessageHandler(a,b,c){let d=l.get(a);if(d||(d=new Map,l.set(a,d)),d.has(b))throw new Error(`[DOM] Component '${a}' already has handler '${b}'`);d.set(b,c)}static AddDOMHandlerClass(a){if(k.includes(a))throw new Error("DOM handler already added");k.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"])}async GetRemotePreviewStatusInfo(){return await this.PostToRuntimeComponentAsync("runtime","get-remote-preview-status-info")}_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!!h[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"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(i.length&&!(j>=8)){j++;const a=i.shift();this._CordovaDoFetchLocalFileAsAsArrayBuffer(a.filename,a.successCallback,a.errorCallback)}}CordovaFetchLocalFileAsArrayBuffer(a){return new Promise((b,c)=>{i.push({filename:a,successCallback:(a)=>{j--,this._CordovaMaybeStartNextArrayBufferRead(),b(a)},errorCallback:(a)=>{j--,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 _ConvertDataUrisToBlobs(){const a=[];for(const[b,c]of Object.entries(this._localFileBlobs))a.push(this._ConvertDataUriToBlobs(b,c));await Promise.all(a)}async _ConvertDataUriToBlobs(a,b){if("object"==typeof b)this._localFileBlobs[a]=new Blob([b["str"]],{"type":b["type"]});else{const c=await fetch(b),d=await c.blob();this._localFileBlobs[a]=d}}_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(){try{return window.parent&&window.parent.document.hasFocus()}catch(a){return!1}}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._attachedDeviceOrientationEvent=!1,this._attachedDeviceMotionEvent=!1,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)),a.AddRuntimeComponentMessageHandler("runtime","enable-device-orientation",()=>this._AttachDeviceOrientationEvent()),a.AddRuntimeComponentMessageHandler("runtime","enable-device-motion",()=>this._AttachDeviceMotionEvent());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 document.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)));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)}_AttachDeviceOrientationEvent(){this._attachedDeviceOrientationEvent||(this._attachedDeviceOrientationEvent=!0,window.addEventListener("deviceorientation",(a)=>this._OnDeviceOrientation(a)))}_AttachDeviceMotionEvent(){this._attachedDeviceMotionEvent||(this._attachedDeviceMotionEvent=!0,window.addEventListener("devicemotion",(a)=>this._OnDeviceMotion(a)))}_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?a.substr(0,a.lastIndexOf("/")+1):b.GetBaseURL(),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"],scriptFolder:"scripts/",exportType:"html5"})} \ No newline at end of file diff --git a/scripts/offlineClient.js b/scripts/offlineClient.js new file mode 100644 index 0000000..d8c3274 --- /dev/null +++ b/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/scripts/register-sw.js b/scripts/register-sw.js new file mode 100644 index 0000000..aeb70f5 --- /dev/null +++ b/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/scripts/supportCheck.js b/scripts/supportCheck.js new file mode 100644 index 0000000..0037463 --- /dev/null +++ b/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. ",h=navigator.userAgent;g+=/android/i.test(h)?"

On Android, fix this by making sure the
Android System Webview app has updates enabled and is up-to-date.":/iphone|ipad|ipod/i.test(h)?"

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.":(/msie/i.test(h)||/trident/i.test(h))&&!/edge\//i.test(h)?"

Note: Internet Explorer is not supported. Try using Chrome or Firefox instead.":"Try installing any available software updates. Alternatively try on a different device.",g+="

Missing features: "+c.join(", ")+"
User agent: "+navigator.userAgent+"
",f.innerHTML=g,d.appendChild(f)}})(); \ No newline at end of file diff --git a/scripts/workerMain.js b/scripts/workerMain.js new file mode 100644 index 0000000..d11dbb2 --- /dev/null +++ b/scripts/workerMain.js @@ -0,0 +1 @@ +"use strict";{async function a(a){if(b)throw new Error("already initialised");b=!0;const d=a["baseUrl"];self.devicePixelRatio=a["devicePixelRatio"];const e=a["workerDependencyScripts"].map((a)=>{let b=a;return b=a instanceof Blob?URL.createObjectURL(a):new URL(b,d).toString(),b}),f=a["engineScripts"].map((a)=>new URL(a,d).toString());importScripts(...[...e,...f]),c=self["C3_CreateRuntime"](a),await self["C3_InitRuntime"](c,a)}let b=!1,c=null;self.addEventListener("message",(b)=>{const c=b.data,d=c["type"];if("init-runtime"===d)a(c);else throw new Error(`unknown message '${d}'`)})} \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..0916f8b --- /dev/null +++ b/style.css @@ -0,0 +1,39 @@ +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; +} + +#notSupportedMessage em { + color: #888; +} + + diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..4366997 --- /dev/null +++ b/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